Snorlax 靶场:文件上传

文件上传

上传的文件对 web 应用程序来说是一个巨大的风险,许多攻击的第一步是上传攻击代码到被攻击的系统上,然后攻击者只需要找到方法来执行代码即可完成攻击。也就是是说,文件上传是攻击者需要完成的第一步。
不受限制的文件上载的后果可能不同,包括完全接管系统、文件系统过载、将攻击转发到后端系统以及简单的破坏。这取决于应用程序对上载的文件做了什么,和文件的存储位置。

Snorlax 靶场共有 5 个场景,这些场景都是通过文件上传实现对站点的攻击。

  1. 客户端校验
  2. MIME 校验
  3. Apache 配置文件
  4. PHP 配置文件
  5. 黑名单校验

客户端校验

直接上传一句话木马,前端提示我们文件类型不合法。

由于文件类型验证是在前端,后端并没有相关的机制,所以上传一句话木马时直接改后缀名为 jpg,通过前端的过滤后抓包把文件后缀改为 php,上传成功了。



使用蚁剑连接成功。

MIME 校验

上传一句话木马,此时页面提示只能上传图片,可见后端对文件类型进行了验证 。

上传一句话木马时直接抓包把改 Content-Type 改为 jpg/imag php,上传成功了。



Apache 配置文件

按照常规进行简单的测试,此处提示的是 php 文件是不合法的。

“.htaccess”文件或者称为分布式配置文件,它是 Apache 服务器中的配置文件,提供了针对每个目录设置不同的配置的方法。有些服务器在上传认证时没有拦截 .htaccess 文件上传,就会造成恶意用户利用上传 .htaccess 文件解析漏洞,来绕过验证进行上传 WEBShell,从而达到控制网站服务器的目的。
首先我们编写一个 .htaccess 文件,打开记事本编写代码,然以文件名“.htaccess”进行保存。

AddType application/x-httpd-php .png


将其进行上传,因为 .htaccess 是 apache 服务器中的一个配置文件,不在上传的文件的黑名单之内,所以 .htaccess 文件是可以上传成功。

接着我们再上传图片马,由于 .htaccess 文件上传之后就生效了,此时所有的 png 文件都会以 php 文件的形式被解析,即可进行连接。

PHP 配置文件

直接上传一句话木马,还是不允许我们上传。

测试一下上传文件的目录,发现目录下有个 PHP 文件 readme.php。

自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的INI文件,此类文件仅被 CGI/FastCGI SAPI 处理。除了主 php.ini 之外,PHP 还会在每个目录下扫描INI文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录。
使用 user.ini 文件进行文件上传时,需要服务器脚本语言为 PHP,对应目录下面有可执行的php文件,且服务器使用 CGI/FastCGI 模式。.user.ini.它比 .htaccess 用的更广,不管是nginx/apache/IIS,只要是以 fastcgi 运行的 php 都可以用这个方法。

上传 .user.ini 绕过黑名单检验,设置将“trojan.jpg”文件自动解析。

GIF89a
auto_prepend_file=trojan.jpg


接着上传图片马。

上传成功后访问 readme.php 文件,由于有 user.ini 文件会自动解析图片马,所以对 readme.php 文件访问时就可以利用一句话木马连接。

黑名单校验

直接上传一句话木马,上传失败。

使用双写绕过后端的正则替换,成功绕过。

posted @ 2022-07-19 10:17  乌漆WhiteMoon  阅读(326)  评论(0编辑  收藏  举报