Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Path Traversal regex - jak cofnąć się wstecz bez ../
duch4ever
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Witam, znalazłem ciekawą linijkę w pewnym cmsie i wydaje się być podatny na atak Path Traversal.
Zostało mi jedna rzecz mianowicie mogę dowolnie manipulować adresem i wyświetlić dowolny plik ale nie mogę się cofnąć w drzewie katalogów bo jest na końcu mniejwięcej taki filtr:

  1. $path = dirname(__FILE__).(string)preg_replace('#\.{2,}#', '.', $_GET['xxx']);


Czyli xxx jest filtrowana pod kątem dwóch kropek i zamienia je na jedną.
I tu pytanie czy da się to jakiś obejść (linux)?

Ten post edytował duch4ever 23.04.2016, 23:36:43
Go to the top of the page
+Quote Post
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Jeżeli wszystkie pliki masz w jednym katalogu, wystarczy użyć basename aby wyciągnąć z podanej ścieżki plik:

  1. $path = dirname(__FILE__).basename($_GET['xxx']);
Go to the top of the page
+Quote Post
duch4ever
post
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Nie nie, muszę się cofnąć o kilka katalogów aby pobrać config z hasłami mysql itp. i do tego mogę manipulować tylko zmienną $_GET['xxx']. Dalej w hierarchii nic nie ma tylko pliki html.
Go to the top of the page
+Quote Post
NickOver
post
Post #4





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Na mój rozum jeśli 2 kropki zamienia w jedną, to dając 3 kropki zostaną dwie.
Go to the top of the page
+Quote Post
duch4ever
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Nie, 2 i więcej zamienia na jedną: http://www.phpliveregex.com/p/fsk
Go to the top of the page
+Quote Post
by_ikar
post
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Cytat(duch4ever @ 24.04.2016, 21:41:19 ) *
Nie nie, muszę się cofnąć o kilka katalogów aby pobrać config z hasłami mysql itp. i do tego mogę manipulować tylko zmienną $_GET['xxx']. Dalej w hierarchii nic nie ma tylko pliki html.


Ale to musisz się cofać z poziomu zmiennej GET? Nie możesz tego na sztywno w kodzie umieścić ? Jeżeli będzie to na sztywno w kodzie, a będziesz ze zmiennej GET pobierał tylko nazwę pliku, to basename jest wystarczające. W przeciwnym wypadku żadne wyrażenie ci nie pomoże.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Przez ten filtr nie cofniesz się. Chyba że . zostanie zamieniona na jakiś kod odpowiadający . i ten to przeparsuje poprawnie.
Go to the top of the page
+Quote Post
duch4ever
post
Post #8





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


No właśnie dlatego pytam (IMG:style_emoticons/default/smile.gif) próbowałem zamieniać jak piszą na wiki ale nie działa:

%2e%2e%2f which translates to ../
%2e%2e/ which translates to ../
..%2f which translates to ../
%2e%2e%5c which translates to ..\
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 18:48