
MS-Proxy
2.0 server için sağlam bir DOS attack var!
Bu durum client`ın proxy üzerinden bağlantısını abort etmesi ve proxy serverin
remote servera bağlantısının RESET lenmemesi durumunda ortaya cıkıyor.
Bu genelde ftp request lerinde karşılaşılan bi durum gibi görünüyor.
Mesela saldıran kişi Web Proxy servisine bir HTTP GET ftp:// request
göndererek karşı hostun 19. portuna (Chargen servisi) bağlantı yapmaya kalkıp,
("GET ftp://some.server.com:19/ HTTP/1.0\n\n") Proxy serverdan bir cevap
gelmeden bağlantıyı iptal eder. Proxy remote servera yaptığı bağlantıyı açık
tutar ve data`yı sürekli olarak almaya devam eder. Bu da sonuç olarak inetinfo.exe
işlemlerinin %100 de calışmasına ve devamlı olarak bir hafıza kullanımı
artışına sebep olur.
25 dakikalık bir kullanım sonrası hafıza kullanımı 5000k dan 37000k ya
tırmanır.
Bu olay NT Server 4 (SP3 + Hotfixler), IIS 3.0 ve nete 33600 kbps ile baglı
bir MS Proxy 2.09 uzerinde test edilmiştir.
Aslında bu belkide bir saldırı amaçlı bile olmayabilir - Örneğin, eğer bir
kullanıcı web browserindan, A HREF="ftp://some.server.com/bigfile.exe"
seklinde linkli, 40mb lik bir dosyayı download etmeye karar verip sonra Proxy
cevap vermeden browserinda STOP a basarsa bu da aynı etkiyi yapacaktır. Böyle
bir durumda Web Proxy Servis`i Internet Service Manager`dan
durdurulamayacaktır.
NT Resource Kit`indeki kill.exe`yi kullanıp Web Proxy Servisi killeyip
kapatmalısınız.
Korunma :
a) MS-Proxy's servislerini sadece güvenilen ve yetkisi olan insanların
kullandığından emin olun.
b) Calışanlarınızın işlerini yapabilmesi için ihtiyacınız olan servislerin
dışarı çıkış trafiğini sınırlayın.örneğin, paket filter ile dışarıya cıkan her
trafiğe izin vermeyin.
Ben Microsoft`dan bu konuda ,client bağlantısı abort edildiğinde proxy den
remote servera bağlantının da abort edilmesini sağlıycak bir fix cıkarmalarını
isterdim. Çünkü yukardaki olaylar bazı muşteriler tarafından görulemeyebilir.
+-+-+-+-+-
Görünüşe göre sadece MS Proxy değil hemen hemen tüm web proxyler bu saldırıya
açık. Bu konuda yaptıkları testler için Greg Jones ve diğerlerine teşekkürler.
Microsoft's Proxy Server 2 ile oynarken eğer enabled ise, paketlerin by-pass
edilmesine izin vericek ilgi çekici bir özellik buldum.
Exploit, remote host`un belirlenen portuna bağlanmakla oluyor. Örnekte Web
Proxy servisi uzerinden SMTP portunu (25) kullandım.
Web-proxy TCP port 80 `i dinliyor. Bu porta telnet yapıp bir http request
yaptım. Burda yapmak istediğimiz servise ait komutları HTTP headerları olarak
göndermek. Aşagıda , web proxy servisine telnet yapıp, GET request`i ile SMTP
komutlarını HTTP headerlarıymış gibi kullandım
------------------------------------------8<--------------------------------
telnet web-proxy:80
GET http://smtpmail.globalnet.co.uk:25/ HTTP/1.0
mail from:
[email protected]
rcpt to:
[email protected]
data :
Subject: Burasi subject satiri :P
Burasıda mesajın yazıldığı yer. buraya gelebilmek için bir CTRL+J yapmanız
gerek. Satıra tek bir nokta koymak icin bidaha
CTRL+J yapmanız gerek.
220 sand2.global.net.uk ESMTP Exim 1.92 #1 Wed, 7 Oct 1998 06:51:37 +0100
500 Command unrecognized
500 Command unrecognized
500 Command unrecognized
250 <[email protected]> is syntactically correct
250 <[email protected]> is syntactically correct
354 Enter message, ending with "." on a line by itself
250 OK id=0zQmVd-0007md-00
500 Command unrecognized
500 Command unrecognized
Burdaki olay, proxy`nin, başında : olan bir satırı gidiceği yere göndermesi.
Proxy ayrıca kendi HTTP headerlarinida ekler (Via: proxy_ismi, Host: final_destiantion,
Connection: Keep-Alive) ki bu yüzden bazı "Command Unrecognised" lar
görüyoruz.
FTP yada POP3 türü bir servis için bütün komutları bi arada yapabilirsiniz.
GET http://herhangi.bir.server:21_or_110/ HTTP/1.0
:(CTRL+J)
user birisi(CTRL+J)
pass bişiler(CTRL+J)
stat(CTRL+J)
etc = etc ve ENTER a basarak bitirin.
Not- herşey biriktiriliyor ve enter`a iki kere bastığınızda hedefe bir kerede
gidiyor. Hedef headerları buffer`liyor ve onları sırasıyla yapıyor. Yani
kısaca komutlarımızı proxy`ye HTTP headerlar`ı gibi gösterip geçiriyoruz.
Evet, bu nasıl olduğu, şimdi bununla neler yapilabilir?
Konfigürasyonuna bağlı olarak, sadece port 80`e gelen requestlere izin veren
bir proxy server üzerinden saldıran kişiler servislere ve makinelere
erişebilirler. Proxy`ye bi kere girdiğinizde requestler, "korunmuş" lokal
ağınıza, paket filter yokmuş gibi gidebilir.
Herkesin erişimine açık proxylerden internetteki diğer makinalara saldırılar
yapılabilir ve hedef makinada saldıranın kendi IP si görünmez.
Bu atak IP adresine dayalı izinlerle işleyen güvenlik sistemlerine karşı
kullanılabilir.
Aslında bu olay daha birçok şekilde yapılabilir. En son olarak size aşağıdaki
gibi bir çözüm önerebilirim.
Proxy portunu degiştirmek bir işe yaramıyacağından bunun yerine proxy`nin
bilinmeyen headerları filtrelemesini sağlamalısınız.
Örneğin, çoğu browser bir "User-Agent" header`i belirler-proxy bunu geçirmeli-
ama "mail from: [email protected]" gibi standart olmayan bir HTTP header`i remove
etmesi lazım. Ayrıca hex değeri \x08 (CTRL+J) olan headerları da cıkarmalı.
(Aşağıdaki olayın gercekleşmemesi için)
User-Agent: Mozilla/2.0(CTRL+J)
Komut 1(CTRL+J)
Komut 2(CTRL+J)
Komut 3(CTRL+J)
falan filan
Ana Sayfaya Dön