-
Notifications
You must be signed in to change notification settings - Fork 3
怎么在 Exploit 中使用 PhpEXE 进行任意文件上传
任意文件上传在 Web 应用程序中非常普遍, 可被滥用以上传恶意文件, 然后危及服务器. 通常, 攻击者会根据支持的任何服务器端编程语言来选择有效负载. 因此, 如果易受攻击的应用程序使用 PHP, 那么显然支持 PHP, 因此一个简单的选择是使用 PHP 有效负载, 例如 Metasploit 的 PHP Meterpreter. 但是, PHP Meterpreter 的效果与 Windows 的 Meterpreter 不同. 因此, 实际上, 你可能希望升级到更好的 shell, 这在此过程中涉及额外的手动工作. 那么为什么要限制你的有效 payload 选项呢? 对于这种情况, 你应该使用 PhpEXE
mixin. 它在 PHP 中充当有效负载阶段, 将最终的恶意可执行文件写入远程文件系统, 然后在使用后自行清除, 因此不留痕迹.
要使用 PhpEXE
mixin, 应满足一些典型的可利用要求:
- 你必须在 Web 服务器上找到可写位置.
- HTTP 请求也应该可以读取相同的可写位置.
注意: 对于任意文件上传漏洞, 通常有一个包含上传文件的目录, 并且是可读的. 如果错误是由于目录遍历引起的, 那么临时文件夹 (来自操作系统或 Web 应用程序) 将是你的典型选择.
- 首先将 mixin 包含在
MetasploitModule
类的范围内, 如下所示:
include Msf::Exploit::PhpEXE
- 使用
get_write_exec_payload
生成有效负载 (使用 PHP 暂存器)
p = get_write_exec_payload
如果你正在使用 Linux 目标, 则可以将 unlink_self
设置为 true, 这将自动清除可执行文件:
p = get_write_exec_payload(:unlink_self=>true)
在 Windows 上, 你可能无法清除可执行文件, 因为它可能仍在使用中. 如果无法自动清理恶意文件, 则应始终警告用户它们在哪里, 以便他们稍后在渗透测试期间手动清理.
此时可以上传 get_write_exec_payload
生成的 payload, 然后通过 GET 请求调用. 如果你不知道如何发送 GET 请求, 请参考以下文章: 使用 HTTPClient 发送 HTTP 请求
https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/php_exe.rb