Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Adminie… Czy znamy Twoje grzechy? ;-) Sprawdź!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Adminie… Czy znamy Twoje grzechy? ;-) Sprawdź!
O XPATH (XML Path Language) pisaliśmy niedawno temu w kontekście jego możliwego wykorzystania w niektórych przypadkach podatności SQL injection.
Podatność XPATH injection jest pewnym stopniu podobna do SQL injection:
Jeśli chodzi o różnice – XPATH injection występuje znacznie rzadziej od SQL injection (XPATH to jednak dość niszowy mechanizm), nie da się tutaj uzyskać uprawnień na poziomie systemu operacyjnego czy uzyskać dostęp w trybie “zapisu” do pliku. Jak już wspomniałem – w porównaniu z SQL-em mamy również inną składnię samych zapytań.
Ewentualne testy z wykorzystaniem zamieszczonych tu informacji należy realizować jedynie na systemach, których bezpieczeństwo możemy oficjalnie sprawdzać.
Małe przypomnienie czym jest XPATH. Otóż jest to mechanizm umożliwiający pobieranie z pliku XML wybranego fragmentu. Zobaczmy przykładowe zapytanie XPATH, które w swoim tutorialu prezentuje w3schools (zapytanie widoczne jest w prawym górnym rogu na zrzucie poniżej):
Jak widzimy, rozpoczyna się ono znakiem / (slash), warunki (odpowiednik WHERE z SQL) – można znaleźć w nawiasach kwadratowych, z kolei ostatni element po slashu to wskazanie jakie konkretne dane chcemy pobrać z XML-a (w przykładzie powyżej są to tytuły książek). Zapytanie powyżej zwraca zatem ciąg będący tytułami dwóch książek, których cena jest większa od 35:
XQuery Kick Start Learning XML
XPATH, poza prostymi zapytaniami jak powyżej, umożliwia użycie w zapytaniu funkcji realizujących:
Przykład zapytania z funkcją:
Pobierze ono ceny wszystkich książek – ponieważ warunek w nawiasach kwadratowych jest zawsze prawdziwy:
Jeszcze innym przydatnym operatorem w XPATH jest | (pipe). Działa on podobnie do operatora UNION z SQL – tj. łączy sumuje zapytań XPATH. Przykład:
Takie zapytanie po prostu wyświetli wszystkie zawartości tagów <year> oraz <title> z pliku XML widocznego na wcześniejszym zrzucie.
W porządku, zobaczmy więc jak wygląda przykładowe wstrzyknięcie XPATH:
Można je też zobaczyć “na żywo” w tym miejscu.
Nasze zadania:
Miłej zabawy :-)
PS
Swoją drogą, jest to jedno z wielu ćwiczeń, które realizują uczestnicy mojego szkolenia z bezpieczeństwa aplikacji www (przy okazji – zapraszam:)
–michal.sajdak<at>securitum.pl
Kolejne ciekawe hackme i kolejna porcja nabytej wiedzy.
Dzięki! :)
P.S.: A swoją drogą to te zaadania z prędkością karabinu wypuszczacie – co bardzo mnie cieszy :D.
Cieszę się że hackme się podoba :)
Co do szybkości, to akurat teraz będzie mała przerwa z zadaniami – w końcu są wakacje ;-p
–ms
Fajne byłoby też takie większe hackme: jedna porządniejsza aplikacja najeżona różnego rodzaju błędami – kto jako pierwszy znalazłby wszystkie (lub kto znalazłby najwięcej w określonym czasie), ten wygrywa :)
Michał: dobry pomysł, choć trzeba na to trochę czasu… pewnie następne hackme w okolicach połowy sierpnia ;-)
–ms
Po wpisaniu ‘or’1’=’1’ w http://training.securitum.com/4/details.php?id=1
otrzymałem :
“Warning: SimpleXMLElement::xpath(): Invalid predicate in /var/www/4/details.php on line 114
Warning: SimpleXMLElement::xpath(): xmlXPathEval: evaluation failed in /var/www/4/details.php on line 114
Not found :-/ ”
LOL
Fajnie wytłumaczone. Dzięki :)
Fajne oby tak dalej!!!