代码审计的艺术系列 第七篇

0x00 前言:

接下来的几篇是对PHP代码审计中文件操作相关漏洞挖掘的总结。文件越权和上传漏洞在审计中非常常见,所以给你一套源码该如何去搜索这两类漏洞是这篇文章要讨论的。

0x01 越权访问的脑图

0x02 文件越权访问

Tips:

PHP中被引入的全局文件像global.phpcommon.php会对用户是否登录进行验证,如果未登录则跳转到登录页面,所以我们可以吧没有包含 global.phpcommon.phpphp文件定义为可越权访问的文件。在Linux环境里可以使用find命令快速定为可越权的文件:

1.在etc下查找没有包含common.php字符串的php文件

find /etc -name "*.php" | xargs grep -L "common.php"

2.在etc下查找所有包含common.php字符串的php文件

find /etc -name "*.php" | xargs grep "common.php"

案例:

缺陷编号:WooYun-2015-98084
漏洞标题:佑友mailgard webmail任意文件上传导致getshell(无需登录)
漏洞链接:http://wooyun.org/bugs/wooyun-2010-098084

简单分析下这个漏洞,没有包含根目录下global.php的文件,都不会跳转到登录界面即存在越权访问,所以查找可能存在越权访问的文件:

$ find -name "*.php" | xargs grep -L -E "^require_once.+(\.\.\/global|[^/]global)\.php.+;$"

结果如下:

./overflow_alarm.php
./sms_send.php
./src/old.rule.php
./src/public_folders_upload.php
./src/big_attach.php
./src/big_att_upload.php
./src/read_data.php
./src/upload.php
./sync/linkman.php

然后就可以进一步去发现敏感信息泄露、注入和上传等漏洞了。

0x03 文件上传漏洞

案例:

以某厂商http://www.xx00.com的源码为例

1.首先全局搜索type="file"来判断有没有上传点(关键词$_FILE是查找上传文件逻辑处理的地方):

命令:

结果如下:

2.xx00也是用的php的框架,所以我们打开主页找mvc框架的影子:

http://www.xx00.com/at/gold_auction/auction_details/532
http://www.xx00.com/at/index/baoming

根据上面两条和源码结构,判断功能函数在/application/controller/at/目录下

并且判断出http的请求功能函数时应该遵循domain/at/action/function/param格式

3.我们打开/application/views/at/phone_test/display.php,发现上传的action="upload"

4.打开/application/controller/at/phone_test.php,找到upload函数,分析代码可知有上传漏洞

文章目录

发表评论

发表评论

*

沙发空缺中,还不快抢~