5.6 KiB
通过PHP_SESSION_UPLOAD_PROGRESS进行LFI2RCE
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥
- 你在一家网络安全公司工作吗?想要在HackTricks中看到你的公司广告吗?或者你想要获取PEASS的最新版本或下载HackTricks的PDF吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获取官方PEASS和HackTricks周边产品
- 加入💬 Discord群组 或者 Telegram群组 或者 关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。
基本信息
如果你发现了一个本地文件包含漏洞,即使你没有会话并且session.auto_start
是Off
。如果**session.upload_progress.enabled
是On
,并且你在多部分POST数据中提供了PHP_SESSION_UPLOAD_PROGRESS
,PHP将会为你启用会话**。
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -d 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -F 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah' -F 'file=@/etc/passwd'
$ ls -a /var/lib/php/sessions/
. .. sess_iamorange
In the last example the session will contain the string blahblahblah
请注意,通过**PHP_SESSION_UPLOAD_PROGRESS
,您可以控制会话中的数据**,因此如果您包含会话文件,您可以包含您控制的部分(例如,一个php shellcode)。
{% hint style="info" %}
尽管互联网上的大多数教程都建议您将session.upload_progress.cleanup
设置为Off
以进行调试。但是PHP的默认session.upload_progress.cleanup
仍然是On
。这意味着您的会话中的上传进度将尽快被清除。因此,这将是竞争条件。
{% endhint %}
CTF
在评论此技术的原始CTF中,仅利用竞争条件是不够的,加载的内容还需要以字符串@<?php
开头。
由于session.upload_progress.prefix
的默认设置,我们的SESSION文件将以一个烦人的前缀upload_progress_
开头,例如:upload_progress_controlledcontentbyattacker
去除初始前缀的技巧是将有效载荷进行3次base64编码,然后通过convert.base64-decode
过滤器进行解码,这是因为当base64解码时,PHP会删除奇怪的字符,所以经过3次后,只有攻击者发送的有效载荷将保留(然后攻击者可以控制初始部分)。
更多信息请参阅原始写作https://blog.orange.tw/2018/10/和最终利用https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py
另一个写作在https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 您在网络安全公司工作吗?您想在HackTricks中看到您的公司广告吗?或者您想获得最新版本的PEASS或下载PDF格式的HackTricks吗?请查看SUBSCRIPTION PLANS!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获得官方PEASS和HackTricks衣物
- 加入💬 Discord群组或电报群组,或在Twitter上关注我🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享您的黑客技巧。