Güvenlik uzmanı olmanın faydalarından biri de çok sayıda ekiple çalışmaktır. Güvenlik uzmanları, bir denetimden sonra veritabanı yöneticileri ve analistlerle çalışma fırsatı yakalar. Bir uygulamanın düzgün ve güvenli bir şekilde çalışabilmesi için bu ekipler ortak bir zemine sahip olan güvenlik açıklarını gidermeye çalışırlar. Bu ekipler arasındaki diyaloglar, gerçek IP ile ilgili bazı sorunları gündeme getiriyor.
Proxy ve Gerçek IP Kavramları
Günümüzün web uygulamaları, birden çok uygulama sunucusunda ve veritabanı sisteminde çalışır. Aynı kaynak kodunu paylaşan iki uygulama sunucusu düşünün. Kullanıcıdan gelen istekler, yük durumuna bağlı olarak bu sunuculardan herhangi biri tarafından karşılanmaya hazırdır. HTTP isteklerini uygulama sunucularının önünde işleyen yük dengeleme mekanizması, hangi isteğin hangi uygulama sunucusuna iletileceğine karar verir. Bu, ara yazılım sistem yöneticileri ve yazılım geliştiriciler için büyük bir soruyu gündeme getiriyor: kullanıcının gerçek IP adresi nedir?
Proxy'ler, iki sistem arasında veri iletmekten sorumludur. Yük dengeleyici, proxy'den sorumlu mekanizmadır. Başka bir deyişle, yalnızca bir sistem hem kullanıcı hem de uygulama sunucusu ile iletişim kurar. Ağ trafiği açısından, web A veya web B sunucuları her zaman yük dengeleyicinin IP adresi ile iletişim kurar. Aynı şey kullanıcılar için de söylenebilir. Güvenlik uzmanları için yük dengeleyiciler, zamana dayalı SQL enjeksiyon saldırılarında ciddi sorunlara neden olur. Ama Buradaki ana odak IP sahtekarlığıdır.
X-Forwarded-For ve IP İlişkisi
X-Forwarded-For, geliştirici ve ara yazılım arasındaki ilişkiyi düşünün. Örneğin bir uygulamanın geliştiricisinin görevi, kullanıcıların yaptığı hatalı parola denemeleri gibi tüm etkinlikleri IP adresleri ile kayıt altına almak olsun. İlk başta geliştirici, HTTP isteği karşılandığında kullanıcının IP adresini belirleyecektir. kullandığı programlama dilinin sağladığı imkan ve bu verileri gelecekte de kullanmaya devam etmeye çalışacaktır. başvuru.
IP adresi geliştirme süreci boyunca sabitleneceği için testler sırasında hep aynı adresi görecektir çünkü genellikle kullanıcı bilgisayarları kurumsal ağlar statik IP ile çalışır MAC adresi üzerinden. Birim bazı kabul testleri yapacaktır; ancak bunlarla ilgili sorunlar olacaktır. Test birimi bu sorunu yazılımcıya iletecektir.
Bu aşamada geliştirici, geliştirme ortamında bir controller yazabilir ve herkesin IP adresi aynı olduğu için uygulamaya iletilen HTTP isteğini ham halde görebilir. Bu, X-Forwarded-For ile çalışmaya neden olacaktır.
Başlık bilgileri X-Forwarded-For adı verilen uygulama sunucusuna gönderilecektir. Bu aşamada yazılımcı loglarda gördüğü yük dengeleyiciyi değil ipconfig ile kontrol ettiği IP adresini görecektir. Birçok programcı, bu sorunu aşağıdaki gibi bir kod bloğu ile çözebileceklerini düşünür:
işlevIPadresi al() {
$ipKeys = sıralamak(
"HTTP_CLIENT_IP",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_X_CLUSTER_CLIENT_IP",
"HTTP_FORWARDED_FOR", "HTTP_FORWARDED",
"UZAK_ADDR"
);
her biri için ($ipAnahtarları gibi $anahtar) {
eğer (array_key_exists($key, $_SERVER) doğru) {
her biri için (patlamak(',', $_SERVER[$anahtar]) gibi $ ip) {
$ip = kırp($ip);
eğer (validate_ip($ip)) {
geri dönmek $ip;
}
}
}
}
geri dönmekisset($_SERVER["UZAK_ADDR"])? $_SERVER["UZAK_ADDR"]: YANLIŞ;
}
Bu yeterli olmayacaktır; geliştiricinin gelen değerin geçerli bir IP adresi olup olmadığını kontrol etmesi gerekir.
Yukarıdaki her şey, geliştirici tarafından yönetilen kısma aitti. Ancak bir uygulamanın düzgün ve güvenli bir şekilde çalışması için, teoride birlikte çalışan ekipler, ancak gerçeklik, birbirinden uç noktalarda — güvenlik açıklarıyla başa çıkmaya çalışın ortak temel. Şimdi konuya yük dengeleyicinin konfigürasyonundan sorumlu kişinin bakış açısından bakmaya çalışın.
Sistem yöneticileri, HTTP isteğindeki verilere güvenilemeyeceği için geliştiricilerin X-Forwarded-For gibi bilgileri kaydettiğini düşünebilir. Bu yöneticiler genellikle X-Forwarded-For; ancak ikinci bir başlık değeri olarak talebi gönderen sistemin TCP kaynak adresini de iletirler. True-Client-IP yapısı buna iyi bir örnektir.
Tüm bunları bir araya getirdiğinizde, iki farklı birim, istemci IP sahtekarlığı olarak bilinen aynı sorun için farklı yollar izler. Sonuç, hiçbir IP kaydının ve IP tabanlı yetkilendirmenin çalışmayacağı kritik bir sorundur.
Sızma Testlerinde Client IP Spoofing Nasıl Tespit Edilir?
Çoğu penetrasyon testi uzmanı, güvenlik kontrolleri için Firefox'u kullanır. Firefox'u tüm HTTP istekleri için basit bir X-Forwarded-For: 127.0.0.1 eklentisiyle yapılandırırlar. Ve böylece, tüm sızma testlerinde bu tür güvenlik açıklarını tespit etme olasılığı artar. Yönetmeliğe göre denetim yapmak OWASP Kontrol Listesi bu tür güvenlik açıklarını kontrol etmenizi sağlar. Ancak X-Forwarded-For güvenlik açığını tespit etmek için uygulamada IP adresinizi veya yapılan işlemleri gösteren bir modüle ihtiyacınız var.
X-Forwarded-For Güvenlik Açığı Nasıl Çözülür?
Kuruluşların, tüm yazılım ekipleri ve dış kaynak kullanan şirketler için zorunlu bir güvenli uygulama geliştirme belgesine ihtiyacı vardır. Örneğin bir kullanıcı IP adresine ihtiyacınız varsa firma önceden planlamalı ve burada kullanacağı header bilgisini bir kural haline getirmelidir. Aksi takdirde farklı ekipler farklı çözümler üretecektir. Böyle bir durumla baş edilemez ise dış kaynak uygulamaları devreye girerek kaynak kodlarının ölçülmesini zorlaştıracaktır. Genelde firmalar böyle bir yol izlemek istemezler.
Ancak bu sorunu çözmek için aşağıdaki F5 kuralını kullanabilirsiniz:
ne zaman HTTP_REQUEST {
HTTP:: başlığı kaldır X-Forwarded-İçin
HTTP:: başlık ekleme X-Forwarded-İçin [IP:: uzak_addr]
}
Bu, HTTP isteğindeki X-Forwarded-For alanını dış dünyadan kaldırır. Daha sonra kendisine isteği gönderen sistemin IP adresini ekleyerek isteği iletir. Böylece X-Forwarded-For'a göre hareket eden yazılımlar için güvenilir bir liste oluşturulur.
Özetlemek gerekirse buradaki en büyük amaç HTTP istekleri üzerinde bazı kontroller yapmak ve güvenilir bir ortam oluşturmaktır. Yukarıdaki kod bloğu bunun için kullanabileceğiniz güzel bir örnek.
İşletmeler için Siber Güvenlik Çerçeveleri ve Dokümantasyonu
Birbirinden bağımsız gibi görünen birimler aslında bir bütünün parçalarıdır. Bu yüzden her şeyin sistemli bir şekilde çalışması gerekiyor. Her birim arasında önceden belirlenen kurallar uygulanmalıdır. Böyle çalışan bir sistem benimsenmezse X-Forwarded-For zafiyeti gibi birçok sorun ortaya çıkabilir. Bunun için her şey önceden düşünülmeli ve olabildiğince kapsamlı dokümantasyon kullanılmalıdır.
Ve bu büyük sistemdeki her birimin siber güvenlik çerçevelerini benimsemesi ve uygulaması gerekiyor. Başlangıç noktanız bu çerçevelerin çalışma mantığını araştırmak ve öğrenmek olmalıdır.