Server Side XSS (Dynamic PDF)
Server Side XSS (Dinamički PDF)
Ako veb stranica kreira PDF koristeći korisnički kontrolisani unos, možete pokušati da prevarite robota koji kreira PDF da izvrši proizvoljni JS kod. Dakle, ako PDF kreator robot pronađe neke vrste HTML tagova, on će ih interpretirati, a vi možete zloupotrebiti ovaj ponašanje da izazovete Server XSS.
Molim vas, obratite pažnju da <script></script>
tagovi ne rade uvek, pa će vam biti potrebna druga metoda za izvršavanje JS koda (na primer, zloupotreba <img
).
Takođe, imajte na umu da ćete u redovnom iskorišćavanju biti u mogućnosti da vidite/preuzmete kreirani PDF, pa ćete moći da vidite sve što pišete putem JS-a (koristeći document.write()
na primer). Ali, ako ne možete videti kreirani PDF, verovatno ćete morati izvući informacije praveći web zahtev ka sebi (Slepi).
Popularna generacija PDF-a
wkhtmltopdf je poznat po svojoj sposobnosti da konvertuje HTML i CSS u PDF dokumente, koristeći WebKit render mašinu. Ovaj alat je dostupan kao open-source komandna linija, što ga čini dostupnim za širok spektar aplikacija.
TCPDF nudi robustno rešenje unutar PHP ekosistema za generisanje PDF-a. On je sposoban za rukovanje slikama, grafikama i enkripcijom, što pokazuje njegovu sposobnost za kreiranje složenih dokumenata.
Za one koji rade u Node.js okruženju, PDFKit predstavlja prihvatljivu opciju. Omogućava generisanje PDF dokumenata direktno iz HTML-a i CSS-a, pružajući most između web sadržaja i formata za štampanje.
Java programeri mogu preferirati iText, biblioteku koja ne samo da olakšava kreiranje PDF-a, već podržava i napredne funkcionalnosti poput digitalnih potpisa i popunjavanja formulara. Njegov obuhvatan skup funkcionalnosti čini ga pogodnim za generisanje sigurnih i interaktivnih dokumenata.
FPDF je još jedna PHP biblioteka, koja se ističe svojom jednostavnošću i lakoćom korišćenja. Namijenjena je programerima koji traže jednostavan pristup generisanju PDF-a, bez potrebe za naprednim funkcionalnostima.
Payloadi
Otkrivanje
SVG
Bilo koji od prethodnih ili sledećih payloada može se koristiti unutar ovog SVG payloada. Jedan iframe koji pristupa Burpcollab poddomenu i još jedan koji pristupa metadata endpointu su dati kao primeri.
Možete pronaći mnogo drugih SVG payloada na https://github.com/allanlw/svg-cheatsheet
Otkrivanje putanje
Učitajte spoljni skript
Najbolji način za iskorišćavanje ove ranjivosti je zloupotreba ranjivosti kako bi se naterao bot da učita skriptu kojom vi upravljate lokalno. Zatim ćete moći da lokalno promenite payload i naterate bota da ga učita sa istim kodom svaki put.
Čitanje lokalne datoteke / SSRF
Promenite file:///etc/passwd
u http://169.254.169.254/latest/user-data
na primer da pokušate da pristupite spoljnoj veb stranici (SSRF).
Ako je SSRF dozvoljen, ali ne možete da pristupite zanimljivom domenu ili IP adresi, proverite ovu stranicu za potencijalne zaobilaženja.
Kašnjenje robota
U nekim situacijama, prilikom izvođenja napada, može biti korisno dodati kašnjenje između svake iteracije kako bi se izbeglo otkrivanje i sprečilo blokiranje od strane ciljnog servera. Ovo se naziva "bot delay" ili kašnjenje robota.
Da biste implementirali kašnjenje robota, možete koristiti funkciju sleep()
ili slične metode u programskom jeziku koji koristite za izvršavanje napada. Ova funkcija će privremeno zaustaviti izvršavanje programa na određeno vreme pre nego što nastavi sa sledećom iteracijom.
Na primer, u Pythonu možete koristiti biblioteku time
i funkciju sleep()
kako biste postavili kašnjenje između iteracija. Evo kako to možete uraditi:
Ovo će zaustaviti izvršavanje programa na 1 sekundu pre nego što nastavi sa sledećom iteracijom. Možete prilagoditi vreme kašnjenja prema potrebama i zahtevima napada.
Važno je napomenuti da kašnjenje robota može biti korisno u određenim situacijama, ali nije uvek neophodno ili efikasno. Treba pažljivo proceniti kada je potrebno koristiti kašnjenje robota kako bi se postigao optimalan rezultat napada.
Skeniranje portova
Port skeniranje je proces koji se koristi za identifikaciju otvorenih portova na ciljnom računaru ili mreži. Ova tehnika omogućava hakerima da otkriju ranjive tačke ulaza i izlaza, kao i da identifikuju servise koji su dostupni na ciljnom sistemu.
Da biste izvršili port skeniranje, možete koristiti različite alate kao što su Nmap, Masscan ili Zmap. Ovi alati šalju mrežne zahteve na određene portove i analiziraju odgovore kako bi utvrdili da li su portovi otvoreni, zatvoreni ili filtrirani.
Port skeniranje može biti korisno u procesu testiranja penetracije, jer omogućava identifikaciju potencijalnih ranjivosti i slabosti u mrežnoj infrastrukturi. Međutim, važno je napomenuti da port skeniranje može biti nezakonito ako se izvodi bez dozvole vlasnika sistema ili mreže.
Kada izvršavate port skeniranje, važno je biti pažljiv i poštovati zakonske propise. Uvek se preporučuje da imate pisanu dozvolu od vlasnika sistema ili mreže pre nego što izvršite bilo kakvo skeniranje portova.
Ova ranjivost se može vrlo lako transformisati u SSRF (jer možete učitati spoljne resurse pomoću skripte). Pokušajte je iskoristiti (pročitajte neke metapodatke?).
Prilozi: PD4ML
Postoje neki HTML 2 PDF engine-i koji omogućavaju specificiranje priloga za PDF, kao što je PD4ML. Možete zloupotrebiti ovu funkcionalnost da priložite bilo koji lokalni fajl PDF-u. Da biste otvorili prilog, otvorio sam fajl sa Firefox-om i dvaput kliknuo na simbol spajalice da bih sačuvao prilog kao novi fajl. Snimanje PDF odgovora sa Burp-om takođe bi trebalo da prikaže prilog u čistom tekstu unutar PDF-a.
Reference
Last updated