myBloggie система ведения блогов, основанная на PHP и mySQL.
Указанные выше версии имеют уязвимости типа SQL-инъекция. Эта уязвимость может быть использована для обхода механизма аутентификации, повышения привелегий и получении определенной
системной информации.
Уязвимость обнаружена в скрипте login.php, данные вводимые в поля, значение которых передается в переменные '$username' и '$passwd') не проверяются на присутствие в них опасных символов.
В результате возможна SQL-инъекция.
Часть уязвимого кода:
<----------------------------login.php snippet--------------------------------->
if (isset($_POST['username'])) {
$username=$_POST['username'];
} else $username="";
$result = mysql_query( «SELECT user FROM .USER_TBL. WHERE user='$username'
AND password='$passwd'» ) or error( mysql_error() );
<------------------------------------------------------------------------------>
Это может быть использовано злоумышленником в нескольких вариантах
1. Обход аутентификации
Злонамеренный пользователь может залогинится в систему, используя SQL-инъекцию,
и ввести в поле User Name значение: «admin' OR 'x'='x». Как видно из приведенного участка кода,
поле Password можно оставить пустым.
// Прим. securityinfo.ru: «Эх.. Дети чтоли пишут эти блоги…»
2. Повышение привелегий.
Когда пользователь системы, без прав администратора введет, к примеру: «user1' OR 'x'='x»,
в поле User Name, он получит администраторские права.
3. Раскрытие установочного пути.
Информация об установочном пути будет раскрыта в сообщении об ошибке, в случае ввода
неверного имени пользователя в поле Name field скрипта login.php.
Эксплоит:
1. POST http://example.com/mybloggie/login.php?username=admin' OR 'x'='x
2. POST http://example.com/mybloggie/login.php?username=normal_user' OR 'one'='one
3. POST http://example.com/mybloggie/login.php?username='1=1 --
Решение:
Патч:
http://mywebland.com/forums/showtopic.php?t=399