美文网首页
网络安全:小记一次代码审计

网络安全:小记一次代码审计

作者: 顶风作案7号 | 来源:发表于2022-03-04 15:39 被阅读0次

前言:

事情是这样的,由于我 CNVD 还差一积分就可以兑换京东E卡了,所以找了这个 CMS 看看能不能挖到漏洞,运气还是不错的挖到了两个,分别是 SSRF 与文件覆盖 GETSHELL,这才有这篇文章。该 CMS 版本是 4.2。以下漏洞均被 CNVD 收录。

环境说明:

PHP版本用 7.0.9 就好了。


image.png

SSRF:

根据功能点定向审计,在后台的工具栏有一个采集功能,根据经验这种功能一般存在 SSRF。


image.png

【一>所有资源获取<一】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100份src文档
5、常见安全面试题
6、ctf大赛经典题目解析
7、全套工具包
8、应急响应笔记

image.png

使用 python3 在本地开启简易的 http 服务。


image.png

点击下一步,果不其然存在 SSRF。


image.png

进行漏洞分析。
根据 burpsuite 抓到的请求包很容易定位到代码位置。


image.png

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


image.png

那么我们跟进到 $this->caiji->str 方法,但是 phpstorm 找不到定义该方法的位置。


image.png

解决办法,我们可以连续按两下 Shift 键直接寻找。


image.png

跟进到 str 方法后,发现 url 参数被传入 htmlall 方法,继续跟进该方法。


image.png

可以看到 htmlall 方法使用了 curl 请求 url。


image.png

基本上有调用 $this->caiji->str 方法的地方都存在 SSRF 漏洞。


image.png

文件覆盖导致 GETSHELL:

通过敏感函数回溯参数过程的方式找到该漏洞。
在 upload/cscms/app/helpers/common_helper.php#write_file 使用了文件写入的敏感函数,跟 SSRF 的 htmlall 是同一个文件。

image.png

使用 Ctrl+Shift+F 查找哪些位置调用了 write_file,在 upload/plugins/sys/admin/Plugins.php#Plugins->_route_file 调用了 write_file函数,并且 note[key]['name'] 和 note[key]['url'] 的值是以字符串方式拼接到文件内容的,该内容是注释,我们可以使用换行绕过。

image.png

查找哪些位置调用了 _route_file,跟踪 note 的值是否可控,调用该函数的位置有很多,最终找到一处可利用。在 upload/plugins/sys/admin/Plugins.php#Plugins->setting_save 调用了 _route_file,由于该函数内容有点多,所以我将它拆分成两个界面,一些不重要的内容进行闭合。画红线的位置是调用到 _route_file 必须设置的,可以看到在标蓝色3的位置获取到了note 的值,分析到这里可以开始复现了。

image.png

使用 burpsuite 抓取请求包。


image.png

修改请求包内容写入构造好的代码,可以看到我使用了 %0a 换行去绕过注释。


image.png

在 upload/cscms/config/dance/rewrite.php 可以看到成功写入。


image.png

寻找引用 rewrite.php 的位置,懒得去看代码了,通过点击各个页面,经过不懈努力终于在个人中心的音乐页面找到,所以你需要注册一个会员用户。


image.png

重放 burpsuite 抓到的请求包,成功输出内容。


image.png

到这里其实事情还没有结束,当我尝试写入恶意内容发现被转义了。


image.png image.png

试了 eval、shell_exec 等均被转义,但是 assert 没有被转义,考虑到 assert 在PHP7版本之后的问题,我还是需要找一个更好的办法。懒得去看转义的代码了,我根据PHP的动态特性使用以下方法成功 RCE。


image.png image.png

总结:

此次代码审计使用了通用代码审计思路的两种,第一种:根据功能点定向审计、第二种:敏感函数回溯参数过程,没有用到的是通读全文代码。活用 phpstorm 可以让代码审计的效率大大增加。

相关文章

  • 网络安全:小记一次代码审计

    前言: 事情是这样的,由于我 CNVD 还差一积分就可以兑换京东E卡了,所以找了这个 CMS 看看能不能挖到漏洞,...

  • 网络安全审计之CMS代码审计

    0x00:环境说明 Windows 10PhpstubyPhp版本:7.2.9CMS版本:MetInfo7.5.0...

  • 【网络安全】记一次代码审计

    前言 在挖掘漏洞过程中,可能有很多种方式,比如:纯白盒的代码审计、纯黑盒的渗透测试、对比补丁包寻找漏洞点等方式。这...

  • CREDITS代码审计

    由审计经验丰富和网络安全方面专家的Red4Sec公司对CREDITS平台的共识和传输代码进行独立审计。 Red4S...

  • Web 150

    题目简述: 代码审计是网络安全的重要学科,不严格的代码很容易产生漏洞,包括不安全的函数、未经校验的参数输入、不安全...

  • 学习链接

    91Ri.org_我的安全攻防指南 网络安全 渗透技巧 跨站攻击 代码审计 权限提升 内网渗透 脚本漏洞 无线安全...

  • 【代码审计】PHP代码审计

    1. 概述 代码审核,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应用程序在开发阶段存在的一...

  • 代码审计

    代码审计工具 1、三款自动化代码审计工具教程2、seay源代码审计系统 PHP核心配置详解 注意PHP各个版本中配...

  • 🎐代码审计

    ?源代码审计分为白盒、黑盒、灰盒 白盒:拥有源代码进行审计黑盒:不知道源代码的情况下进行渗透审计灰盒:介于黑盒与白...

  • 2021-12-06-java代码审计初步认知

    一、代码审计的定义代码审计是一种以发现安全漏洞,程序错误和程序违规为目标的源代码分析技能。 二、代码审计需要的能力...

网友评论

      本文标题:网络安全:小记一次代码审计

      本文链接:https://www.haomeiwen.com/subject/olkmrrtx.html