2023-08-03 19:12:22 +00:00
|
|
|
|
# 通过PHP_SESSION_UPLOAD_PROGRESS进行LFI2RCE
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
|
|
|
|
<details>
|
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
* 你在一家**网络安全公司**工作吗?想要在HackTricks中看到你的**公司广告**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
|
|
|
|
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
|
|
|
|
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
|
|
|
|
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或者 [**Telegram群组**](https://t.me/peass) 或者 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
|
|
|
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
### 基本信息
|
2022-04-21 00:07:27 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
如果你发现了一个**本地文件包含**漏洞,即使你**没有会话**并且`session.auto_start`是`Off`。如果**`session.upload_progress.enabled`**是**`On`**,并且你在**多部分POST**数据中提供了**`PHP_SESSION_UPLOAD_PROGRESS`**,PHP将会**为你启用会话**。
|
2022-04-21 00:07:27 +00:00
|
|
|
|
```bash
|
|
|
|
|
$ 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
|
|
|
|
|
```
|
2023-08-03 19:12:22 +00:00
|
|
|
|
请注意,通过**`PHP_SESSION_UPLOAD_PROGRESS`**,您可以**控制会话中的数据**,因此如果您包含会话文件,您可以包含您控制的部分(例如,一个php shellcode)。
|
2022-04-21 00:07:27 +00:00
|
|
|
|
|
|
|
|
|
{% hint style="info" %}
|
2023-08-03 19:12:22 +00:00
|
|
|
|
尽管互联网上的大多数教程都建议您将`session.upload_progress.cleanup`设置为`Off`以进行调试。但是PHP的默认`session.upload_progress.cleanup`仍然是`On`。这意味着您的会话中的上传进度将尽快被清除。因此,这将是**竞争条件**。
|
2022-04-21 00:07:27 +00:00
|
|
|
|
{% endhint %}
|
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
### CTF
|
2022-04-21 00:07:27 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
在评论此技术的[**原始CTF**](https://blog.orange.tw/2018/10/)中,仅利用竞争条件是不够的,加载的内容还需要以字符串`@<?php`开头。
|
2022-04-21 00:07:27 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
由于`session.upload_progress.prefix`的默认设置,我们的**SESSION文件将以一个烦人的前缀**`upload_progress_`开头,例如:`upload_progress_controlledcontentbyattacker`
|
2022-04-21 00:07:27 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
去除初始前缀的技巧是将有效载荷**进行3次base64编码**,然后通过`convert.base64-decode`过滤器进行解码,这是因为当**base64解码时,PHP会删除奇怪的字符**,所以经过3次后,只有攻击者发送的**有效载荷**将**保留**(然后攻击者可以控制初始部分)。
|
2022-04-21 00:07:27 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
更多信息请参阅原始写作[https://blog.orange.tw/2018/10/](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://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/](https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/)
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
|
|
|
|
<details>
|
|
|
|
|
|
2023-04-25 18:35:28 +00:00
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
* 您在**网络安全公司**工作吗?您想在HackTricks中看到您的**公司广告**吗?或者您想获得最新版本的PEASS或下载PDF格式的HackTricks吗?请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
|
|
|
|
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
|
|
|
|
* 获得[**官方PEASS和HackTricks衣物**](https://peass.creator-spring.com)
|
|
|
|
|
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
|
|
|
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
|
|
|
|
</details>
|