读书笔记之CMS漏洞复现集合

读书笔记之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
2
3
4
$control = new important();//实例化important类
$action = 'on' . $action;//'变量赋值'
if (method_exists($control, $action)) {//检测方法是否此名字
$control->$action();//如果存在则使用important类中的方法

成功注入

用sqlmap测试一下
因为该漏洞需要登录,即需要cookie验证,我们用burpsuite抓下数据包,并保存到sqlmap目录下的1.txt里,然后再用sqlmap,输入命令

1
python2 sqlmap.py -r 1.txt

总结

此漏洞涉及到php编程中的面向对象问题、addslashes()函数等知识点,比较基础

作者

Yunen

发布于

2018-07-10

更新于

2020-12-25

许可协议

评论