审计署网络安全审计_网络安全:小记一次代码审计_新手渗透入门教程
前言:
事情是这样的,由于我 CNVD 还差一积分就可以兑换京东E卡了,所以找了这个 CMS 看看能不能挖到漏洞,运气还是不错的挖到了两个,分别是 SSRF 与文件覆盖 ,这才有这篇文章。该 CMS 版本是 4.2。以下漏洞均被 CNVD 收录。
环境说明:
PHP版本用 7.0.9 就好了。
SSRF:
根据功能点定向审计,在后台的工具栏有一个采集功能,根据经验这种功能一般存在 SSRF。
【一>所有资源获取add,POST 的参数cjurl 未做安全处理被传入到 $this->caiji->str 方法。
那么我们跟进到 $this->caiji->str 方法,但是 找不到定义该方法的位置。
解决办法,我们可以连续按两下 Shift 键直接寻找。
跟进到 str 方法后,发现 url 参数被传入 方法,继续跟进该方法。
可以看到 方法使用了 curl 请求 url。
基本上有调用 $this->caiji->str 方法的地方都存在 SSRF 漏洞。
文件覆盖导致 :
通过敏感函数回溯参数过程的方式找到该漏洞。在 /cscms/app//.php# 使用了文件写入的敏感函数,跟 SSRF 的 是同一个文件。
使用 Ctrl+Shift+F 查找哪些位置调用了 ,在 //sys/admin/.php#-> 调用了 函数,并且 note[note[note[key]['name'] 和 note[note[note[key]['url'] 的值是以字符串方式拼接到文件内容的,该内容是注释,我们可以使用换行绕过。
查找哪些位置调用了 ,跟踪 …">note 的值是否可控,调用该函数的位置有很多,最终找到一处可利用。在 //sys/admin/.php#-> 调用了 ,由于该函数内容有点多,所以我将它拆分成两个界面,一些不重要的内容进行闭合。画红线的位置是调用到 必须设置的,可以看到在标蓝色3的位置获取到了 note 的值,分析到这里可以开始复现了。
使用 抓取请求包。
修改请求包内容写入构造好的代码,可以看到我使用了 %0a 换行去绕过注释。
在 /cscms//dance/.php 可以看到成功写入。
寻找引用 .php 的位置,懒得去看代码了,通过点击各个页面,经过不懈努力终于在个人中心的音乐页面找到,所以你需要注册一个会员用户。
重放 抓到的请求包,成功输出内容。
到这里其实事情还没有结束,当我尝试写入恶意内容发现被转义了。
试了 eval、 等均被转义,但是 没有被转义,考虑到 在PHP7版本之后的问题,我还是需要找一个更好的办法。懒得去看转义的代码了,我根据PHP的动态特性使用以下方法成功 RCE。
总结:
此次代码审计使用了通用代码审计思路的两种,第一种:根据功能点定向审计、第二种:敏感函数回溯参数过程,没有用到的是通读全文代码。活用 可以让代码审计的效率大大增加。
网络安全学习路线图(思维导图)
网络安全学习路线图可以是一个有助于你规划学习进程的工具。你可以在思维导图上列出不同的主题和技能,然后按照逻辑顺序逐步学习和掌握它们。这可以帮助你更清晰地了解自己的学习进展和下一步计划。
1. 网络安全视频资料
2. 网络安全笔记/面试题
3. 网安电子书PDF资料
~