74CMS3.0储存型XSS漏洞代码审计
发现一个总结了乌云以前代码审计案例的宝藏网站:https://php.mengsec.com/
希望自己能成为那个认真复现和学习前辈们思路的那个人,然后准备慢慢开始审计一些新的小型cms了
骑士cms3.0储存型XSS漏洞,源代码可以在74CMS官网上找到:http://www.74cms.com/download/
要挖掘储存型XSS需要寻找未过滤的输入点和未过滤的输出函数,这个最终的输出点可能跟输入点完全不在一个业务流上,对于这类可以根据当前代码功能去猜,或者老老实实去追哪里有操作过这个数据,使用表名,字段名去代码里面搜索。
在74cms3.0中这个XSS储存型漏洞也是如此,我们将74CMS在本地安装后,到admin/admin_link.php位置处
也就是说,当存在我们对网站的输入的时候,我们就可以考虑是否有XSS漏洞
这里有添加友情链接的功能,是一个输入的位置,查看admin/admin_link.php文件
此处有:
当我们不指定act参数的时候,$act=list ,进入if语句
然后在这个位置将使用get_links函数从数据库中读取友情链接,也就是我们可以输入储存在数据库中的link
我们跟进get_links函数
get_links函数是一个从数据库里面读取友情链接并返回的函数
再接着就是输出, 我们自己点击添加链接,也可以看出我们有几个部分的输入,可以一一在模板中查看
链接名称,链接地址,LOGO地址,备注,显示顺序都是我们可以控制的输入,同时是按照link/admin_link.htm为模板输出的,跟进link/admin_link.htm
在logo处是img标签,在XSS-labs里面有过类似的题目,src属性我们利用onerror输出,输入点就是输入友情链接的地方
书上这里使用了HTML实体编码,实际上这里不需要编码也可以直接弹窗
这里有一篇将XSS漏洞的文章:https://wooyun.js.org/drops/Bypass%20xss%E8%BF%87%E6%BB%A4%E7%9A%84%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95.html
我觉得里面说的挺好的:本文主要是一个测试XSS的思路流程,并没有把所有的payload写全,其实也没有人能够写全,只是列了一个大体的框架,大家实际在寻找的过程中可以不断慢慢的根据这种思路补充自己的payload,想必呢,一定会有很大的进步的!~
在不断的代码审计中不断积累自己的payload,能够在看到漏洞点时下意识本能反应出来,应该就是代码审计的大手子了。