Forum The World na Goldenline.pl Twitter Facebook Kanał RSS

Zemsta admina: PHP-Fusion nadal dziurawy

Wolne oprogramowanie można widzieć przynajmniej na dwa sposoby – jako bezpieczne, ponieważ każdy użytkownik ma możliwość odnalezienia błędów, luk bezpieczeństwa i przesłania wiadomości o nich do programistów; z drugiej strony tym użytkownikiem może być atakujący. Komu zaufać?

Dzisiaj pokażemy jak przeprowadzić atak na CMS PHP-Fusion.

Scenariusz

Jesteś jednym z administratorów testowych na portalu napędzanym przez powyższy CMS. Masz podstawowe możliwości jak Zarządzanie treścią: Dodatkowe strony, Artykuły, Download, Pytania i odpowiedzi. Niestety nie spodobałeś się ekipie, która ogłosiła, że przestajesz być adminem. Nie jesteś z tego faktu zadowolony i postanawiasz się zemścić ujawniając hasło do bazy danych, jej zawartość oraz kasując wszystko z serwera.

Teraz zapewne pomyślałeś, że żartuję sobie z Ciebie, że do tego trzeba być hakerem. Nie. Wśród Twoich praw widnieje zapis: Dodatkowe strony – on umożliwi Ci zrobienie czego tylko sobie zamarzysz z całym serwisem i bazą danych. Bierzmy się w takim razie do roboty, bo do końca Twojej kadencji admina pozostało już mało czasu.

Show must go on

config.php

Zaczniemy od pobrania hasła do bazy danych. Tą czynność możesz wykonać w każdym momencie adminowania bez żadnych podejrzeń ze strony kolegów (w razie gdyby bez powiadomienia usunęli Cię ze stanowiska – trzeba mieć jakiegoś backdoor’a).

Wchodzimy do panelu administracyjnego i wybieramy Dodatkowe strony z zakładki Zarządzanie treścią (wszystkie działania będziemy przeprowadzać w tej zakładce). Developerzy zabezpieczyli system przed wyprintowaniem wprost wartości $db_user czy $db_pass, ale co to za problem? Skopiujemy dany plik w inne miejsce z rozszerzeniem pozwalającym przeczytać jego zawartość. Warto nadać mu rozszerzenie, które w ewentualnych logach nie będzie wzbudzać podejrzeń, np. .jpg, .png, .gif, etc. Do boxu Zawartość strony wpisujemy następującą treść:

<?php
 echo (int) copy(‘../config.php’, ‘../test.txt’);
?>

Wpisujemy następnie swoje hasło administratora i klikamy na Podgląd. Teraz w katalogu głównym systemu powinien pojawić się plik ‘test.txt’, który możemy otworzyć i przeczytać dane logowania do bazy. Po zakończonym działaniu usuwamy go używając funkcji unlink:

<?php
 echo (int) unlink(‘../test.txt’);
?>

Moje uprawnienia

Co nas ogranicza przed poszerzeniem sobie uprawnień, czy zabraniem statusu admina naszemu przełożonemu? Jak się pewnie domyślasz – nic. Aby zrobić to sprawnie i szybko przydatna jest wiedza nt. poziomów użytkowników oraz kodów uprawnień. Nie będziemy się rozpisywać jaki kod co oznacza – pozostawiamy to jako Twój wkład we własną zemstę. Plan jest taki: nadasz sobie status Główny Administrator wraz ze wszystkimi prawami, a następnie zdegradujesz swojego przełożonego. Dlaczego w tej kolejności? Ponieważ, gdy już będziesz miał najwyższy status wszystkie zadania będziesz mógł przeprowadzić z panelu administracyjnego, nie musząc klepać kodu. Do it!

<?php
 mysql_query("UPDATE " . DB_PREFIX . "users SET user_level = '103', user_rights = 'A.AC.AD.APWR.B.BB.C.CP.DB.DC.D.ERRO.FQ.F.FR.IM.I.IP.M.N.NC.P.PH.PI.PO.ROB.SL.S1.S2.S3.S4.S5.S6.S7.S8.S9.S10.S11.S12.SB.SM.SU.UF.UFC.UG.UL.U.W.WC' WHERE user_name = 'admin_test'");
?>

W tym momencie otrzymałeś pełnię praw Głównego Administratora. Możesz zdegradować kogo chcesz, usunąć, zmienić hasło. Teraz Ty jesteś władcą.

(Un)Happy end

Zbliżamy się do końca seansu. Przykładów wykorzystania naszej nowoodkrytej (dziura została odkryta przeze mnie dawno temu, ale nie było okazji jej zaprezentować) dziury możemy mnożyć i mnożyć. Mówiąc wprost – mając dostęp do edycji stron informacyjnych możesz wszystko. Niektórych rzeczy nie da się zrobić najkrótszą drogą, ale na pewno da się to obejść.

Pamiętaj, to był tylko scenariusz. The World pod żadnym pozorem nie namawia Cię do wykorzystania go przeciwko innym. Zrealizuj swój film przed kolegami, na localhoście, ale nie wykorzystuj powyższego materiału przeciwko nikomu. Nie odpowiadamy za konsekwencje Twoich czynów.


Facebook Twitter Delicious Digg Reddit

Podobne wpisy

Komentarze (4)
  1. Wampirue Odpowiedz

    Wpadłem tu przypadkiem i chciałem z całego serca pogratulować.

    Brawo autorze, udowodniłeś, że będąc adminem można skasować portal.
    Pozostaje teraz tylko udowodnić, że posiadając roota można instalować programy (co jest niebezpieczne), oraz że będąć właścicielem domeny można ją przekierwoać…

    Mam nadzieję, że informacja dotarła.

    PS Równie łatwo jest to zrobić w WordPressie, którego używasz (łamiesz regulamin dystrybucji tak przy okazji)

    • Kobra

      Nie wiem czy przeczytałeś wpis dokładnie. Zostało tutaj pokazane jak łatwo admin niższego szczebla może zwiększyć swoje uprawnienia (to chyba nie jest pożądane, czy się mylę?) i przykładowo usunąć lub zniszczyć stronę internetową.

      Czy mógłbyś wskazać, który punkt regulaminu został złamany?

  2. Tomek Odpowiedz

    Niestety całkiem dużo stron internetowych używa takich skryptów jak właśnie PHP Fusion czy też PHPbb by Przemo, a jak wiadomo są one nierozwijane od jakiegoś czasu i można łatwo wykorzystać wykryte na nich błędy – tak jak w tym przypadku.
    Tomek ostatnio opublikował/a.. Beta Elementary OS Luna wydana

    • Kobra

      PHP Fusion nierozwijany? Ostatnia wersja instalacyjna jest z 16 kwietnia tego roku.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current month ye@r day *

CommentLuv badge