这是这个cms系列的最后一篇文章。
在user.php文件,用户发布新闻功能,发现content没有使用htmlspecialchars()函数,而是filter_data(),跟踪看一下。
在/uploads/include/common.fun.php找到函数定义代码,只过滤了script,iframe,frame,meta,link等,这里可以用a,img等标签绕过
利用漏洞的时候发现前端还会过滤一些敏感字符,所以不直接提交攻击代码,需要抓包修改payload。
点击文章之后查看没有弹窗,为啥不能用。。,反复看了还是没有看到过滤的地方,猜测是前端过滤了,我们抓包看看。
imgsrc="image1604205156(1).jpg"alt="1604205156(1)"style="zoom:80%;"/
果然是前端替换了敏感字符,修改重放即可,在文件user.php中,我们可以看到编辑个人资料的地方,存在存储型xss漏洞,因为只有$address进行了html转译处理,但是其它的变量进行的长度的限制。测试了一下,只有在变量$email和$msn处导致xss漏洞。
只需要在编辑个人资料的地方,将输入框中填入payload<script>alert(1)</script>
,这段payload会存储到数据库当中,然后再从数据库当中取出来再输出。
这个文件基本对user.php没有做过滤,跟总接受的参数发现进入user.php中的时候,几乎是同时获取$act和$from的值,然后判断$act的值,来进行相应的操作。但是当$act的值为'reg'时,也就是注册的时候,他会将$from的值渲染到浏览器上。这也就导致了反射型XSS。
template_assign这个函数的作用是将第二个参数的值赋值给第一个数组里面键。
网站自动的防护会对参数进行一层addslashes的过滤,但是不妨碍我们进行xss攻击。
总结
审计出来全部漏洞:
sql注入
宽字节注入
header头注入
header头注入2
user.php任意文件读取
文件包含漏洞
任意文件删除
个人资料存储xss
发布新闻存储xss
注册反射xss
总结一下网站形成这么多漏洞的原因,比如在xss漏洞的时候有的地方做了防护,有的地方没有做防护,包括网站自己的防护addslashes并没有过滤server,所以导致了俩处的header头的注入。网站对文件的处理最好写死或者做好黑白名单的限制,总结审计思路,seay源代码审计误报较高,只能用于定位敏感变量,对功能点比较多的文件进行通读找到漏洞的几率更大一些,假设说某个函数存在漏洞那么可以全局再搜索一下这个函数看看有没有其他的文件调用,发现其他的漏洞点。
参考链接
https://www.cnblogs.com/BOHB-yunying/p/12643510.html
https://www.cnblogs.com/wkzb/p/12732078.html#autoid-2-2-0
https://blog.szfszf.top/tech/%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1-bluecms-v1-6/
https://www.cnblogs.com/wkzb/p/12732078.html#autoid-0-0-0
本文始发于微信公众号(哈拉少安全小队):blue CMS实战(4)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论