mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
3 KiB
3 KiB
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群组 或 电报群组 或 关注我们的Twitter 🐦 @carlospolopm。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
查看此技术的完整详情:https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf
PHP文件上传
当PHP引擎接收到按照RFC 1867格式化的文件的POST请求时,它会生成临时文件来存储上传的数据。这些文件对于PHP脚本中的文件上传处理至关重要。如果需要在脚本执行之后持久存储,必须使用move_uploaded_file
函数将这些临时文件重新定位到所需位置。在执行后,PHP会自动删除任何剩余的临时文件。
{% hint style="info" %} 安全警报:攻击者可能利用临时文件的位置,利用本地文件包含漏洞,在上传过程中访问文件以执行代码。 {% endhint %}
未经授权访问的挑战在于预测临时文件的名称,这是有意随机化的。
在Windows系统上的利用
在Windows上,PHP使用GetTempFileName
函数生成临时文件名,结果类似于<path>\<pre><uuuu>.TMP
的模式。特别注意:
- 默认路径通常为
C:\Windows\Temp
。 - 前缀通常为"php"。
<uuuu>
代表唯一的十六进制值。由于函数的限制,仅使用低16位,允许最多65,535个具有恒定路径和前缀的唯一名称,使得暴力破解成为可能。
此外,在Windows系统上,利用过程更加简化。FindFirstFile
函数中的一个特殊之处允许在本地文件包含(LFI)路径中使用通配符。这使得可以创建类似以下内容的包含路径来定位临时文件:
http://site/vuln.php?inc=c:\windows\temp\php<<
在某些情况下,可能需要更具体的掩码(如php1<<
或phpA<<
)。可以系统地尝试这些掩码来发现已上传的临时文件。
在GNU/Linux系统上的利用
对于GNU/Linux系统,临时文件命名中的随机性很强,使得这些名称既不可预测也不容易受到暴力攻击。更多细节可以在参考文档中找到。