Snorlax 靶场:文件上传
文件上传#
上传的文件对 web 应用程序来说是一个巨大的风险,许多攻击的第一步是上传攻击代码到被攻击的系统上,然后攻击者只需要找到方法来执行代码即可完成攻击。也就是是说,文件上传是攻击者需要完成的第一步。
不受限制的文件上载的后果可能不同,包括完全接管系统、文件系统过载、将攻击转发到后端系统以及简单的破坏。这取决于应用程序对上载的文件做了什么,和文件的存储位置。
Snorlax 靶场共有 5 个场景,这些场景都是通过文件上传实现对站点的攻击。
- 客户端校验
- MIME 校验
- Apache 配置文件
- PHP 配置文件
- 黑名单校验
客户端校验#
直接上传一句话木马,前端提示我们文件类型不合法。
由于文件类型验证是在前端,后端并没有相关的机制,所以上传一句话木马时直接改后缀名为 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 文件访问时就可以利用一句话木马连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)