Web安全-基于上传漏洞的黑名单检测绕过
基于上传漏洞的黑名单检测绕过
【实验目的】
通过本实验理解黑名单检测在上传文件检测时存在的缺陷,掌握体验上传漏洞服务器端黑名单检测的绕过方式。
【实验环境】
目标网站:上传漏洞训练平台(**第七关**)
渗透主机:burpsuitv1732
工具:Burpsuite
【实验原理】
服务器端检测源代码如下图
分析一下,综合应用的检测方法有:
(1)黑名单: array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
(2)strrchr() 函数查找字符在指定字符串中从后面开始的第一次出现的位置,如果成功,则返回从该位置到字符串结尾的所有字符。例如<?php echo strrchr( '123456789.xls' , '.' );?> 程序的输出结果是:.xls。
(3)strtolower($file_ext)函数作用为将指定字符串转换为小写(通过后缀为Php大小写绕过的方法就失效了)。
(4)str_ireplace('::$DATA', '', $file_ext)函数作用是去除字符串::$DATA。
(5)trim($file_ext)函数作用是首尾去空,将后缀名里的前后空格都去掉。
针对此实验中黑名单检测的绕过方法: windows有一个特性,windows系统自动去掉不符合规则符号后面的内容(比如新建了一个1.txt文件,然后你将名称改为1.txt.,虽然警告报错,但是windows还是会默认去掉后面的.,名字还是变成了1.txt)。
因此上传xx.php.类型文件
strrchr函数会将上传的文件名后缀处理为.php.,当上传到win机器上时又会将后面的.去掉,然后后缀就又会被还原成.php,这样php文件就可以执行了。
实验步骤
第一步 启动目标网站的网站
登录靶机后,进入D:/phpstudy2018目录,然后双击启动phpStudy。
查看php版本:
如果勾选的不是5.2.17版本,则勾选该版本,然后服务器自动重启。
查看magic_quotes_gpc状态。
确保magic_quotes_gpc开关,处于关闭(OFF)状态。
第二步 渗透主机将浏览器与burpsuit关联,开启代理抓包功能
第三步 上传1.php文件并抓包,在burp修改文件后缀名为.php.
第四步 成功上传php文件
【思考与总结】
通过本次实验,成功实现了绕过黑名单检测进行webshell的上传与解析,我们重点要掌握上传漏洞的攻击方法以及防御措施。