HDwiki二次注入案例分享

近期看到网上公布较多hdwiki最新版的安全漏洞,这里以我自己发现的二次注入漏洞进行分享。
0×01 白盒审计
源码信息:HDWiki-v6.0UTF8-20170209
问题文件: hdwikicontrolcomment.php
漏洞类型:SQL注入
首先进行安装之后主界面如下;

直接看存在问题的文件,路径为hdwikicontrolcomment.php
以及具体页面为词条评论的地方;

首先看下写评价部分代码;

这里的$comment参数就是我们提的评论,可以看到使用过滤函数进行安全处理,还有在/hdwiki/model/hdwiki.class.php文件里发现使用全局转义处理;

所以这里不存在问题,我们看下有没有会再次利用这个评论$comment参数,
还是在comment.php这个文件里,下面看到doreport()这个函数;

这个是用来对评论进行举报的,可以看到这段代码会从数据库取出对应评论之后和举报原因一并重新执行数据库操作;具体代码部分为;

这里的$comment[‘comment’]为评论部分,$report为举报原因合并进入send_ownmessage(),也就是二次注入了。
0×02 漏洞利用
首先看下send_ownmessage()函数为;

具体数据库操作语句为;
"INSERT INTO".DB_TABLEPRE."pms(`from`,`fromid`,`drafts`,`toid`,`to`,`subject`,`message`,`time`,`new`) VALUES  ('".$sendarray['user']['username']."','".$sendarray['user']['uid']."','".$isdraft."','".$userinfo[$i]['uid']."','".$userinfo[$i]['username']."','".$sendarray['subject']."','".$sendarray['content']."','".$this->base->time."',1)"
可以看到是INSERT语句,还有VALUES结尾有1这个常量,所以具体payload为;
Payload=4444444444’,(1=sleep(6)),1)#
首先对任意词条进行评论,输入以上payload;

之后点击下面的举报,理由任意填写;

之后提交,6秒之后将会提示举报成功,burp截图为;

显示为7秒,其中1秒是网站加载需要的时间,成功二次注入了。