读书笔记之CMS漏洞复现集合
前言
最近在看法师的代码审计企业级代码安全架构一书,打算对书中所列出的cms漏洞进行复现,无技术含量。
正文
准备工作
1.phpstudy环境整合包
2.各种cms安装包
3.《代码审计企业级代码安全架构》
4.Seay源代码审计系统
复现一之espcms注入漏洞
漏洞文件位置:espcms\adminsoft\control\citylist.php
可以看到这里有一个sql请求,并且请求中包含着变量$parentid。
并且$parentid的赋值句子为
1 | $parentid = $this->fun->accept('parentid', 'R') |
这里引用对象进行赋值
我们查找accept这个自定义函数,看看是否有可能会有sql注入。
可以看出这个函数是_用来通过$_POST、$_GET、$_COOKIE 三种方法来接收数据并保存为数组变量$var
最后通过一个daddslashes()函数对数据进行单引号等字符的过滤
但是我们前面所提到的sql语句中并不需要我们去闭合单引号,那么这句造成了一个sql注入漏洞
我们来找一下那些文件实例化了这个类
这个类名叫important,我们直接进行全局搜索
可以看到在adminsoft\index.php文件实例化了该类
Tips:
1 | $control = new important();//实例化important类 |
成功注入
用sqlmap测试一下
因为该漏洞需要登录,即需要cookie验证,我们用burpsuite抓下数据包,并保存到sqlmap目录下的1.txt里,然后再用sqlmap,输入命令
1 | python2 sqlmap.py -r 1.txt |
总结
此漏洞涉及到php编程中的面向对象问题、addslashes()函数等知识点,比较基础