php代码审计-下载站系统Simple Down v5.5.1 xss跨站漏洞分析

author:zzzhhh

一、        跨站漏洞

利用方法1,直接在搜索框处搜索<script>alert(/xss/)</script>//',再次刷新,跨站语句将被带入数据库,并直接在热门搜索处输出。

漏洞产生原因,因为未对输入变量进行编码,跨站语句未经转换直接存储入数据库中。见图1,


图1

二、代码分析
先看index.php  53-54行代码是这么写的,javascript获取ID为search的input表单传参到tools.php文件中的seacher变量中。。。

        <input  type="text" id="search" maxlength="64" style="400px; height:26px;" placeholder="点击搜索按钮查看结果" value=""/>
        <button type="button" style="80px;height:35px" onClick="javascript:send_request('tools.php?seacher='+document.getElementById('search').value);">搜索</button>  
       。。。。省略N行
      //63-65行代码
       <?php echo $row['SEACHERDATA']; ?> //输出变量SEACHERDATA
            <span class='hover-animate-left'></span><span class='hover-animate-right'></span></a>  
      <?php } ?>

那我们根据seacher,SEACHERDATA两个变量在 ools.php文件中进行搜索后 ,关键代码34-61行代码,好吧,我把整段选择结构的代码发过来吧

if (empty($seacher))      
{
        $result=mysql_query("SELECT * FROM HBDX_BLUE ".$show);    
        $num_max=mysql_num_rows($result); 

        $result=mysql_query("SELECT * FROM HBDX_BLUE ".$show." ORDER BY TOP ".$hot." LIMIT $startCount,$perNumber"); 
}
else
{        
        $datetime = date("Y-m-d H:i:s");
        $seacherresult = mysql_query("SELECT * FROM HBDX_SEACHER WHERE SEACHERDATA = '".$seacher."'"); /*查询SEACHERDATA表内的内容输出到seacherresult变量*/
        $seachernum = mysql_num_rows($seacherresult);  /*统计搜索次数*/
        if($seachernum == 0)
        {
                mysql_query("INSERT INTO HBDX_SEACHER (SEACHERDATA,SEACHERNUM,DATETIME) VALUES ('$seacher',1,'$datetime')");  /*查询热门搜索关键词次数为0后,将该关键字写入表SEACHERDATA内*/
        }
        else
        {
                $row = mysql_fetch_array($seacherresult);  /*遍历seacherresult变量结果赋值到row中*/
                mysql_query("UPDATE HBDX_SEACHER SET SEACHERNUM = '".($row['SEACHERNUM'] + 1)."' WHERE SEACHERDATA = '".$seacher."'");
        }

        $result=mysql_query("SELECT * FROM HBDX_BLUE WHERE FILETITLE LIKE '%".$seacher."%'"); 
        $num_max=mysql_num_rows($result); 

        $result=mysql_query("SELECT * FROM HBDX_BLUE WHERE FILETITLE LIKE '%".$seacher."%' OR FILETAG LIKE '%".$seacher."%' ORDER BY TOP,ID DESC LIMIT $startCount,$perNumber"); 
        $num=mysql_num_rows($result); 
}

 http://www.wooyun.org/bugs/wooyun-2010-037204  
wooyun 这篇关于此系统的漏洞提交迟迟不公开。小弟打算开个下载站,选择了Simple Down v5.5.1这个系统,无奈只能自己亲自动手,才疏学浅,哪位兄弟可随我一同继续深入分析此系统漏洞?

原文地址:https://www.cnblogs.com/17bdw/p/3466767.html