实验室:通过扩展黑名单绕过 Web shell 上传

前言:
服务器通常不会执行文件,除非它们已被配置为这样做。例如,在 Apache 服务器执行客户端请求的 PHP 文件之前,开发人员可能必须将以下指令添加到他们的/etc/apache2/apache2.conf文件中:

LoadModule php_module /usr/lib/apache2/modules/libphp.so
AddType application/x-httpd-php .php
  • 许多服务器还允许开发人员在各个目录中创建特殊的配置文件,以便覆盖或添加一个或多个全局设置。例如,Apache
    服务器将从一个名为(.htaccess如果存在)的文件中加载特定于目录的配置。

同样,开发人员可以使用web.config文件在 IIS 服务器上进行特定于目录的配置。这可能包括如下指令,在这种情况下允许将 JSON 文件提供给用户:

<staticContent>
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

Web 服务器在存在时使用这些类型的配置文件,但通常不允许您使用 HTTP 请求访问它们。但是您可能偶尔会发现无法阻止您上传自己的恶意配置文件的服务器,在这种情况下,即使您需要的文件扩展名被列入黑名单,您也可以欺骗服务器将任意自定义文件扩展名映射到可执行的 MIME 类型。


第一步:登录网站,上传文件e.php失败,网站禁止上传.php类型文件。
在这里插入图片描述
第二步:打开 Burp 的代理历史记录,设置过滤器,找到POST /my-account/avatar用于提交文件上传的请求发送到“重发器”。在响应中,请注意标头显示您正在与 Apache 服务器通信。
在这里插入图片描述
第三步:进行以下更改:
1.filename将参数 的值更改为.htaccess
2.Content-Type将标头 的值更改为text/plain.
3.将上传文件的内容替换为以下 Apache 指令:AddType application/x-httpd-php .l33t)
这会将任意扩展名 ( .l33t) 映射到可执行 MIME 类型application/x-httpd-php。由于服务器使用该mod_php模块,它已经知道如何处理这个问题。

在这里插入图片描述
第四步:复制请求到浏览器,找到请求并修改filename参数值,更改exploit.php为exploit.l33t。再次发送请求,发现文件上传成功。
在这里插入图片描述

第五步:复制到浏览器响应,切换到包含GET /files/avatars/<文件名>请求。观察响应中返回了 Carlos 的秘密。
1.首先将修改后的请求复制到浏览器
2.找到GET请求

在这里插入图片描述
在这里插入图片描述
将密码提交,实验完成!
文中有的地方可能讲的不对,还希望大佬多多保函,给予改正,万分感谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值