Ну и хорошо, что разработчики обращают внимание на уязвимости своих продуктов. Очень правильный подход. З.Ы. Завязываем оффтопить. З.З.Ы. Разработчикам советую обратить внимание на: https://forum.antichat.ru/thread30641.html
Не, ну это старенький код =))) А насчет SQL-inj - да там проблема что когда движок весь собирался - (а это 2006-й год!!!) то малость я тогда и не знал что такое есть, и как защищаться А лазить по всему коду - так влень, лучше списочком де дырки =)))))
Code: 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 посмари там через пост не уязвим ли? просто с постом работать не умею
Не уязвим )) if (!is_valid_id($userid) || !is_valid_user_class($class)) меня больше волнует проблема траффика и проверка аватарки - ну залью я туда jph весом 500 метров и все, удаленном трекеру жопа
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.
нет, я не об этом я о возможности нагрузить канал трекера просто забив в поле аватара (урл аватарки!!) ссылку на файлик весом эдак под 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']);
Yuna привет Чет ты немнога поздно тут зарегался. Юзай идею: PHP: 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; }
эксплоит Qwazar'a как-будто вымер. Сейчас тестировал его на чистом SKy tracker где есть уязвимость: Trying to get your cookies... [DONE] Trying to get passhash: Exploit failed Проверьте сами, даже где пахал не пашет, помогите...
<dsdsdsds> http://127.0.0.1/treker/rss.php?passkey=1' SQL Code: $passkey = $_GET["тут что то было((("]; 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 такой косяк))))
http://127.0.0.1/treker/userhistory.php?action=viewposts&id=x x= id у которого нету постов как я понял ..и он выдаст ошибку ))) но SQL не провернуть так как нету таблы такой у меня так что наверно к разряду раскрытие путей