Express Prototype Pollution Gadgets
WhiteIntel je dark-web pretraživač koji nudi besplatne funkcionalnosti za proveru da li je kompanija ili njeni korisnici kompromitovani od strane kradljivih malvera.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za besplatno na:
Posluži XSS odgovore
Za dalje detalje pogledajte originalno istraživanje
Promeni JSON content-type u HTML
U Express aplikaciji koristeći JSON content type odgovor i reflektujući JSON:
U ovim slučajevima XSS obično nije moguć sa JSON sadržajem. Međutim, pomoću prototype pollution-a možemo zbuniti Express da posluži HTML odgovor. Ova ranjivost se oslanja na aplikaciju koja koristi res.send(obj)
i koristi body parser sa application/json sadržajem.
Kroz zagađivanje svojstava body
i _body
, moguće je izazvati da Express posluži sadržaj HTML tipa i odrazi svojstvo _body
, što rezultira sačuvanim XSS-om.
Renderovanje UTF7
Moguće je naterati express da renderuje UTF-7 sadržaj sa:
Bezbedne tehnike skeniranja
JSON razmaci
Sledeći PP će učiniti da atributi unutar JSON-a imaju dodatni razmak koji neće narušiti funkcionalnost:
Zatim će reflektovani JSON izgledati ovako:
Izloženi zaglavlja
Sledeći PP gedžet će naterati server da pošalje nazad HTTP zaglavlje: Access-Control-Expose_headers: foo
Potrebno je da je CORS modul instaliran
OPTIONS Metod
Sa sledećim payload-om, moguće je sakriti metod iz OPTIONS odgovora:
Status
Moguće je promeniti vraćeni statusni kod koristeći sledeći PP payload:
Greška
Kada dodelite prototipu primitivnu vrednost poput stringa, to proizvodi operaciju bez efekta jer prototip mora biti objekat. Ako pokušate da dodelite prototipni objekat samom Object.prototype
, to će izazvati izuzetak. Možemo koristiti ova dva ponašanja da bismo detektovali da li je prototipno zagađenje uspešno:
Reflektovana vrednost
Kada aplikacija uključi objekat u svoj odgovor, kreiranje atributa sa neobičnim imenom pored __proto__
može biti informativno. Konkretno, ako je samo neobični atribut vraćen u odgovoru, to bi moglo ukazivati na ranjivost aplikacije:
Osim toga, u scenarijima gde se koristi biblioteka poput Lodash-a, postavljanje svojstva i putem proto-izmena (PP) i direktno unutar objekta nudi još jedan dijagnostički pristup. Ako je takvo svojstvo izostavljeno iz odgovora, to sugeriše da Lodash proverava postojanje svojstva u ciljnom objektu pre spajanja:
Razno
Dozvoli tačke
Postoji opcija u Express-u koja vam omogućava da kreirate objekte iz parametara upita u nizu. Svakako biste je mogli koristiti u lancu grešaka da iskoristite ranjivost prototipa zagađenja.
?foo.bar=baz
kreira objekat u Node-u.
Reference
WhiteIntel je pretraživač na tamnom webu koji nudi besplatne funkcionalnosti za proveru da li je kompanija ili njeni korisnici ugroženi od malvera koji krade podatke.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za besplatno na:
Last updated