Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Vienas iš saugumo specialisto privalumų yra darbas su daugybe komandų. Po audito saugos specialistai turės galimybę dirbti su duomenų bazių administratoriais ir analitikais. Kad programa veiktų tinkamai ir saugiai, šios komandos bando pašalinti saugumo spragas, kurios turi bendrą pagrindą. Dialogai tarp šių komandų kelia tam tikrų problemų, susijusių su tikru IP.

Tarpinio serverio ir tikrojo IP sąvokos

Šiandienos žiniatinklio programos veikia keliuose programų serveriuose ir duomenų bazių sistemose. Įsivaizduokite, kad du programų serveriai dalijasi tuo pačiu šaltinio kodu. Priklausomai nuo apkrovos situacijos, vartotojo užklausas gali patenkinti bet kuris iš šių serverių. Apkrovos balansavimo mechanizmas, kuris apdoroja HTTP užklausas prieš programų serverius, nusprendžia, kurią užklausą persiųsti į kurį programos serverį. Tai kelia didelį klausimą tarpinės programinės įrangos sistemų administratoriams ir programinės įrangos kūrėjams: koks yra tikrasis vartotojo IP adresas?

instagram viewer

Tarpiniai serveriai yra atsakingi už duomenų perdavimą tarp dviejų sistemų. Apkrovos balansavimo priemonė yra mechanizmas, atsakingas už tarpinį serverį. Kitaip tariant, tik viena sistema palaiko ryšį ir su vartotoju, ir su programų serveriu. Kalbant apie tinklo srautą, žiniatinklio A arba žiniatinklio B serveriai visada bendrauja su apkrovos balansavimo priemonės IP adresu. Tą patį galima pasakyti ir apie vartotojus. Saugos specialistams apkrovos balansavimo priemonės sukelia rimtų problemų laiku pagrįstos SQL injekcijos atakose. Bet čia daugiausia dėmesio skiriama IP klastojimui.

X-Forwarded-For ir IP ryšys

Apsvarstykite ryšį tarp X-Forwarded-For, kūrėjo ir tarpinės programinės įrangos. Pavyzdžiui, tarkime, kad programos kūrėjo užduotis yra įrašyti visą veiklą, pvz., neteisingus vartotojų bandymus įvesti slaptažodį, su savo IP adresais. Iš pradžių kūrėjas nustatys vartotojo IP adresą, kai bus patenkinta HTTP užklausa galimybė, kurią suteikia jo naudojama programavimo kalba, ir bandys toliau naudoti šiuos duomenis taikymas.

Kadangi jo IP adresas bus fiksuotas viso kūrimo proceso metu, bandymų metu jis visada matys tą patį adresą, nes paprastai vartotojų kompiuteriai įmonių tinklai dirba su statiniu IP per MAC adresą. Įrenginys atliks kai kuriuos priėmimo testus; tačiau su jais kils problemų. Bandymo įrenginys perduos šią problemą programinės įrangos kūrėjui.

Šiame etape kūrėjas gali parašyti valdiklį kūrimo aplinkoje ir matyti HTTP užklausą, perduodamą programai neapdorota forma, nes visi turi tą patį IP adresą. Tai leis dirbti su X-Forwarded-For.

Antraštės informacija X-Forwarded-For bus išsiųstas į programų serverį. Šiame etape programinės įrangos kūrėjas matys savo IP adresą, kurį valdo ipconfig, o ne apkrovos balansavimo priemonę, kurią mato žurnaluose. Daugelis programuotojų mano, kad jie gali išspręsti šią problemą naudodami tokį kodo bloką:

funkcijagauti IP adresą() {
$ipKeys = masyvas(
„HTTP_CLIENT_IP“,
„HTTP_X_FORWARDED_FOR“,
„HTTP_X_FORWARDED“,
„HTTP_X_CLUSTER_CLIENT_IP“,
„HTTP_FORWARDED_FOR“, „HTTP_FORWARDED“,
„REMOTE_ADDR“
);
kiekvienam ($ ipKeys kaip $key) {
jeigu (masyvo_key_exists($key, $_SERVER) tiesa) {
kiekvienam (sprogti (',', $_SERVER[$key]) kaip $ip) {
$ip = trim($ip);
jeigu (validate_ip($ip)) {
grąžinti $ip;
}
}
}
}
grąžintiisset($_SERVER[„REMOTE_ADDR“])? $_SERVER[„REMOTE_ADDR“]: klaidinga;
}

To nepakaks – kūrėjas turi patikrinti, ar gaunama reikšmė yra galiojantis IP adresas.

Viskas, kas nurodyta aukščiau, priklausė tai daliai, kurią tvarkė kūrėjas. Tačiau norint, kad programa veiktų tinkamai ir saugiai, komandos – teoriškai dirba kartu, bet ne realybėje, kraštutiniuose taškuose vienas nuo kito – pabandykite susidoroti su saugumo spragomis, kurios turi a bendras pagrindas. Dabar pabandykite pažvelgti į problemą iš asmens, atsakingo už apkrovos balansavimo priemonės konfigūravimą, perspektyvos.

Sistemos administratoriai gali manyti, kad kūrėjai įrašo informaciją, pvz., X-Forwarded-For, nes HTTP užklausos duomenimis negalima pasitikėti. Tie administratoriai dažnai perduoda X-Forwarded-For; tačiau jie taip pat perduoda užklausą išsiuntusios sistemos TCP šaltinio adresą kaip antrąją antraštės reikšmę. „True-Client-IP“ struktūra yra geras to pavyzdys.

Kai sujungiate visus šiuos dalykus, du skirtingi įrenginiai eina skirtingais keliais ta pačia problema, vadinama kliento IP klastojimu. Rezultatas yra kritinė problema, kai IP registravimas ir IP pagrįstas autorizavimas neveiks.

Kaip skverbties testuose aptinkamas kliento IP klastojimas?

Dauguma įsiskverbimo tikrintojų saugumo patikrai naudoja „Firefox“. Jie sukonfigūruoja „Firefox“ naudodami paprastą priedą X-Forwarded-For: 127.0.0.1 visoms HTTP užklausoms. Taigi, galimybė aptikti tokius pažeidžiamumus visuose prasiskverbimo testuose didėja. Atlikdamas auditą pagal OWASP kontrolinis sąrašas užtikrina, kad patikrintumėte, ar nėra tokių pažeidžiamumų. Tačiau norint aptikti X-Forwarded-For pažeidžiamumą, programoje reikalingas modulis, rodantis jūsų IP adresą arba atliktus veiksmus.

Kaip išspręsti „X-Forwarded-For“ pažeidžiamumą

Organizacijoms reikalingas privalomas saugus programų kūrimo dokumentas visoms programinės įrangos komandoms ir užsakomųjų paslaugų įmonėms. Pavyzdžiui, jei jums reikia vartotojo IP adreso, įmonė turėtų planuoti iš anksto ir nustatyti antraštės informacijos taisyklę, kurią ji čia naudos. Priešingu atveju skirtingos komandos gamins skirtingus sprendimus. Jei tokios situacijos nepavyks išspręsti, pradės veikti užsakomosios programos, todėl bus sunku išmatuoti šaltinio kodus. Apskritai įmonės tokiu keliu eiti nenori.

Tačiau norėdami išspręsti šią problemą, galite naudoti šią F5 taisyklę:

kai HTTP_REQUEST {
HTTP:: antraštės pašalinimas X-Forwarded-Dėl
HTTP:: antraštės įterpimas X-Forwarded-Dėl [IP:: nuotolinis_adresas]
}

Tai pašalina HTTP užklausos lauką X-Forwarded-For iš išorinio pasaulio. Tada jis perduoda užklausą pridėdamas užklausą siuntusios sistemos IP adresą. Tokiu būdu sukuriamas patikimas sąrašas programinei įrangai, kuri veikia pagal X-Forwarded-For.

Apibendrinant, didžiausias tikslas čia yra atlikti kai kuriuos HTTP užklausų patikrinimus ir sukurti patikimą aplinką. Aukščiau pateiktas kodo blokas yra geras pavyzdys, kurį galite naudoti.

Kibernetinio saugumo sistemos ir dokumentacija įmonėms

Vienetai, kurie atrodo nepriklausomi vienas nuo kito, iš tikrųjų yra visumos dalys. Štai kodėl viskas turi veikti sistemingai. Tarp kiekvieno vieneto turi būti taikomos iš anksto nustatytos taisyklės. Jei tokia veikianti sistema nepriimama, gali kilti daug problemų, pvz., X-Forwarded-For pažeidžiamumas. Tam reikia iš anksto viską apgalvoti ir naudoti kuo išsamesnę dokumentaciją.

Ir kiekvienas šios didelės sistemos padalinys turi priimti ir įdiegti kibernetinio saugumo sistemas. Jūsų išeities taškas turėtų būti ištirti ir išmokti šių sistemų veikimo logiką.