<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* **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.
To jest w zasadzie podsumowanie [https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)
Tworzenie nowych dowolnych obiektów, takich jak `new $_GET["a"]($_GET["a"])`, może prowadzić do wykonania zdalnego kodu (RCE), jak szczegółowo opisano w [**artykule**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/). Ten dokument przedstawia różne strategie osiągania RCE.
Składnia `new $a($b)` jest używana do tworzenia obiektu, gdzie **`$a`** reprezentuje nazwę klasy, a **`$b`** jest pierwszym argumentem przekazywanym do konstruktora. Te zmienne mogą pochodzić z danych wprowadzanych przez użytkownika, takich jak GET/POST, gdzie mogą być ciągami znaków lub tablicami, lub z JSON, gdzie mogą być innymi typami.
Funkcje **Autoloading** mogą być wykorzystane, jeśli nie ma bezpośredniego dostępu do takich klas. Te funkcje automatycznie wczytują klasy z plików, gdy są potrzebne i są definiowane za pomocą `spl_autoload_register` lub `__autoload`:
Brak własnych klas lub autoloadersów może wystarczyć do RCE za pomocą **wbudowanych klas PHP**. Liczba tych klas waha się od 100 do 200, w zależności od wersji PHP i rozszerzeń. Mogą być one wymienione za pomocą `get_declared_classes()`.
Konstruktory, które nas interesują, można zidentyfikować za pomocą interfejsu refleksji, jak pokazano w poniższym przykładzie i na stronie [https://3v4l.org/2JEGF](https://3v4l.org/2JEGF).
Podczas analizy **zależności projektu** odkryto, że **Imagick** może być wykorzystany do **wykonywania poleceń** poprzez tworzenie nowych obiektów. Daje to możliwość wykorzystania podatności.
Zidentyfikowano możliwość analizatora VID do zapisywania zawartości w określonej ścieżce w systemie plików. Może to prowadzić do umieszczenia powłoki PHP w katalogu dostępnym przez sieć, co umożliwia zdalne wykonanie kodu (RCE).
Zauważono, że PHP tymczasowo przechowuje przesłane pliki w `/tmp/phpXXXXXX`. Analizator VID w Imagick, wykorzystujący protokół **msl**, może obsługiwać symbole wieloznaczne w ścieżkach plików, ułatwiając przeniesienie tymczasowego pliku do wybranej lokalizacji. Ta metoda oferuje dodatkowe podejście do osiągnięcia dowolnego zapisu plików w systemie plików.
Metoda opisana w [**oryginalnym opracowaniu**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) polega na przesyłaniu plików, które powodują awarię serwera przed usunięciem. Poprzez brutalne próbowanie nazwy tymczasowego pliku, możliwe staje się wykonanie dowolnego kodu PHP przez Imagick. Jednak ta technika okazała się skuteczna tylko w przestarzałej wersji ImageMagick.
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **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.