Saugumas

Atliekant užklausą dėl suklastotų atakų keliose svetainėse

Atliekant užklausą dėl suklastotų atakų keliose svetainėse
CSRF ataka yra ta, kuri priverčia patvirtintus vartotojus atlikti nepageidaujamus veiksmus žiniatinklio programoje, kurioje jie yra patvirtinti. Tai daroma per išorinę svetainę, kurioje vartotojas lankosi ir kuri suaktyvina šiuos veiksmus.

Šiame straipsnyje iš programos gausite reikiamą informaciją, kad sužinotumėte, ką turėtų daryti atakuojanti svetainė, kad nusiųstų galiojančias užklausas pažeidžiamam serveriui. Tada sukursite puslapį, kuris imituos teisėtas užklausas ir apgaus vartotoją apsilankyti tame puslapyje, kol bus patvirtintas. Taip pat atliksite keletą pagrindinių koncepcijos įrodymų pakartojimų, kad tai atrodytų labiau kaip realaus pasaulio ataka, kur auka to nepastebi. Atminkite, kad šio straipsnio kodo failą galite rasti autoriaus github.

Pasiruošimas

Šiam straipsniui jums reikės galiojančios vartotojo paskyros „BodgeIt“. Šiame straipsnyje naudojama [apsaugotas el. paštu] kaip auka:

Kaip tai padaryti…

Pirmiausia turite išanalizuoti prašymą, kurį norite priversti auką pateikti. Norėdami tai padaryti, turite „Burp Suite“ arba kitą naršyklėje sukonfigūruotą tarpinį serverį:

  1. Prisijunkite prie „BodgeIt“ kaip bet kuris vartotojas ir spustelėkite vartotojo vardą, kad pereitumėte į profilį.
  2. Pakeiskite slaptažodį. Peržiūrėkite, kaip užklausa atrodo tarpiniame serveryje:

    Taigi, tai yra POST prašymas http: // 192.168.56.11 / bodgeit / slaptažodis.jsp, ir turi tik slaptažodį ir jo patvirtinimą kūne.

  3. Pabandykite sukurti labai paprastą HTML puslapį, kuris pakartotų šią užklausą. Sukurkite failą (pavadinkite jį csrf-pakeisti slaptažodį.HTML) su tokiu turiniu:







  4. Dabar įkelkite šį failą į tą pačią naršyklę kaip ir prisijungę
  5. Spustelėkite pateikti ir būsite nukreipti į vartotojo profilio puslapį. Tai jums pasakys, kad slaptažodis buvo sėkmingai atnaujintas.
  6. Nors tai įrodo esmę, išorinė svetainė (arba vietinis HTML puslapis, kaip šiuo atveju) gali vykdyti slaptažodžio keitimo užklausą programoje. Vis dar mažai tikėtina, kad vartotojas spustelės Pateikti Galite ją automatizuoti ir paslėpti įvesties laukus, kad kenkėjiškas turinys būtų paslėptas. Dabar sukurkite naują puslapį pagal ankstesnį; Vadink tai „csrf-change-password-scripted“.HTML:


    Visiškai nekenksmingas puslapis


    Galite pasitikėti šiuo puslapiu.
    Nieko blogo nenutiks nei jums, nei jūsų „BodgeIt“ paskyrai.





    Šį kartą formoje yra ID parametras, o puslapyje yra scenarijus, kuris pateiks savo turinį, kai puslapis bus visiškai įkeltas.

  7.  Jei įkelsite šį puslapį toje pačioje naršyklėje, kurioje esate pradėję „BodgeIt“ seansą, jis automatiškai išsiųs užklausą, o po to bus rodomas vartotojo profilio puslapis. Šioje ekrano kopijoje naršyklė Derintojasnustatykite lūžio tašką prieš pat pateikiant užklausą:
  8. Šis paskutinis bandymas atrodo geriau užpuoliko požiūriu. Jums tereikia aukai įkelti puslapį ir prašymas bus išsiųstas automatiškai, bet tada auka pamatys tavo slaptazodis buvo pakeistaspranešimą, ir tai tikrai sukels perspėjimą.
  9. Galite dar labiau patobulinti puolantį puslapį, priversdami jį įkelti atsakymą į nematomą rėmelį to paties puslapio viduje. Yra daug būdų tai padaryti; greitas ir purvinas yra nustatyti rėmelio dydį 0. Jūsų failas atrodys taip:


    Visiškai nekenksmingas puslapis


    Galite pasitikėti šiuo puslapiu.
    Nieko blogo nenutiks nei jums, nei jūsų „BodgeIt“ paskyrai.
    target = "target_frame">





    Atkreipkite dėmesį, kaip tikslinė formos ypatybė yra „iframe“, apibrėžtas tiesiai po juo, ir kad tokio rėmo aukštis ir plotis yra 0%.

  10. Įkelkite naują puslapį į naršyklę, kurioje buvo pradėta sesija. Ši ekrano kopija parodo, kaip puslapis atrodo tikrinant naršyklėje Kurejo irankiai: Atkreipkite dėmesį, kad „iframe“ objektas yra tik juoda linija puslapyje, o „Inspector“ galite pamatyti, kad jame yra „BodgeIt“ vartotojo profilio puslapis.
  11. Išanalizavę tinklo ryšį, kurį vykdo jūsų CSRF puslapis, galite pamatyti, kad jis iš tikrųjų prašo pakeisti „BodgeIt“ slaptažodį:

Kaip tai veikia…

Kai siunčiate užklausą iš naršyklės ir jau turite slapuką, priklausantį tiksliniam domenui, naršyklė pridės slapuką prie užklausos prieš ją išsiunčiant. Štai kodėl slapukai yra tokie patogūs kaip seanso identifikatoriai, tačiau ši HTTP veikimo ypatybė taip pat daro jį pažeidžiamu tokiai atakai, kokią matėte šiame straipsnyje.

Kai įkeliate puslapį toje pačioje naršyklėje, kurioje turite aktyvų seansą programoje, naršyklė prie šios užklausos automatiškai pridės seanso slapuką. Taip nutinka, net jei tai yra kitas skirtukas ar langas, ir šis puslapis pateikia užklausą domenui, kuriame pradedama sesija.

Jei serveris netikrina, ar gautos užklausos iš tikrųjų kilo iš programos, tai leidžia kenkėjiškai svetainei skambinti teisėtų, aktyvių vartotojų vardu, kurie apsilanko šioje kenkėjiškoje svetainėje, tapatybę patvirtinę paskirties domenui.

Atliekant žiniatinklio programų skverbties testą, pirmasis naudojamas kodas, du teksto laukai ir Pateikti mygtuko, gali pakakti, kad būtų parodytas saugos trūkumas. Tačiau programos įsiskverbimo testavimas gali būti kito užduoties, pavyzdžiui, socialinės inžinerijos ar raudonos komandos pratybų, dalis. Tokiu atveju reikės papildomų pastangų, kad nukentėjęs vartotojas negalėtų įtarti, kad kažkas vyksta.

Šiame straipsnyje naudojote „JavaScript“, kad automatizuotumėte užklausos siuntimą, nustatydami įkelties įvykį puslapyje ir vykdydami formos pateikimo metodą įvykių tvarkytojo funkcijoje. Jūs taip pat naudojote paslėptą „iframe“, norėdami įkelti atsakymą į slaptažodžio keitimą, todėl auka niekada nemato pranešimo, kad pasikeitė jo / jos slaptažodis.

Jei jums pasirodė šis straipsnis įdomus, galite jį ištirti „Kali Linux“ žiniatinklio skverbties testavimo knygelė - antrasis leidimas atrasti dažniausiai pasitaikančias interneto spragas ir neleisti joms tapti grėsme jūsų svetainės saugumui. „Kali Linux“ žiniatinklio skverbties testavimo knygelė - antrasis leidimas suteikia jums įgūdžių, reikalingų kiekvienam įsiskverbimo testo etapui - nuo informacijos apie sistemą ir programą rinkimo iki pažeidžiamumų nustatymo atliekant rankinį testavimą.

Atvirojo kodo komercinių žaidimų variklių uostai
Nemokami atvirojo kodo ir įvairių platformų žaidimų varikliai gali būti naudojami žaidžiant senus ir kai kuriuos gana naujus žaidimų pavadinimus. Šiam...
Geriausi „Linux“ komandinės eilutės žaidimai
Komandų eilutė yra ne tik jūsų didžiausias sąjungininkas naudojant „Linux“, bet ir pramogų šaltinis, nes ją galite naudoti norėdami žaisti daug įdomių...
Geriausios „Linux“ skirtos „Gamepad“ žemėlapių sudarymo programos
Jei jums patinka žaisti žaidimus „Linux“ su žaidimų pultu, o ne įprasta klaviatūra ir pelės įvesties sistema, yra keletas jums naudingų programų. Daug...