
12.04.2010, 15:26
|
|
Познающий
Регистрация: 21.07.2007
Сообщений: 68
Провел на форуме: 947074
Репутация:
257
|
|
- "Stress web 8.0" - платная cms для MMORPG Lineage2
Дорк:
Результати 1 – 10 з приблизно 4 800 на запит inurl:"index.php?f=forget". (0,06 сек)
Особенность:
Magic_quotes_gpc = off
Один из способов узнать версию, если папка install не удалена - /install/license.lic
==================================================
Уязвимость: sqli - из-за недостаточной фильтрации данных в параметр step2. Файл forget.php
Фильтр
PHP код:
function safe($sql)
{
if ($this->mysql_link)
return mysql_real_escape_string($sql, $this->mysql_link);
else
return mysql_escape_string($sql);
}
Первый шаг
PHP код:
elseif (isset($_POST["submit_lost"]) && isset($_POST["step1"]))
{
if ($_POST["l2sec_code"] != $_SESSION["sw_captcha"] or !$_SESSION["sw_captcha"])
{
$error_lost = "<div class='error'>Обнаружены следующие ошибки:<br>Код безопасности не соответствует отображённому.</div>";
}
else
{
$_SESSION["sw_captcha"] = false;
$lost_l2login = $ldb->safe($_POST["lost_l2login"]);
$sel_question = $ldb->query("SELECT `l2question` FROM `accounts` WHERE `login`='{$lost_l2login}' LIMIT 0,1");
Второй шаг
PHP код:
elseif (isset($_POST["submit_lost"]) && isset($_POST["step2"]))
{
$lost_l2answer = $_POST["lost_l2answer"];
$lost_l2login = $_POST["step2"];
list($lost_l2answer_db, $_l2email) = $ldb->fetch_array($ldb->query("SELECT `l2answer`,`l2email` FROM `accounts` WHERE `login`='{$lost_l2login}' LIMIT 0,1"));
if ($lost_l2answer != $lost_l2answer_db)
{
$error_lost = "<div class='error'>Обнаружены следующие ошибки:<br>Ответ на секретный вопрос не верный!</div>";
}
Как видим, в post параметре step2 (второй шаг формы "забыли пароль"), не фильтруется логин участника, из-за чего и имеем данную уязвимость. Как эксплуатировать? Я думаю разберётесь
(c)v1d0q
Последний раз редактировалось v1d0qz; 12.04.2010 в 15:50..
|
|
|