Уязвимость в 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 smile

10. Антон (18.07.2010 / 20:28)
идея понятна klass , но она будет работать на старых моторах

11. Lugaro (18.07.2010 / 20:48)
ну в принципе возможно ещё причина в настройках php, я проверил только на денвере и на хосте, у меня работает, другие версии просто нет времени смотреть да и лень, как бы особого интереса нет, кто хочет пусть поиграет на локалке с разными версиями, только убедитесь что на чистом 18.0 работает, если нет, значить дело в настройках рнр, если работает, а на версии 18.1 нет, значить В 18.1 есть заплатка smile

12. Иван (18.07.2010 / 21:07)
smile сейчас одни пойдут латать, а другие ломать. всё как обычно. Поставлю плюс.

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)
Рас старая значить тему офф smile
Я мотор последний рас открывал больше полу года назад, а пользовался ним наверно с года 3 назад) так что не особо в курсе всех новостейsmile

URL: https://visavi.net/topics/11663