PDA

Просмотр полной версии : Обзор уязвимостей Intraschool


Shaitan-Devil
19.11.2009, 18:34
Собрал несколько найденных мной уязвимостей.
Небольшая CMS.
http://sourceforge.net/projects/intraschool/
1) Sql-injection
В скрипте login/login.php

<?php
// /login/login.php: Login process
// author: Jonathan Roes <jroes@sosdg.org>

include '../includes/common.inc';

$username = $_POST['username'];
$password = $_POST['password'];

if (isset($username, $password))
{
if (authUser($username, $password))
{
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;

$tourl = $_POST['tourl'];
if (!isset($tourl)) {
header('Location: /login/home.php');
exit;
} else {
header('Location: ' . $tourl);
}
}
}

header('Location: /login/index.php?error=1');
?>

1) Уязвимое Header. После редиректа, код будет продолжать выполняться.

nikp
19.11.2009, 19:16
1) Уязвимое Location. После редиректа, код будет продолжать выполняться.
2) Данные не фильтруются.
Смотрим функцию authUser()
include/authUser

$authQuery='
SELECT userPasswd FROM '._AUTH_DB_TABLE.' WHERE
userId="'.mysql_escape_string($userId).'" LIMIT 1
';
if ($row['userPasswd']==md5($passwd)) {



Фильтрация есть,
с $userId не сможешь выйти за кавычки.

bug1z
19.11.2009, 19:25
1) Уязвимое Location. После редиректа, код будет продолжать выполняться.

Не вижу актуальности этой "уязвимости".


login/studentlogin.php

if (!isset($_POST['studentid']) && !isset($_SESSION['studentid'])) {
// didn't enter anything!?
header('Location: /index.php');
exit;
}

И снова, бажный Location.


Я наверное не совсем понимаю, ГДЕ ЗДЕСЬ УЯЗВИМОСТО???

Во первых: Location - это аргумент ф-и, дело не в нем.
Уязвимости имеет ф-я header(), но только в том случае, если после нее НЕ стоит exit или die, только в этом случае код продолжит свое выполнение и мы сможем подделать HTTP запрос.
Так ГДЕ ЗДЕСЬ УЯЗВИМОСТЬ?

Shaitan-Devil
19.11.2009, 20:09
Сорри. Исправил. Буду искать еще.

m0Hze
21.11.2009, 12:38
Собрал несколько найденных мной уязвимостей.
Небольшая CMS.
http://sourceforge.net/projects/intraschool/
1) Sql-injection
В скрипте login/login.php

<?php
// /login/login.php: Login process
// author: Jonathan Roes <jroes@sosdg.org>

include '../includes/common.inc';

$username = $_POST['username'];
$password = $_POST['password'];

if (isset($username, $password))
{
if (authUser($username, $password))
{
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;

$tourl = $_POST['tourl'];
if (!isset($tourl)) {
header('Location: /login/home.php');
exit;
} else {
header('Location: ' . $tourl);
}
}
}

header('Location: /login/index.php?error=1');
?>

1) Уязвимое Header. После редиректа, код будет продолжать выполняться.
Где тут указана SQl-inj? Невижу уязвимого кода.
Какой код должен испоняться после header()?Там же конец файла :/