Aktywne Wpisy
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
niezdiagnozowany +316
My nie wiedzieli my nie chcieli my myśleli, że kobieta ma tyle praw ile stary niepotrzebny mebel. My przepraszamy.
#anastazjazgrecji
#anastazjazgrecji
Aktywne Znaleziska
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
Kontynuujemy naszą podróż w cyklu #od0dopentestera dzisiaj język #ruby
Czasami w naszych firmach nie możemy wejść na niektóre strony ponieważ są one zablokowane na firewallu.
Dlatego też stworzymy naszą własną bramkę proxy.
class ProxyServlet < WEBrick::HTTPServlet::AbstractServlet
def do_GET (request, response)
open(request.query["url"]) do |http|
result = http.read
response.body = result
end
end
end
Użytkownik podaje parametr
url
który jest następnie przekazywany do funkcjiopen
.Ona to pobiera treść witryny i wyświetla jej treść na stronie.
W tym kodzie znajdują się aż 2 podatności.
Pierwsza:
open
traktuje ciąg znaków zaczynający się odpipe
(czyli|
) jako komendę, którą ma wykonać w konsoli.Jeżeli więc przekażemy:
?url=|cmd
to zamiast treści strony internetowej wyświetlona zostanie lista plików w katalogu.Więcej o tym błędzie można przeczytać tutaj.
Druga podatność to #ssrf
Nic bowiem nie stoi na przeszkodzie aby atakujący jako adres podał
http://localhost
.Jeśli więc na naszym serwerze znajduje się jakaś inna usługa, która nie jest dostępna z zewnątrz, można podglądnąć jej treść.
#programowanie #informatyka #it #hacking #bezpieczenstwo
Trzeba tam bowiem pamiętać o przekierowaniach, które również mogą być niebezpieczne.
Regexpy powinny dać radę o ile używamy
\A\z
do zaznaczania początku i końca tekstu zamiast^$
"|dir;\n[https://wykop.pl](https://wykop.pl)" =~ /^http/
działa bowiem bez problemówWięcej: tu, tu i tu.
Komentarz usunięty przez autora