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,能够在看到漏洞点时下意识本能反应出来,应该就是代码审计的大手子了。

posted @ 2020-03-04 10:26  春告鳥  阅读(1119)  评论(3编辑  收藏  举报