本文最后更新于 2018年12月15日 19:57 可能会因为没有更新而失效。如已失效或需要修正,请留言!

前天晚上学长发我的这套cms,研究了下挺有意思,记录下。顺便参考原文https://www.cnblogs.com/ashe666/archive/2018/12/10/10094706.html

普通注入一枚

漏洞文件:\scms\bbs\bbs.php

这个注入比较简单,首先需要注册登录拿到session,然后$B_sort无过滤直接从post中获取,虽然select查询用intval过滤了,但是后面的insert语句并没有过滤,构成注入。

payload

S-CMS企建v3二次SQL注入-ChaBug安全

二次注入

先看一下漏洞触发点:

简单说一下逻辑,第一步执行的sql语句是查询帖子的详细内容($id帖子id)

然后把查询到的内容各自赋给一个变量

到后面判断$action=="reply",进入回复帖子功能处

可以看到$B_contentx=$_POST["B_content"]无过滤,这里会触发储存xss漏洞。然而这个不是重点,继续看执行的insert语句,发现$B_title等变量都拼接了进来,没有sql过滤,而这些变量是从数据库查询出来的(帖子的标题等),然而回过头去看上面的sql注入,不就是发帖功能的地方么。所以这些变量可控,导致二次sql注入。

漏洞触发流程:

首先我们去发帖B_title的值是我们的payload,还有其他的值

B_title=',(select user()),'',1,999,1)%23&B_content=aaaaaaaaaaaa&B_sort=1

然后我们去获取帖子id,这个没有特别好的办法只能去摸索着找,可以先根据楼层判断一共有多少帖子,然后一点一点的往后找,根据内容判断是否是我们发布的帖子

 

获取到帖子后去触发漏洞

 

这里我说一下payload为什么是这样的,这样构造完全是为了达到回显注入,因为后面打印回复内容的时候执行的sql注入是

 

而B_sub可控(在Insert的时候插入的),这样我们就能直接获取回显。

漏洞演示:

Payload1

S-CMS企建v3二次SQL注入-ChaBug安全

Payload2

获取帖子id

http://127.0.0.1//scms/bbs/item.php?id=30

S-CMS企建v3二次SQL注入-ChaBug安全

Payload3

S-CMS企建v3二次SQL注入-ChaBug安全

执行完成!最后我们就可以去访问我们的回复然后拿到回显。

http://127.0.0.1/scms/bbs/item.php?id=666

这次id参数指向的是我们填的B_sub值

S-CMS企建v3二次SQL注入-ChaBug安全
喜欢这篇文章的话就点一点喜欢吧!