Łukasz Pilorz
Bezpieczeństwo aplikacji internetowych

03 cze 09 Z archiwum testera (1)

Historia problemów z bezpieczeństwem WordPressa mogłaby posłużyć za wzorcowy scenariusz szkolenia. Poza wieloma odsłonami klasycznych błędów XSS, SQL Injection czy Directory Traversal, pojawiają się tam wątki kryptografii, różnorodnego kodowania znaków, uwierzytelnienia i autoryzacji, filtrowania danych na zbyt wczesnym etapie, podatności na DoS, słabych haseł osób mających dostęp do produkcji…

Dorzucę do kompletu błąd, który dotąd pozostawał nieujawniony – dotyczy wersji 2.3.3 (2008) i starszych, z których dziś już nikt przy zdrowych zmysłach nie korzysta, oraz wymaga uprawnień unfiltered_html:

<style>{${eval($_GET[x])}}</style>

Powyższy kod wstawiony do komentarza stawał się permanentnym backdoorem, umożliwiającym wykonanie kodu PHP również przez nieuwierzytelnionego użytkownika. Ponieważ domyślnie uprawnienia unfiltered_html posiadają wyłącznie role „admin” oraz „editor”, lukę można wykorzystać w połączeniu z atakiem persistent XSS w tym samym komentarzu (taka luka, również nie opisana w changelogu WordPressa, została zgłoszona przez Michała Sajdaka w wersji 2.3.1) – w takim przypadku przeglądarka administratora wyręcza nas przy umieszczeniu backdoora w dowolnym opublikowanym tekście.

Konkurs: pierwsza osoba, która wskaże błędną linię kodu WordPressa pozwalającą na wykonanie kodu PHP powyższą metodą, otrzyma bliżej nieokreśloną nagrodę :)



Reader's Comments

  1. |

    formatting.php 82 linia.

    Co wygrałem? ;-)

  2. |

    Bingo! Jeszcze nie wiem co dostaniesz, pogadamy w kosmodromie ;)



Leave a Comment