安全代码审计-PHP

前言:这篇文章:该 CMS 版本是 4.2 。以下漏洞均被 CNVD 收录 。
环境说明:php版本用 7.0.9 就好了 。

安全代码审计-PHP

文章插图
 
SSRF:根据功能点定向审计 , 在后台的工具栏有一个采集功能 , 根据经验这种功能一般存在 SSRF 。
安全代码审计-PHP

文章插图
 

安全代码审计-PHP

文章插图
 
【一>所有资源关注我 , 私信回复"资料"获取<一】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100份src文档
5、常见安全面试题
6、ctf大赛经典题目解析
7、全套工具包
8、应急响应笔记
使用 Python3 在本地开启简易的 http 服务 。
安全代码审计-PHP

文章插图
 
点击下一步 , 果不其然存在 SSRF 。
安全代码审计-PHP

文章插图
 
进行漏洞分析 。
根据 burpsuite 抓到的请求包很容易定位到代码位置 。
安全代码审计-PHP

文章插图
 
在文件
upload/plugins/sys/admin/Collect.php#Collect->add , POST 的参数cjurl 未做安全处理被传入到 $this->caiji->str 方法 。
安全代码审计-PHP

文章插图
 
那么我们跟进到 $this->caiji->str 方法 , 但是 phpstorm 找不到定义该方法的位置 。
安全代码审计-PHP

文章插图
 
解决办法 , 我们可以连续按两下 Shift 键直接寻找 。
安全代码审计-PHP

文章插图
 
跟进到 str 方法后 , 发现 url 参数被传入 htmlall 方法 , 继续跟进该方法 。
安全代码审计-PHP

文章插图
 
可以看到 htmlall 方法使用了 curl 请求 url 。
安全代码审计-PHP

文章插图
 
基本上有调用 $this->caiji->str 方法的地方都存在 SSRF 漏洞 。
安全代码审计-PHP

文章插图
 
文件覆盖导致 GETSHELL:通过敏感函数回溯参数过程的方式找到该漏洞 。

upload/cscms/App/helpers/common_helper.php#write_file 使用了文件写入的敏感函数 , 跟 SSRF 的 htmlall 是同一个文件 。
安全代码审计-PHP

文章插图
 
使用 Ctrl+Shift+F 查找哪些位置调用了 write_file , 在
upload/plugins/sys/admin/Plugins.php#Plugins->_route_file 调用了 write_file函数 , 并且 note[


    推荐阅读