代码审计之文件越权和文件上传搜索技巧
0x01. 全局搜索查找越权技巧
在代码审计中,文件量很大的情况下查找可越权访问的文件(以PHP为例,开始没有引入global.php|common.php等类似的文件)是一件很头疼的事情,下面介绍在Linux环境下使用find命令快速查找可越权的文件:
//find命令 1.在etc下查找"*.log"文件 find /etc -name "*.log" 2.在etc下查找所有包含"common.php"字符串的php文件 find /etc -name "*.php" | xargs grep "common.php" find /etc -name "*.php" | xargs grep "common.php" > ./a.txt 3.在etc下查找没有包含"common.php"字符串的php文件 find /etc -name "*.php" | xargs grep -L "common.php"
其它常用的命令参考:http://sundful.iteye.com/blog/1730385
0x02. 全局搜索上传漏洞技巧
以某厂商www.xx00.com的源码为例
1.首先全局搜索type=”file”来判断有没有上传点(关键词”$_FILE”是查找上传文件逻辑处理的地方):
命令:
find /home/juicebox/Desktop/Code/aituan -name "*.php" | xargs grep "type=\"file\"" > a.txt
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函数,分析代码可知有上传漏洞
5.本地写一个上传的html文件:
<html> <body> <form action="http://www.xx00.com/at/phone_test/upload" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br/> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
6.上传后看返回的img值,解密md5值即可获取webshell路径