Уязвимость в WAP-MOTOR 18
1.
Lugaro (18.07.2010 / 19:23)
Знаю что уже есть 19 версия и в ней вроде бы выключен регистр глобал(не смотрел скрипт), но все ещё многие сидят на 18 версии и думаю информация будет полезной, правда не знаю была ли закрыта эта уязвимость в обновлениях к 18'му, в общем суть, заказали скрипт под 18 мотор, в процессе наткнулся на такой код
for ($u=0; $u<$config_userprofkey; $u++){
$utext.=$udata[$u].':||:';}
Тут после изменения каких либо дынных в профиле, происходит склейка ячеек для дальнейшей записи в профиль, переменная $utext до этого не где не установлена и т.к включен регистрглобал, её можно передать через адресную строку, можно полностью изменить профиль, и так везде где происходит работа с файлом анкеты, можно себя сделать админом, либо же к примеру при отправки привата, отредактировать адкету главного админа и получить к ней доступ, как вариант можно написать $utext = ''; в каком нибудь файле который инклюдится по всему движку, тогда не смогут её подменить
2.
Ден (18.07.2010 / 19:28)
1, через час плюсану
3.
Антон (18.07.2010 / 19:43)
афигеть
4.
Антон (18.07.2010 / 19:46)
1, а как ты номер ячейки в массиве через адресную строку передашь? знаки [] фильтруются
5.
Lugaro (18.07.2010 / 19:52)
4.
Acer, а зачем номер? просто берешь кусок профиля начиная от логина и до левела, и вставляешь, оно вставится в самое начало а лишние ячейки обрежет
6.
Антон (18.07.2010 / 19:54)
хм, логично
7.
Антон (18.07.2010 / 19:59)
вот эти знаки запрещены :||:, 403
8.
Lugaro (18.07.2010 / 20:05)
Ты на какой веси тестишь ? у меня 18.00 на локалке
9.
Антон (18.07.2010 / 20:05)
18.1
10.
Антон (18.07.2010 / 20:28)
идея понятна
, но она будет работать на старых моторах
11.
Lugaro (18.07.2010 / 20:48)
ну в принципе возможно ещё причина в настройках php, я проверил только на денвере и на хосте, у меня работает, другие версии просто нет времени смотреть да и лень, как бы особого интереса нет, кто хочет пусть поиграет на локалке с разными версиями, только убедитесь что на чистом 18.0 работает, если нет, значить дело в настройках рнр, если работает, а на версии 18.1 нет, значить В 18.1 есть заплатка
12.
Иван (18.07.2010 / 21:07)
сейчас одни пойдут латать, а другие ломать. всё как обычно. Поставлю плюс.
13.
Azzido (18.07.2010 / 21:15)
Вот как одна точка решает судьбу
14.
Lugaro (18.07.2010 / 21:27)
Там ещё много чего можно найти включив полный вывод ошибок, включая и нотики, о модулях даже страшно говорить, большая часть написаны новичками и 100% с error_reporting 0 ) а с реглобал это убийство
15.
Антон (18.07.2010 / 21:28)
в 18.1 есть чек урл, он и сбрасывает на 403
16.
Lugaro (18.07.2010 / 21:34)
15.
Acer,
вот что сбрасывает
foreach ($_GET as $check_getstring) {
if(eregi("\|", $check_getstring) || is_array($check_getstring)){
header ("Location: ".BASEDIR."index.php?isset=403&".SID); exit;
}}
unset($check_getstring);
foreach ($_POST as $check_poststring) {
if(eregi("\|", $check_poststring) || is_array($check_poststring)){
header ("Location: ".BASEDIR."index.php?isset=403&".SID); exit;
}}
ну и ниже есть
if(isset($_GET['utext'])){$_GET['utext']="";}
if(isset($_POST['utext'])){$_POST['utext']="";}
if(isset($_GET['utexts'])){$_GET['utexts']="";}
if(isset($_POST['utexts'])){$_POST['utexts']="";}
if(isset($_GET['uzer_text'])){$_GET['uzer_text']="";}
if(isset($_POST['uzer_text'])){$_POST['uzer_text']="";}
$utext="";
$utexts="";
$uzer_text="";
17.
Антон (18.07.2010 / 21:53)
хрен один, сначала фильтруются символы а потом эти переменные очищаются, так что, писать в строке бессмысленно, все пропадёт
18.
Славик (19.07.2010 / 14:43)
Через эту дыру ломали висы
19.
Lugaro (19.07.2010 / 15:12)
Рас старая значить тему офф
Я мотор последний рас открывал больше полу года назад, а пользовался ним наверно с года 3 назад) так что не особо в курсе всех новостей
URL:
https://visavi.net/topics/11663