1.6 KiB

Django

Manipulacija kešom za RCE

Podrazumevani metod skladištenja keša u Djangou je Python pickles, što može dovesti do RCE ako se neprovereni ulaz ne de-pikluje. Ako napadač može da dobije pristup za pisanje u keš, može da eskalira ovu ranjivost na RCE na osnovnom serveru.

Django keš se skladišti na jednom od četiri mesta: Redis, memoriji, fajlovima, ili bazi podataka. Keš koji se skladišti na Redis serveru ili u bazi podataka su najverovatniji napadački vektori (Redis injekcija i SQL injekcija), ali napadač takođe može da iskoristi keš zasnovan na fajlovima da pretvori proizvoljno pisanje u RCE. Održavaoci su ovo označili kao neproblematično. Važno je napomenuti da će se folder sa keš fajlovima, ime SQL tabele i detalji Redis servera razlikovati u zavisnosti od implementacije.

Ovaj HackerOne izveštaj pruža odličan, reproduktivni primer eksploatacije Django keša koji se skladišti u SQLite bazi podataka: https://hackerone.com/reports/1415436