写点什么

安全 app 之 PHP 代码审计

  • 2022 年 3 月 11 日
  • 本文字数:847 字

    阅读完需:约 3 分钟

正文源码结构如下,



经过我的一番菜鸡分析,application 下,admin 是 admin 后台,index 是首页的方法,api 是用户后台,还有一个 wxapi 好像是微信小程序的用户后台(因为这个环境我本地没有实现)。首先是找上传,一般后台的都是这样直奔主题,找到图片管理处



先直接上传个 php,发现没有反应,也没报错什么的,感觉没戏,但是文件监控发现点东西



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


发现上传成功了,于是到源码中删除这个文件,又重新上传了一下,结果



确实返回了 json,



离谱啊,找到对应源码处,application/admin/controller/File.php



没有进行过滤,为什么 php 没有显示因为在调用图片管理时读取限定了后缀,



folder.'*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}', GLOB_BRACE)突然想到会不会用户的对应功能点也有同样的问题,找到用户上传,



发现用this->rules)进行了后缀验证,而 $rules = ['ext' => 'jpeg,jpg,png', 'size' => 1024 * 1024 * 4],没戏。然后在 wxapi 接口中,



这里是没有验证的,那么普通用户就有上传(我本地没有复现成功,有师傅会的教教我)删除的话也没有限制,导致任意文件删除,尝试删除 logo:




抓包修改,




原因也是直接拼接了 value,



不过作用不大,但是这个站也是 install.lock,要是有重装写 shell 那当我没说。另外一个就是逻辑上的问题,在站点系统设置中,



输入个'就报错了,



一些绝对路径啊什么的都有,分析一下,application/admin/controller/Set.php 中



跟进 updatesystem



再跟 setupdatesystem



以上流程将我们传入的 post 数据写入在 config/readfile 下新生成的 system.php 中通过 json_encode($array, 1)会将我们传入的" 转义成" ,但是'无法转义,因此可以传入'从而导致报错



在加载应用的时候会 include(config/app.php)config/app.php 会判断是否存在 system.php



存在就 include,进而导致报错。后面也想到了闭合',但是 return 一个字符串,之后的就无法执行了。

用户头像

我是一名网络安全渗透师 2021.06.18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
安全app之PHP代码审计_网络安全_网络安全学海_InfoQ写作平台