2. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
İÇİNDEKİLER
1. Giriş..............................................................................................................................3
Log Analizine Giriş.............................................................................................................3
Web Sunucularında Log Analizi..........................................................................................4
Apache..................................................................................................................................... 4
Log Kayıtları .....................................................................................................................................4
Saldırı Nasıl Gerçekleşti? .................................................................................................................5
Nginx ....................................................................................................................................... 7
Log Kayıtları .....................................................................................................................................7
Saldırı Nasıl Gerçekleşti? .................................................................................................................7
IIS ............................................................................................................................................ 8
Web Sunucularına Yönelik Saldırılar ..................................................................................9
Uygulama Sunucuları................................................................................................................ 9
Tomcat.............................................................................................................................................9
GlassFish ........................................................................................................................................12
Jboss ..............................................................................................................................................16
Web Uygulamaları.................................................................................................................. 19
Injection.........................................................................................................................................19
Broken Authentication and Session Management .......................................................................23
Cross-Site Scripting (XSS)...............................................................................................................26
Security Misconfiguration .............................................................................................................29
Cross-Site Request Forgery (CSRF) ................................................................................................29
Sunucu Zafiyetleri...........................................................................................................31
Apache................................................................................................................................... 31
Örnek Saldırı ..................................................................................................................................31
Nginx ..................................................................................................................................... 34
IIS .......................................................................................................................................... 35
Programlama Dili Zafiyetleri............................................................................................39
PHP........................................................................................................................................ 39
Örnek Saldırı ..................................................................................................................................39
Java ....................................................................................................................................... 41
Örnek Saldırı ..................................................................................................................................41
Sunucuya Yüklenmiş Shell’i Bulmak.................................................................................44
Shell Gizleme Yöntemleri........................................................................................................ 46
Uzaktan Çağırma............................................................................................................................46
Şifrelenmiş Kod..............................................................................................................................46
Resim İçerisine Gizleme.................................................................................................................46
Hacklenmiş Web Sunucu Analizi......................................................................................48
Sonuç .............................................................................................................................52
Referanslar .....................................................................................................................52
3. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
1. Giriş
İnternetin her eve girmesiyle beraber web hizmetleri de hayatın bir parçası haline gelmiştir.
Bu durum saldırganların bu servisleri hedef olarak almasına sebep olmuştur.
Saldırganlar web servislerinden bilgi çalabilmek, çalışmaz duruma getirmek, şöhret vb. illegal
işler için web sunucularına saldırılar düzenlemektedirler. Kitapçık boyunca web sunucularına
yapılan saldırı yöntemleri farklı bakış açılarıyla incelenecektir.
Log Analizine Giriş
Log kaydı, sunucuda meydana gelen olayların kayıt altında tutulmasıdır. Log kayıtları sayesinde
sistem hataları, güvenlik riskleri gibi istenmeyen durumların analizi yapılabilmektedir.
Log analizinde analiz yapan kişinin neyi aradığını bilmesi büyük önem arz etmektedir. Log
dosyalarının içerisinde her türlü aktivite kaydının bulunduğunu düşünürsek filtreleme
yapmadan sonuca ulaşmak epey zahmetli olacaktır.
Sıralayacak olursak log analizi için 3 adıma dikkat etmek gerekmektedir:
1. Log kayıtlarına erişmek
2. Log analizinin hangi amaçla yapılacağını belirlemek
3. Amaç doğrultusunda log kayıtlarını filtreleyerek verileri ayıklamak
Bundan sonraki bölümlerde log analizi yapılırken UNIX araçları kullanılacaktır.
4. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Web Sunucularında Log Analizi
Web sunucularında log kaydı yapılırken POST metoduyla yapılan isteklerin kaydı varsayılan
olarak tutulmayabilir. Bu durumda mod_forensic veya mod_security modülleri kullanılarak
durum telafi edilebilir.
POST metoduyla gönderilen veriler loglar içerisinde bulunmamaktadır. Verilere erişmek için
ağ trafiğinin incelenmesi gerekmektedir.
Yukarıda POST metodu ile gönderilmiş bir isteğin log kaydına ait ekran görüntüsü verilmiştir.
Görüldüğü üzere ilgili istekte hangi adrese istek gönderildiği gözükmektedir. Gönderilen
paketin kendisine bakıldığında istemcinin sunucuya gönderdiği veriler, yönlendiren sayfa gibi
bilgiler de bulunmaktadır. Anlaşılması adına aşağıya örnek bir post isteği eklenmiştir.
Apache
Bu bölümde Apache sunucusunda barındırılan bir web uygulamasının SQL Injection saldırısına
nasıl maruz kaldığını log kayıtlarını inceleyerek görmüş olacağız.
Log Kayıtları
Apache web sunucusunda log kayıtları /var/log/apache2 klasörü altında access.log ve
error.log dosyalarında tutulmaktadır. “access.log” içerisinde sunucuya yapılan isteklerin kaydı
tutulmaktadır.
Yukarıdaki ekran görüntüsünde “192.168.2.232” IP adresinden “/index.php” sayfasına “GET”
metodunda “[18/Aug/2017:15:02:05 +0000]” zaman diliminde, ”Mozilla/5.0 (X11; Linux
5. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
x86_64) AppleWebKit/537.36 (KHTML, lıke Genco) Chrome/60.0.3112.78 Safari/537.36” User-
Agent başlığı ile istek gönderilmiştir.
“error.log” dosyasında ise sunucunun istekleri işlerken karşılaştığı hatalar bulunmaktadır.
Aşağıdaki ekran görüntüsünde “/test” dizinine gitmeye çalışan istemci başarısız olduğu
görülmektedir.
Saldırı Nasıl Gerçekleşti?
SQL Injection saldırısına maruz kalan sunucunun loglarını incelemek için /var/log/apache2
klasörüne gidilir.
cat access.log
Yukarıdaki komut ile log dosyasına genel olarak bakıldığı zaman aynı IP adresi tarafından çok
sayıda SQL lnjection denemesi yapıldığı açıkça gözükmektedir. Eğer injection denemeleri gözle
görülür derecede çok yapılmış olmasaydı loglar içerisinde sql saldırılarında en çok kullanılan
parametreler aratılırdı.Bunlar union,select,from,or,version gibi parametrelerdir.Bu
parametreler grep komutu ile log dosyaları içerisinde aratılabilir.
cat access.log | grep -E “%27|--|union|select|from|or|@|version|char|varchar|exec
Aşağıda “access.log” dosyası içerisindeki SQL injection kayıtlarına ait ekran görüntüsü
verilmiştir.
Denemelerin başarılı olanlarını görüntüleyebilmek için sunucudan 200 kodu dönen yanıtların
filtrelenmesi gerekmektedir. cat access.log | grep 200 komutu ile filtreleme gerçekleştirilir.
6. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Gerçekleştirilen filtrelemeden sonra görülür ki kullanıcı adı ve parolanın çekildiği SQL
sorgusuna 200 yanıtı dönmüştür.
Yukarıdaki istek URL decode edildiğinde /cat.php?id=1 UNION SELECT
1,concat(login,':',password),3,4 FROM users; şeklinde bir injection saldırısı gerçekleştiği
görülür.
Bilgilere erişen saldırganın “admin” paneline giriş yapıp yapmadığını kontrol etmek için cat
access.log | grep 192.168.2.232 | grep admin/index.php komutu kullanabiliriz.
Admin paneline istekte bulunan saldırganın kayıtlarına ait ekran görüntüsü aşağıda verilmiştir.
7. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Ekran görüntüsünde saldırganın admin paneline POST metodu ile istek gönderdiği
görülmektedir. Gönderilen POST isteği Wireshark ile incelendiğinde saldırganın panele giriş
yapmış olduğu kesinleşmiştir.
Admin paneline gönderilen POST isteğinin detayları aşağıdaki ekran görüntüsünde verilmiştir.
Nginx
Bu bölümde Nginx sunucuda çalışan uygulamaya gerçekleştirilen sistem üzerindeki dizinlere
izinsiz erişim sağlama saldırısı olan directory traversal (dizin listeleme) denemelerinin log
kayıtları incelenecektir. Bu saldırıda genellikle nokta-nokta-eğik çizgi ( ../ ) ile dizin değiştirerek
farklı dosyalara ulaşılır.
Log Kayıtları
Nginx sunucularda log dosyaları /var/log/nginx dizini altında Apache sunucularda da olduğu
gibi access.log ve error.log dosyaları içerisinde tutulmaktadır.
Saldırı Nasıl Gerçekleşti?
Saldırının tespiti için “../” veya “..” karakterlerini filtrelememiz saldırıyı analiz etmemiz
açısından daha uygun olacaktır. Bunun için cat acess.log | grep ../ komutu kullanılmaktadır.
Yukarıdaki çıktıda da görüldüğü üzere saldırgan passwd dosyasını okumaya çalışmıştır. Üçüncü
denemeden sonra wget komutu ile sayfayı kendine aktarmıştır.
8. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Aktarılan sayfa incelendiğinde “passwd” dosyası içerisindeki bilgilerin ifşa olduğu
görülmektedir. Saldırganın kopyaladığı sayfaya ait ekran görüntüsü aşağıda verilmiştir.
IIS
IIS sunucuda log kayıtları C:inetpublogsLogFilesW3SVC1 klasörü altında tutulmaktadır. IIS
sunucularda bulunan log kayıtların ait örnek ekran görüntüsü aşağıda verilmiştir.
9. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Web Sunucularına Yönelik Saldırılar
Web sunuculara yönelik gerçekleştirilen saldırılar genellikle web sunucusunun kendi
barındırdığı zafiyetten, uygulama sunucusunun zafiyetinden veya yeterli güvenlik önlemi
alınmamış web uygulamasından kaynaklanmaktadır.
Uygulama Sunucuları
Bu bölümde uygulama sunucularından olan tomcat, jboss, glassfish gibi sunuculardan
kaynaklanan güvenlik açıklıklarını inceleyeceğiz.
Tomcat
Zafiyet mod_jk kullanan sunucudan ve istemci tarafından gönderilen URL adreslerinin decode
edilmesine izin veren uygulama sunucusundan kaynaklanmaktadır.
Burada amaç directory traversal zafiyetini “..” parametresini 2 kere encode ederek
kullanmaktır.
“..” → “%2e” →“%252e”
Hedef adresin /manager/html uzantısına gidildiğinde sayfaya erişim sağlanamamaktadır.
Ancak “/examples/jps/%252e%252e/%252e%252e/manager/html” uzantısına gidilmeye
çalışıldığında ise giriş paneli ile karşılaşılmaktadır.
Varsayılan kullanıcı adı ve parola denendikten sonra admin paneline erişim sağlanmıştır.
Hazırlanmış olan webshell yüklenmeden önce deploy butonunun action kısmının başına
“/examples/jsp/%252e%252e/%252e%252e/” eklenir. Bunun nedeni webshell i ana dizine
yükleyip giriş paneline ulaşıldığı gibi ana dizin üzerinden webshell e ulaşmaktır. İşlemin
ardından webshell yüklenir.
10. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Deploy butonunun action kısmına ait ekran görüntüsü aşağıda verilmiştir.
Ardından /examples/jsp/%252e%252e/%252e%252e/test uzantısına gidilerek istenilen
komutlar çalıştırılabilir.
Webshell’in bulunduğu uzantıya ait ekran görüntüsü aşağıda verilmiştir.
Log Kayıtları
cat access.log | grep manager/html | grep 200 komutu ile giriş paneline ulaşabilen isteklerin
filtrelendiği ve daha sonra URL encode yöntemi ile adrese ulaşıldığı görülmektedir.
İlgili ekran görüntüsü aşağıda verilmiştir.
11. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Panele ulaşan saldırganın IP adresi ile loglarda filtreleme yapıldığında; saldırganın gönderdiği
istekler incelenmiştir. Gönderilen POST isteği dikkat çekmektedir.
cat access.log | grep 192.168.68.1 | grep 200 komutu ile hedefe ait tüm 200 kodlu istekler
listelenir.
Wireshark’da ip.src == 192.168.68.1 && http.request.method == POST filtresi ile ilgili istek
bulunur ve incelemeye alınır.
Yukarıdaki ekran görüntüsünde de görüldüğü üzere saldırgan sisteme test.war dosyasını
yüklemiştir.
Korunma Yöntemleri
● “mod_jk” güncellenerek zafiyet önlenebilir.
12. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
GlassFish
Bu bölümde CVE-2011-0807 ile uzaktan kod çalıştırma güvenlik açıklığı ele alınacaktır.
Kimlik doğrulama atlatması, varsayılan kullanıcı adı ve parola gibi çeşitli metodlarla panele giriş
yapılır ve sisteme zararlı dosya yüklenerek uzaktan erişim sağlanır. Hedef sistemde Sun
GlassFish Enterprise Server 2.1 ve Java System Application Server 9.1 bulunmaktadır. Bu
durumda Metasploit Framework’de bulunan “exploit/multi/http/glassfish_deployer”
exploiti kullanılarak hedef sistem istismar edilir.
Öncelikle hedef nmap ile taratılarak sistem üzerindeki açık portlar ve portların ne amaçla
kullanıldığı tespit edilmeye çalışılır.
Yukarıdaki görselde görüldüğü gibi hedef sistemde GlassFish 2.1 çalışmaktadır. Msfconsole
yardımı ile GlassFish için oluşturulmuş exploitler aratılır.
13. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Exploit “use” komutu ile seçilir ve gerekli ayarlamaları yapılır. Exploit için geçekleştirilen
ayarlar aşağıdaki ekran görüntüsünde verilmiştir.
14. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
“run” komutu verilerek exploit çalıştırılır.
Exploit çalıştırıldıktan sonra meterpreter oturumumuz hazırlanmış ve hedefte komut
çalıştırabilir hale gelmiş oluruz.
Meterpreter oturumunun aktif olduğu ve hedefte komut çalıştırılabilir olduğuna dair ekran
görüntüsü aşağıda verilmiştir.
15. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Log Kayıtları
“netstat -an” komutu ile sistemin iletişim kurduğu adresler görüntülenir ve tanınmayan bir
adres ile 4444 portundan haberleştiği görülür.
Ağ trafiği incelendiğinde saldırganın üç farklı GET isteği gönderdiği görülmektedir. İlgili istekler
aşağıdaki ekran görüntüsünde verilmiştir.
GET isteklerinin ardından çok sayıda 4444 portu üzerinden TCP trafiği oluşmaktadır. Fakat
Metasploit verileri AES ile şifrelediğinden dolayı ağ trafiği üzerinden saldırganın hangi
komutları çalıştırdığını öğrenememekteyiz.
Korunma Yöntemleri
● Kullanıcı adı ve parolayı varsayılan olarak bırakmamak.
● Güncellemeleri yüklemek.
16. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Jboss
Bu bölümde Jboss AS 3,4,5, ve 6. versiyonlarında çalışan uzaktan kod çalıştırma zafiyeti
incelenecektir. Hedef sistem Ubuntu 14.04 üzerinde Jboss 6 çalıştırmaktadır. Exploit-db de
bulunan 36575 ID numaralı exploit;
● https://www.exploit-db.com/exploits/36575/
…ile zafiyet istismar edilecektir.
Exploit indirildikten sonra hedef adres ve port numarası belirtilerek python 36575.py
http://192.168.2.105:8080 scripti ile saldırı başlatılır.
Ardından istismar işlemi gerçekleştirilir ve shell ekrana gelir. Bu ekranda whoami ve uname -
a komutları çalıştırılmıştır.
17. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Log Kayıtları
Sunucuya gelen HTTP istekleri incelendiğinde id, whoami, uname -a gibi parametreler dikkat
çekmektedir.
İlgili paketlerin detayları incelendiğinde sunucunun döndürdüğü yanıt ve isteğin yapıldığı adres
görülmektedir.
Kayıtlarda görüldüğü gibi istekler /jbossass/jbossass.jps adresine yapılmaktadır.
18. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
İsteğin yapıldığı dosya sunucuda find /opt/jboss-6.0.0.Final/ -type f -name "jbossass.jsp"
komutu ile aratılır.
Aşağıda bulunan “jbossass.jsp” dosyasının kaynak koduna ait ekran görüntüsü verilmiştir. İlgili
dosya incelemeye alındığında bir webshell olduğu görülmektedir.
Korunma Yöntemleri
● JBoss EAP 7 ye yükseltme yapmak.
● Yazılımları yetkisiz bir kullanıcı ile çalıştırmak.
19. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Web Uygulamaları
OWASP’ın 2017 yılında yayınladığı verilere göre web uygulamalarında en çok karşılaşılan
güvenlik zafiyetleri şunlardır:
● A1-Injection
● A2-Broken Authentication and Session Management
● A3-Cross-Site Scripting (XSS)
● A4-Broken Access Control
● A5-Security Misconfiguration
● A6-Sensitive Data Exposure
● A7-Insufficient Attack Protection
● A8-Cross-Site Request Forgery (CSRF)
● A9-Using Components with Known Vulnerabilities
● A10-Underprotected APIs
Injection
Injcetion, sunucuya gönderilen sorguya çeşitli parametreler eklenerek manipüle edilmesidir.
SQL Injection, SQL sorgularının manipüle edilerek veritabanına istenilen sorgunun
gönderilmesidir. Bu makale SQL injection saldırısını temel düzeyde bilindiği varsayılarak
anlatılmıştır. SQL injection hakkında detaylı bilgi için;
● https://www.bgasecurity.com/makale/sql-sql-injection-ve-sqlmap-kullanimi/
…makalesini inceleyebilirsiniz.
Burada SQL injection saldırısını tespit etmek isteyen bir kişinin hangi aşamaları denemesi
gerektiğine kısaca değineceğiz. Tespit aşamalarındaki asıl amacımız hata mesajları almaktır.
Aldığımız hata mesajlarında kullanılan veritabanı bilgisi vb. detayları elde edeceğiz.
Bunun için;
● Kullanılan en temel payload ‘ (tek tırnak) karakteridir.
● Sütun sayısı tespit edilebilir. Bunun için aşağıda verilen payload kullanılabilir.
?id=6 ORDER BY 6--
● Bir sütundaki tüm verilerin aynı veri türüne sahip olması gerekmektedir. Bunun için
aşağıda verilen payload kullanılarak sütun türü tespit edilebilir.
?id=6 UNION SELECT 1,null,null--
20. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
● Mantık tabanlı SOL injection zafiyetinin tespiti için aşağıda verilen payloadlar
kullanılabilir.
test.php?id=6
test.php?id=7-1
test.php?id=6 OR 1=1
test.php?id=6 OR 11-5=6
● Zaman tabanlı SOL injection zafiyetinin tespiti için aşağıda verilen payloadlar
kullanılabilir.
SLEEP(25)--
SELECT BENCHMARK(1000000,MD5('A'));
userID=1 OR SLEEP(25)=0 LIMIT 1--
userID=1) OR SLEEP(25)=0 LIMIT 1--
userID=1' OR SLEEP(25)=0 LIMIT 1--
userID=1') OR SLEEP(25)=0 LIMIT 1--
userID=1)) OR SLEEP(25)=0 LIMIT 1--
userID=SELECT SLEEP(25)--
Örnek SQL Injection Saldırısı
Bu örnekte sadece kullanıcıdan user id numarasını isteyen bir web uygulamasını ele alacağız.
ID numarası girildiğinde girilen numaraya ait kullanıcının ad ve soyad bilgileri dönmektedir.
ID’ si 2 olan kullanıcıya ait bilgilere ait detaylar aşağıdaki ekran görüntüsünde verilmiştir.
21. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Fakat uygulamanın beklemediği manipüle edilmiş bir sorgu gönderilirse güvenlik önlemi
alınmamış web uygulaması injection saldırısına maruz kalmış olacaktır.
Örneğin aşağıda ' or 0=0 union select null, version() # sorgusu ile veritabanı versiyonu
çekilmiştir.Bu sorguda tırnak işareti ile bir önceki sorgunun tamamlanması sağlanırken “or
0=0” ifadesi ile sonucun her zaman doğru olması sağlanmıştır.”union select null, version()” ile
de versiyon bilgisi çekilmiştir.Son olarak “#” işareti ile de sorgunun devamının yorum satırı
olarak kalması sağlanmıştır.
Yukarıdaki gibi id bilgisi bekleyen bir sql sorgulu sql injection saldırısı ile aşağıdaki hale
bürünerek manipüle edilmiştir ve veri sızıntısına neden olmuştur.
Alttaki görselde çalıştırılan sorgunun döndürdüğü yanıt gösterilmektedir.
22. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Log Kayıtları
SQL Injection saldırılarında en çok kullanılan karakter ve kelimeler ‘ , -- , union , select , from ,
or , @ , version , char , varchar , exec olduğu tespit edilmiştir.
İlgili karakterler URL encode edildiğinde aşağıdaki gibi bir Linux komutu oluşmaktadır.
cat access.log | grep -E “%27|--|union|select|from|or|@|version|char|varchar|exec
İlgili komut kullanılarak alınan “access.log” dosyasına ait çıktı aşağıdaki ekran görüntüsünde
verilmiştir.
acces.log dosyasındaki kayıt URL decode edildiğinde ' or 0=0 union select null, version() #
sorgusu gönderildiği anlaşılmaktadır.
Korunma Yöntemleri
● Hazırlanmış sorgu ifadeleri kullanmak
● Gönderilen veriyi kontrol etmek
● Gönderilen veriyi filtrelemek
● Kullanıcı yetkilerini kısıtlamak
…alınabilecek önlemlerdir.
23. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Broken Authentication and Session Management
Oturum güvenliğinin tam olarak sağlanmamasından kaynaklanan güvenlik zafiyetidir.
Örnek Saldırı
Bu saldırıda amaç cookie bilgilerinin değiştirilerek herhangi bir kimlik doğrulama
mekanizmasına takılmadan istenilen kullanıcı hesabına geçmek olacaktır.
İlk olarak sisteme giriş yapılır.
Sisteme “user1” olarak giriş yapılmıştır.
Ardından cookie değeri kontrol edilir. “user1” kullanıcısının cookie değerine ait ekran
görüntüsü aşağıda verilmiştir.
Görüldüğü gibi cookie değeri kullanıcı adı ile aynı olmaktadır. Cookie değeri admin olarak
değiştirildiğinde eğer sistemde admin kullanıcısı var ise admin kullanıcısına geçiş yapılmış
olunacaktır.
24. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Cookie verisinin değiştirilmesine ait ekran görüntüsü aşağıda verilmiştir.
Admin kullanıcısına geçildiğine dair ekran görüntüsü aşağıda verilmiştir.
Sonuç olarak herhangi bir parola kullanılmadan, sadece cookie değeri değiştirilerek admin
kullanıcısına geçiş yapılmıştır.
Log Kayıtları
Log kayıtları incelendiğinde dikkat çeken herhangi bir durum olmadığı görülmektedir.
İncelenen log kayıtlarında “user1” kullanıcısı ile giriş yapıldığına dair ekran görüntüsü aşağıda
verilmiştir.
25. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Fakat ağ trafiği ile gönderilen isteklerin detaylarına bakıldığı zaman cookie değerlerinde
anormallik olduğu görülmüştür.
Aşağıda 192.168.68.1. adresinden sisteme giren kullanıcının cookie değerine ait ekran
görüntüsü verilmiştir.
Aynı IP adresinden sisteme gönderilen 2. istekteki cookie değerine ait ekran görüntüsü ise
aşağıda verilmiştir.
Ekran görüntülerinde de görüldüğü üzere aynı IP adresinden sisteme bağlanan kişi, cookie
değerlerini değiştirerek “admin” kullanıcısına geçiş yapmıştır.
Korunma Yöntemleri
● Güçlü kimlik kontrolü ve oturum yönetimi sağlamak
● Cookie bilgilerinin çalınmaması için XSS saldırılarını önlemek
26. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Cross-Site Scripting (XSS)
XSS, HTML ve JavaScript yardımı ile birlikte bir sitede istemci tarafından kod çalıştırılmasına
olanak sağlayan saldırı türüdür. Bununla beraber cookie çalma, sayfa yönlendirme gibi
saldırılar da düzenlenebilir.
XSS genelde GET ve POST metodlarının kullanıldığı bölümlerde bulunmaktadır. Arama kutusu,
galeri, mesajlar, üyelikler gibi girdi alan alanlarda bulunur. Tespiti için kullanılan payload
genelde "><script>alert(1)</script> şeklindedir. Tabi bu payload çok klasik bir örnektir.
Filtreleme durumuna göre farklı event handler (onclick, onload, onmouseover vb.)
kullanılabilir. XSS hakkında detaylı bilgi ve örnekler için;
● https://wiki.bgasecurity.com/index.php?search=XSS&title=%C3%96zel%3AAra&go=Git
…sitesini ziyaret edebilirsiniz.
Örnek Saldırı
Bu örnek saldırıda ziyaretçi defteri için mesaj yazılması gereken bölüme JavaScript kodu
eklenerek zafiyet sömürülecektir.
Bunun için ilk olarak mesaj bölümüne uygun JavaScript kodu yazılıp gönderilir. Örnek olarak
yazılan kodla birlikte açıklık istismar edilirse ekrana pop-up mesajı olarak “1” yazılacaktır.
Ziyaretçi defterine beklenilen iletinin dışında JS kodu yazılarak uygulama istismar edilmeye
çalışılır.
Mesaj gönderildikten sonra sayfayı ziyaret eden kullanıcılar yazılan koddan etkilenirler.
27. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Aşağıda sayfayı ziyaret eden kullanıcının JavaScript kodundan etkilendiğine dair ekran
görüntüsü verilmiştir.
Sayfanın kaynak koduna bakıldığında javascript kodunun eklendiği görülür.
Log Kayıtları
Log kayıtları incelendiğinde POST metodu ile ilgili sayfaya veri gönderildiği görülmüştür.
Ayrıntıları görebilmek için ağ trafiği incelenir.
28. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
İncelenen trafikte kayıtlarda da görüldüğü üzere saldırgan mesaj bölümüne JavaScript kodu
enjekte edilmiştir.
GET metodu ile gerçekleştirilen XSS saldırılarının tespiti için log dosyalarında bazı anahtar
kelimeleri filtrelemek gerekmektedir. XSS saldırılarında en çok kullanılan karakter ve kelimeler
<, >, alert, script, src, cookie, onerror, document’ tir. Grep komutu ile arama filtreleme
yapılırken ‘<’ ve ‘>’ karakterlerinin URL encode edilmiş halini aratmak gerekmektedir.
Sonuç olarak ortaya;
cat access.log | grep -E "%3C|%3E|alert|script|src|cookie|onerror|document
…şeklinde bir komut çıkmaktadır.
Örnek bir XSS saldırı tespitine dair ekran görüntüsü aşağıda verilmiştir.
Korunma Yöntemleri
● Girdiyi doğrulamak (girilen verinin gerçekten istenen türden bir veri olduğunu kontrol
etmek).
● Blacklist yerine whitelist kullanmak.
29. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Security Misconfiguration
Bu zafiyet, güvenlik yapılandırmalarının yanlış, zayıf veya varsayılan şekilde bırakılmasından
kaynaklanmaktadır.
Örnek Saldırı
Bu örnek saldırıda, sistemin otomatik oluşturduğu “admin” kullanıcısının parolasının
değiştirilmemesi sonucu saldırgan varsayılan kullanıcı adı ve parola ile sisteme giriş
yapabilmektedir.
Korunma Yöntemleri
● Varsayılan yapılandırmaları düzenlemek.
● Yazılımları güncel tutmak.
● Kullanılmayan servis ve portları devre dışı bırakmak.
Cross-Site Request Forgery (CSRF)
CSRF, siteler arası istek sahteciliği anlamına gelmektedir. Kullanıcıya kendi isteği dışında
saldırganlar tarafından işlemler yaptırılmasıyla gerçekleştirilen bir saldırı türüdür.
Örnek Saldırı
Bu örnek saldırıda amacımız, sahte bir web sayfası ile hedef uygulamaya istek göndererek
kurbanın parolasını değiştirmek olacaktır.
Sahte web sayfasında sadece “tıkla” butonu bulunmaktadır. İlgili butona ait ekran görüntüsü
aşağıda verilmiştir.
Sahte sayfanın kaynak koduna dair ekran görüntüsü aşağıda verilmiştir.
30. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Sahte sayfamızda şu işlem gerçekleştirilecektir; eğer kurban “tıkla” butonuna tıklarsa hedef
uygulamaya parolasını 123456 olarak değiştirmek istediğine dair bir istek göndermiş olacaktır.
…ve butona tıklamış olan kullanıcının parolası değişecektir. İlgili ekran görüntüsü aşağıda
verilmiştir.
Log Kayıtları
Gerçekleştirilen saldırı üzerine log kayıtları incelendiğinde, kurban tarafından uygulamaya
parola dair istek geldiği ve kullanıcının parolasının değiştiği görülmektedir.
Korunma Yöntemleri
● Frameworklerin sunduğu CSRF korunma mekanizmalarını kullanmak.
● Token ve session kullanmak.
31. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Sunucu Zafiyetleri
Bu bölümde sunucunun kendisinden kaynaklanan zafiyetler incelenecektir. İncelenen
zafiyetlerin dışında daha fazlası için;
● http://www.cvedetails.com
…adresi ziyaret edilebilir.
Apache
Apache sunucu için “Shellshock” olarak anılan ve uzaktan komut çalıştırmaya yarayan CVE-
2014-6271 kodlu zafiyet ele alınacaktır. Apache sunucularında genellikle mod_cgi ve
mod_cgid modüllerini kullanan sitemler zafiyetten etkilenmekte ve 1.14 ile 4.3 arası olan bash
sürümleri tehdit altında olmaktadır.
HTTP_USER_AGENT çevre değişkeni kötü amaçlı olacak şekilde değiştirilip CGI komut
dosyalarına hedefleyerek zafiyet istismar edilebilmektedir.
Örnek Saldırı
Gerçekleştirilecek örnek saldırı için hedef üzerinde sunucudan “uptime” ve “kerne”l bilgilerini
çeken script çalışmaktadır.
Aşağıdaki komut ile hedef adresin “passwd” dosyası okunmak istenmektedir.
echo -e "HEAD /cgi-bin/status HTTP/1.1rnUser-Agent: () { :;}; echo
$(</etc/passwd)rnHost: HEDEF_ADRESrnConnection: closernrn" | nc
HEDEF_ADRES 80
Gelen yanıtın HTTP başlığı incelendiğinde “passwd” dosyasının içeriği görüntülenmektedir.
32. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
User-agent başlık bilgisi değiştirilmiş isteğin hedefe gönderildiğine dair ekran görüntüsü
aşağıda verilmiştir.
Log Kayıtları
Log kayıtları incelendiğinde /cgi-bin/status adresine HEAD isteği gönderildiği dikkat
çekmektedir.
Aynı zamanda çeşitli parametreler ile gönderilen /etc/passwd bölümü göze çarpmaktadır.
Dönen yanıtı görüntülemek üzere ağ trafiği incelenir.
…“cgi-bin/status” dosyasına gönderilen istek aşağıdaki ekran görüntüsünde verilmiştir.
33. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Gerçekleştirilen isteğe sunucu tarafından döndürülen yanıta dair ekran görüntüsü aşağıda
verilmiştir.
Dönen yanıta incelendiğinde sunucu bilgilerinin ifşa olduğu görülmektedir.
Korunma Yöntemleri
● Bash’i güncel versiyona yükseltmektir. Bunun için kullanılması gereken komut;
sudo apt-get update && sudo apt-get install --only-upgrade bash
34. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Nginx
Nginx sunucusu için bulunan güvenlik açıklıklarına bakıldığında son yıllarda kritik düzeyde
bulunan bir zafiyet görünmemektedir.
35. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
IIS
Bu bölümde 2 adet zafiyetten bahsedilecektir. Bunlar CVE-2017-7269 ve MS15-034 tür.
MS15-034
Bu güvenlik açıklığında windows sisteme özel hazırlanmış bir HTTP isteği gönderildiğinde
uzaktan kod çalıştırması mümkün kılınmaktadır.
Zafiyetten etkilenen versiyonlar: Windows 7, Windows Server 2008 R2, Windows 8, Windows
Server 2012, Windows 8.1, and Windows Server 2012 R2 işletim sistemlerinde HTTP.sys in
kullanıldığı herhangi bir IIS sürümü barındıran makineler.
Hedef nmap ile taratıldığında Windows Vista,2000 veya 7 kullandığı ve aynı zamanda IIS 7.5 in
aktif olduğu görülür.
İlgili zafiyetin hedef için geçerli olup olmadığını anlamak için hedefe “Range” başlığı eklenmiş
http talebi gönderilir. Eklenen aralık sunucu tarafından işlenecektir.
wget --header="Range: bytes=0-18446744073709551615"
http://192.168.10.169/welcome.png
Yukarıdaki komut girilir ve alınan “416 Requested Range Not Satisfiable” çıktısından dolayı
zafiyetin mevcut olduğu anlaşılır. Ardından Range aralığı değiştirilerek tekrar gönderilir ve aşırı
yük altında kalmış olur.
wget --header="Range: bytes=18-18446744073709551615"
http://192.168.10.169/welcome.png
36. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Windows güncelleştirmelerinin kurulmasıyla ilgili zafiyetten kurtulmak mümkündür.
CVE-2017-7269
Windows Server 2003 R2 üzerinde IIS 6.0 çalışan makinede bulunan CVE-2017-7269 güvenlik
açıklığı ele alınacaktır. Açıklık IIS 6.0’daki WebDAV servisinde bulunan ScStoragePathFromUrl
fonksiyonunun buffer overflow saldırısına maruz kalmasından kaynaklanmaktadır.
Metasploitte bulunan “iis_webdav_scstoragepathfromurl” exploiti kullanılarak zafiyet
istismar edilebilmektedir.
37. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Exploit için gerçekleştirilen ayarlara ait ekran görüntüsü aşağıda verilmiştir.
38. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Zafiyetin istismarı sonucu elde edilen meterpreter oturumuna dair ekran görüntüsü aşağıda
verilmiştir.
39. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Programlama Dili Zafiyetleri
PHP
PHP’nin barındırdığı mail() fonksiyonu ve bunu kullanan “Phpmailer” kütüphanesi milyonlarca
kişi tarafından kullanılmaktadır. “mail()” fonksiyonunun fazladan parametre gönderme
özelliğinin tam olarak denetlenmeden kullanılmasından dolayı uzaktan kod çalıştırma zafiyeti
meydana gelmektedir. İlgili açıklığın kodu “CVE-2016-10033” tür.
Örnek Saldırı
Örnek olması için güvenlik açığı barındıran bir uygulama kurulur.
Ardından daha önce bu açıklık için hazırlanmış olan exploit çalıştırılır. İlgili exploit aşağıda
verilen link üzerinden indirilebilir.
● https://github.com/opsxcq/exploit-CVE-2016-10033
Hedef adrese gerçekleştirilen exploit işlemine dair ekran görüntüsü aşağıda verilmiştir.
Exploit işlemi gerçekleştirildikten sonra uzaktan komut çalıştırılabilir bir halde sistem
beklemektedir.
40. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Zafiyetin istismar edildiği ve uzaktan komut çalıştırıldığına dair ekran görüntüsü aşağıda
verilmiştir.
Log Kayıtları
Zafiyete ait ağ trafiği incelendiğinde “backdoor.php” uzantısına GET istekleri gönderildiği
farkedilmektedir.
Gönderilen komutlar base64 ile decode edildiğinde saldırganın çalıştırdığı komutlar ifşa
olmaktadır.
Korunma Yöntemleri
● Zafiyet 5.2.18 altındaki sürümleri etkilemektedir. Güncelleme yaparak zafiyetten
korunulabilir.
41. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Java
Bu başlık altında Java Play Framework’de oluşan “Session Injection” zafiyeti incelenecektir.
Zafiyet oturum kodlamasından (session encode) kaynaklanmaktadır.
Örnek Saldırı
Hedef uygulama ekrana kullanıcının admin haklarına sahip olup olmadığını söylüyor. Burada
saldırganın amacı admin haklarına erişmek olacaktır.
İlk olarak normal bir şekilde user adı altında kayıt yapılır ve gönderilen istekler incelenir.
Burada admin kullanıcısının olduğunu varsayılarak admin kullanıcısına geçmek için null
byte’lardan faydalanılır.
Yeni bir kayıt oluşturulur ve kullanıcı adından sonra %00%00admin%3a1%00 parametresi
eklenerek injection tamamlanır. Burada oluşturulacak yeni oturumun admin:1 parametresi ile
sunucu tarafından yanlış yorumlanıp admin haklarına erişmesi sağlanmaktadır.Boş karakterler
kullanılarak admin:1 parametresinin bir önceki parametre olan kullanıcı adından ayrılması
sağlanır.
42. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Kayıt ekranına ait kullanıcı arayüzü aşağıda verilmiştir.
Gönderilen istek üzerinde kullanıcı adının sonuna %00%00admin%3a1%00 parametresi
eklenir.
Gerçekleştirilen istek sonrası uygulama üzerinde admin haklarına erişim sağlandığına dair
ekran görüntüsü aşağıda verilmiştir.
Log Kayıtları
Log kayıtları incelendiğinde “test” kullanıcısının normal bir şekilde kayıt olmuş gibi gözüktüğü
fakat cookie değeri incelendiğinde injection saldırısı gerçekleştiği görülmektedir.
43. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Register sayfasına gönderilen POST isteğine dair ekran görüntüsü aşağıda verilmiştir.
Kayıt sonrası istek ve sunucunun döndürdüğü yanıta dair ekran görüntüsü aşağıda verilmiştir.
Korunma Yöntemleri
● Bu zafiyet güncelleme ile giderilmiştir. Güncelleme yapılarak zafiyetten korunulabilir.
44. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Sunucuya Yüklenmiş Shell’i Bulmak
Shell, yüklendiği sunucu üzerinde yükleyen kişiye sahip olduğu hakları aktaran scripttir.
c99,r57 bilinen en popüler shell’lerdendir. Bu bölümde PHP shellerinden bahsedeceğiz.
Basit bir komut çalıştırma olanağı sağlayan shell örneğine bakacak olursak sıradan komutların
dışında system() fonksiyonunu çalıştırdığı görülür.
Aşağıda basit bir PHP shell’ine ait ekran görüntüsü verilmiştir.
Bu durumda eğer sunucu içerisinde system() fonksiyonunu çağıran dosyalar ayıklanırsa
yüzlerce dosya arasından aranan zararlı dosya daha rahat bulunabilir.
grep -Rn "system *(" /var/www komutu ile /var/www dizini altındaki system fonksiyonunu
çağıran bütün dosyaları taranmış olur.
Farklı bir PHP shell incelendiğinde ise system fonksiyonu yerine shell_exec() fonksiyonunun
tercih edildiği görülmektedir.
Daha önce bahsedildiği gibi kullanılmış farklı fonksiyonlara dikkat edildiğinde shell_exec() ve
eval() fonksiyonu da göze çarpmaktadır.
45. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Yani shell araması yapılırken shell_exec ve eval fonksiyonları da taratılmalıdır.
PHP shell’ler incelendiğinde genellikle passthru, shell_exec, system, phpinfo, base64_decode,
edoced_46esab, chmod, mkdir, fopen, fclose, readfile, php_uname ve eval gibi paremetreler
içerdiği gözlenmiştir. Bunun için aşağıdaki tablo içerisinde verilen komut ile gerçekleştirilen bir
taramada sunucu içerisindeki shel’leri bulmak mümkündür.
grep -RPn "(passthru|shell_exec|system|phpinfo|base64_decode|chmod|mkdir|
fopen|fclose|readfile|php_uname|eval) *(" /var/www
46. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Shell Gizleme Yöntemleri
Sistem yöneticisi tarafından veya dosya yükleme işlemi gerçekleştirirken güvenlik duvarına
takılmamak için saldırganlar bazı shell gizleme yöntemleri uygulamaktadır. Bu başlık altında
bu yöntemlere değineceğiz.
Uzaktan Çağırma
Bu yöntemde shell aslında hedef sunucuda barındırılmaz. Başka bir adresten shell’e ait olan
kodlar çekilir ve hedef sunucuda çalıştırılır.
Şifrelenmiş Kod
Shell’in kodunun şifrelenmesi ile eğer varsa güvenlik duvarı atlatılmaya çalışılır.
Resim İçerisine Gizleme
Burada zararlı kod herhangi bir resmin exif bilgileri içerisine yerleştirilir ve PHP ile resmin exif
bilgileri okunarak kod çalıştırılır.
İlk olarak exiftool yardımı ile görselin exif bilgilerine istenilen kodlar yerleştirilir. “exif” bilgileri
değiştirilen görsele ait ekran görüntüsü aşağıda verilmiştir.
47. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Daha sonra resim içerisinden exif bilgilerini okuyacak PHP kodu yazılır.
Bu tarz gizleme yöntemleri ile güvenlik duvarları aşılabilmektedir. İş shell’i bulmaya gelince
sunucudaki dosyaların grep yardımı ile tek tek aratılmasıyla çok da zor olmamaktadır. Fakat
daha önce bahsedilen fonksiyonların dışında exif_read_data() ve preg_replace()
fonksiyonlarını da taratmak gerekecektir.
Yukarıda görüldüğü gibi şifrelenmiş shell, resim içerisine gizlenmiş shell ve uzaktan çağırılan
shelllerin hepsinin yeri tespit edilmiştir.
48. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Hacklenmiş Web Sunucu Analizi
Bu bölümde tamamıyla ele geçirilmiş, içerisinde Wordpress bulunan web sunucusunun saldırı
sonrası analizi ile nasıl ele geçirildiği incelenecektir. İlk olarak saldırganın admin paneline erişip
erişmediğini anlamak için;
cat access.log | grep POST | grep wp-login
…komutu girilir.
Yukarıda verilen ekran görüntüsündeki çıktıda görüldüğü gibi aynı IP üzerinden admin paneli
giriş sayfasına çok sayıda POST isteği gönderilmiştir. İstekle beraber gönderilen veriyi kontrol
etmek için ağ trafiği incelenir. Bunun için Wireshark’da;
ip.src == 192.168.2.232 && ip.dst == 192.168.2.31 && http.request.method == POST
…filtresi kullanılarak saldırgan üzerinden web sunucusuna giden POST istekleri listelenir.
49. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
İstekler incelendiğinde “wp-login” sayfasına kaba kuvvet saldırısı gerçekleştirildiği tespit
edilmiştir.
Saldırı sonucunda admin:admin olarak doğru kullanıcı adı ve parola bulunmuştur.
“error.log” dosyası incelendiğinde ise fscockopen() fonksiyonunun devreye sokulmak istendiği
görülmektedir. Böylece saldırganın admin panelinde ne yaptığı tahmin edilebilmektedir. cat
error.log komutu ile error.log sayfası okunur.
Dosya detaylarına bakıldığında /wordress/test123123 sayfasına istek gönderidiği tespit
edilmiştir. İlgili ekran görüntüsü aşağıda verilmiştir.
Saldırgan erişilemeyen bir sayfaya giderek 404 hatası almak istemiştir. Böylece klasik 404 hata
sayfası yerine kendi yerleştirmiş olduğu kodun çalışacağı düşünülür. Ağ trafiğini inceleyerek
veya admin paneline giriş yaparak değişikliğe bakalabiliriz.
50. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Değişikliklere bakıldığında 404 hata sayfasının içeriğinin saldırgan tarafından değiştirildiği
tespit edilmiştir.
Saldırganın hata sayfası için kullandığı kod parçası aşağıdaki ekran görüntüsünde verilmiştir.
Saldırganın 404 hata kodu sayfası için kullandığı kod incelendiğinde kendi adresine 1234
portundan erişim açtığı görülmektedir.
Saldırgan kendine açtığı bu kapı ile www-data hakları ile sunucuya erişim sağlamış olacaktır.
Bu durumda “www-data” kullanıcısının sunucuda çalıştırdığı komutlar incelemeye alınır.
51. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Saldırganın sunucuda çalıştırdığı komutlara dair ekran görüntüsü aşağıda verilmiştir.
…“wp-config.php” dosyasını okuyan saldırgan root kullanıcısına geçmiştir. wp-config.php
dosyasına bakıldığı zaman root kullanıcısının parolası ile aynı olan database parolası
gözükmektedir.
wp-config.php dosyasının içeriğine dair ekran görüntüsü aşağıda verilmiştir.
Yukarıdaki parola ile saldırgan root yetkisine ulaşarak sunucunun tamamını ele geçirmiştir.
52. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
Sonuç
Kitapçıkta incelendiği gibi saldırganlar web sunucusunu ele geçirebilmek için çeşitli yollardan
saldırabilmektedirler. Saldırıların tespiti için log analizi ve ağ trafiğinin iyi kontrol edilmesi
gerekmektedir. Bunun için etkili analiz için saldırı vektörlerini bilmek ve iyi anlamak gerekir.
Bazen güvenlik açıklığı kullandığınız sunucudan ya da programlama dilinden kaynaklanabilir.
Bundan dolayı sunucudaki bileşenleri sürekli güncel tutmak gerekmektedir.
Referanslar
● https://www.acunetix.com/blog/articles/using-logs-to-investigate-a-web-
application-attack/
● https://httpd.apache.org/docs/1.3/logs.html
● https://www.owasp.org/index.php/Top_10_2017-Top_10
● https://www.conetix.com.au/blog/root-cause-analysis-hacked-wordpress-website
● https://docs.microsoft.com/en-
us/iis/configuration/system.applicationhost/sites/sitedefaults/logfile/
● https://www.cisecurity.org/advisory/a-vulnerability-in-jboss-application-server-
could-allow-for-remote-code-execution/
● https://pentesterlab.com/
● https://www.rapid7.com
● https://th3w1tch.wordpress.com/2012/06/21/finding-vulnerabilities-backdoor-php-
shell-script-on-a-server/
● http://resources.infosecinstitute.com/checking-out-backdoor-shells/#gref
● https://www.trustwave.com/Resources/SpiderLabs-Blog/Hiding-Webshell-Backdoor-
Code-in-Image-Files/
● https://vexatioustendencies.com/php-backdoor-obfuscation-techniques/
● https://github.com/opsxcq/exploit-CVE-2016-10033
● https://www.netsparker.com.tr/blog/web-guvenligi/Meraklisi-icin-PwnScriptum-
Zafiyeti-PHP-Mailer-Remote-Code-Execution/
● http://www.sqlinjectionwiki.com/categories/2/mysql-sql-injection-cheat-sheet/
● https://wiki.bgasecurity.com/Ana_Sayfa
53. [HACKLENMİŞ WEB SUNUCU ANALİZİ]
BGA Bilgi Güvenliği A.Ş. | bgasecurity.com | @bgasecurity
BGA Bilgi Güvenliği A.Ş. Hakkında
BGA Bilgi Güvenliği A.Ş. 2008 yılından bu yana siber güvenlik alanında faaliyet göstermektedir.
Ülkemizdeki bilgi güvenliği sektörüne profesyonel anlamda destek olmak amacı ile kurulan BGA Bilgi
Güvenliği, stratejik siber güvenlik danışmanlığı ve güvenlik eğitimleri konularında kurumlara hizmet
vermektedir.
Uluslararası geçerliliğe sahip sertifikalı 50 kişilik teknik ekibi ile, faaliyetlerini Ankara ve İstanbul ve
USA’da sürdüren BGA Bilgi Güvenliği’nin ilgi alanlarını “Sızma Testleri, Güvenlik Denetimi, SOME, SOC
Danışmanlığı, Açık Kaynak Siber Güvenlik Çözümleri, Büyük Veri Güvenlik Analizi ve Yeni Nesil Güvenlik
Çözümleri” oluşturmaktadır.
Gerçekleştirdiği başarılı danışmanlık projeleri ve eğitimlerle sektörde saygın bir yer edinen BGA Bilgi
Güvenliği, kurulduğu günden bugüne alanında lider finans, enerji, telekom ve kamu kuruluşlarına
1.000'den fazla eğitim ve danışmanlık projeleri gerçekleştirmiştir.
BGA Bilgi Güvenliği, kurulduğu 2008 yılından beri ülkemizde bilgi güvenliği konusundaki bilgi ve
paylaşımların artması amacı ile güvenlik e-posta listeleri oluşturulması, seminerler, güvenlik etkinlikleri
düzenlenmesi, üniversite öğrencilerine kariyer ve bilgi sağlamak için siber güvenlik kampları
düzenlenmesi ve sosyal sorumluluk projeleri gibi birçok konuda gönüllü faaliyetlerde bulunmuştur.
BGA Bilgi Güvenliği AKADEMİSİ Hakkında
BGA Bilgi Güvenliği A.Ş.’nin eğitim ve sosyal sorumluluk markası olarak çalışan Bilgi Güvenliği
AKADEMİSİ, siber güvenlik konusunda ticari, gönüllü eğitimlerin düzenlenmesi ve siber güvenlik
farkındalığını arttırıcı gönüllü faaliyetleri yürütülmesinden sorumludur. Bilgi Güvenliği AKADEMİSİ
markasıyla bugüne kadar “Siber Güvenlik Kampları”, “Siber Güvenlik Staj Okulu”, “Siber Güvenlik Ar-
Ge Destek Bursu”, “Ethical Hacking yarışmaları” ve “Siber Güvenlik Kütüphanesi” gibi birçok gönüllü
faaliyetin destekleyici olmuştur.