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的上传与解析,我们重点要掌握上传漏洞的攻击方法以及防御措施。

posted @ 2020-11-17 19:45  码小农的幸福生活  阅读(759)  评论(0编辑  收藏  举报