文件上传另类GETshell方法

利用.user.ini 进行解析文件。

不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以;

什么是.user.ini 先看下官方的废话。
在这里插入图片描述

  • 简单来讲,第一段话,反过来就是.htaccess 在特定的情况下和.user.ini作用相同。而.htaccess 利用相信大家都不陌生。

  • 第二句话就是字面意思了。简单讲就是后面利用的时候,你这个.user.ini在任何目录下都无所谓,php会去找到它的。 .user.ini就相当于php.ini的意思了。

  • 第三句就是条件了。

  • 最后一句简单讲 .user.ini 是动态读取的,不需要去重启使配置生效,默认是300秒 重新加载INI文件。

那么我们就可以到php.ini中寻找 具备PHP_INI_PERDIR和PHP_INI_USER 模式的INI设置了。

其中有两个设置比较有意思,写网站的朋友或许有时候常常接触到。

这里就不去看官方的描述了。意思简单清晰明了。 类似于require();

auto_prepend_file在页面顶部加载文件
auto_append_file在页面底部加载文件

我们如果在.user.ini中设置 比如第一个 auto_prepend_file

在.user.ini 中添加如下一串代码

auto_prepend_file=shell

在这里插入图片描述
然后在文件shell中写入php代码
在这里插入图片描述

当前目录下我写了一个php的首页文件。内容如下

在这里插入图片描述

按照原理,shell文件的内容应该会被包含在 hello world 上面。

访问一下, 执行成功。

代码执行成功

如果.user.ini中 写的是

auto_append_file =shell

在这里插入图片描述

那么执行的代码就在下面。

在这里插入图片描述

最后附上我的测试环境。其中php 从5.3.29 到7.3.9 都可以。 Nginx 的话是1.15版本

NginxPHP版本服务器
Nginx 1.15.1PHP Version 5.3.29 PHP Version 5.4.45 PHP Version 7.3.9window 10

7.3.9执行成功

总结: 通过上传自定义文件.user.ini
使php去读取其内容,将指定文件包含在一个正常的php文件中,进行解析,从而达到getshell的结果。

该方法用在文件上传,.user.ini可以上传成功,且在上传目录下存在一个正常的php文件即可。

可以在php文件无法正常上传,不存在文件包含漏洞,图片马上传之后无法解析的情况下进行。
,且在上传目录下存在一个正常的php文件即可。

可以在php文件无法正常上传,不存在文件包含漏洞,图片马上传之后无法解析的情况下进行。

后台文件上传中的 GETshell 漏洞通常发生在服务器处理文件上传请求时,如果未正确验证上传文件类型、大小或内容,恶意用户可能会上传包含恶意脚本的文件,这些脚本可以在服务器上执行,从而获取系统的控制权(shell)。 解决这类漏洞的方法包括: 1. **验证上传内容**:确保上传文件类型限制在预期范围内,比如只允许上传图片、文档等特定类型的文件,而不是可执行文件或包含脚本的文件。 2. **文件名和路径限制**:对上传的文件名进行转义和过滤,避免使用特殊字符造成目录遍历或恶意路径执行。同时,上传文件应存储在安全的、不可执行的文件夹中。 3. **二进制模式检查**:使用二进制模式打开上传文件,而不是文本模式,防止脚本注入。 4. **文件扩展名验证**:即使文件名被修改,也要检查上传文件的实际类型,不依赖于文件名。 5. **文件内容检查**:使用安全的文件内容检测工具,扫描文件的内容以查找可能的恶意代码。 6. **启用安全配置**:启用服务器的文件权限管理,确保上传的文件只能被拥有者或授权用户访问,而不能执行。 7. **使用预定义上传目录**:避免使用相对或绝对路径,而是使用预定义的上传目录,减少潜在的路径遍历攻击。 8. **启用HTTP头限制**:设置合适的Content-Type限制,防止恶意构造的请求头引发漏洞。 9. **更新和补丁管理**:定期更新服务器软件和框架,修复已知的安全漏洞。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SwBack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值