Вступление. В данном топике я предлагаю отойти на минуту от основной тематики уязвимости web интерфейсов в целом и исследований исходного кода различных CMS в часности. Хочу поговорить с вами о ситуации которая большинство из нас и приводит на подобные форумы - взлом любой ценой. На написание подобного текста меня навела тема "ваши вопросы по уязвимостям". По тем или иным причинам мы выбираем жертву, не обладая нужными навыками мы просим помощи, руководствуясь поверхностным пониманием что взлом это набор знаний о уязвимых скриптах и возможных уязвимостях в скриптах. С чего же всетаки должен начинатся взлом? Со сбора инфорации о жертве. Вообще любое достижение цели можно представить в виде графика где одна ось будет отображать наши навыки, а вторая объем инфорации которой мы обладаем, таким образом в контексте уязвимостей получается что действительно уязвимо все, если мы не можем что-то взломать либо у нас не достаточно информации о жертве, либо мы не умее ее правильно применять. На этом закрываю страничку философии, как вы уже поняли речь пойдет о сборе инфорации о жертве, в данной статье я постараюсь максимально поделится собвственным опытом с живыми примерами, автоматизацией и прочими плюшками. 1.Whois. Дает возможность увидеть информацию о регистрационных данных, владельцах доменных имён, IP-адресов и автономных систем. Живой пример того что это может дать с точки зрения взлома: exploit.in http://r01.ru/whois/check-domain.php?domain=exploit.in Code: [email protected] Секретный вопрос Code: Номер паспортa Code: Tech Name:Ivan Leskov Tech Organization: Tech Street1:ul.Smolnaya,43, kv.15 Tech Street2: Tech Street3: Tech City:Moscow Можно украсть домен. Нужна база жителей МСК. 2.Cкан вэб директорий. Часто на директории не выставляются нужные права или же конфигурационные фаилы лежат с читаемым расширением в одной из папок на сервере. В поисках подобного мне помагает dirbuster: http://sourceforge.net/projects/dirbuster/ Вы скажете, что это удел маленьких сайтов? Вот вам живой пример одного из самых посещаемых покер сайтов в мире: 888poker.com Code: How is this site ranked relative to other sites? Global Rank 1,275 Rank in Russia 198 На поддомене лежит открытая директория _ttps://shop.888poker.com/tests/selenium/ в которой спрятан логин/пасс от админ панели. Многии сканеры не отличают существующую дерикторию от несуществующей в nginx, проверить это достаточно просто, если дериктория существует по уолчанию там находится .htaccess. 3.Reverse IP Domain Check. Инструент:yougetsignal.com/tools/web-sites-on-web-server/ Все мы прекрасно знаем как устроены хостинги, лишний раз напоминаю что стоит проверять список сайтов на 1 ип. Таким-же способом стоит проверять все потдомены и ресурсы одной организации как в примере с 888.com взломанной через shop.888poker.com. 4.Сайты разработчиков. Иногда на сайтах устанавливается не распространенная CMS "под ключь", подобные CMS и их разработчики грешат тем что перед установкой и настройкой всем импортируют один дамп бд, с штатным паролем администратора, после чего не деактивируют свою учетную запись. 5.Сайты провайдеров. Не забывайте что любой vds/vps у кого-то куплен, провайдеры/хостеры такие-же люди. Частой ошибкой подобных организаций является открытый доступ к роутерам из вне и стандартные пароли на них. Стоит лишний раз просканировать весь дианазон ип адресов в поисках подобного. Доступ к роутерам/каммутаторам дает вам возожность снифать трафик, например атаки вида MITM и двигатся дальше по подсети. http://www.shodanhq.com/ - так-же в помощь. 6. Сканирование портов Стандартная продцедура, позваляет понять какие сервисы крутятся и не задавать вопросов почему я не могу раскрутить sql-inj когда на машине стоит MSSql. Накидал под свои нужды и делюсь с вами ,асинхронный сканер портов, очень быстро, удобно, модно, молодёжно. Code: #define MAX_SOCKETS 100 // Ports to scan #define MAX_THREADS 100 // Threads limit int Threads = 0; extern char StartIP[MAX_PATH], EndIP[MAX_PATH]; VOID WINAPI ScanRoutine( WORD Port ) { DWORD dwStart, dwEnd; SOCKET Sockets[MAX_SOCKETS]; int BusySocks, Options, Length, BusyAddrs[MAX_SOCKETS]; struct sockaddr_in addr; fd_set fdWaitSet; struct timeval tv; do { if (!strlen(StartIP) || !strlen(EndIP)) { break; } dwStart = htonl(inet_addr(StartIP)); dwEnd = htonl(inet_addr(EndIP)); if (!dwStart || !dwEnd) { break; } for (DWORD i=dwStart; i<dwEnd; i++) { BusySocks = 0; memset(Sockets, 0, sizeof(Sockets)); memset(BusyAddrs, 0, sizeof(BusyAddrs)); for (int j=0; j<MAX_SOCKETS; j++) { Sockets[j] = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (!Sockets[j]) { continue; } BusySocks++; addr.sin_family = AF_INET; addr.sin_port = htons(Port); addr.sin_addr.S_un.S_addr = htonl(i); ULONG ulBlock; ulBlock = 1; if (ioctlsocket(Sockets[j], FIONBIO, &ulBlock) == SOCKET_ERROR) { continue; } connect(Sockets[j], (struct sockaddr *)&addr, sizeof(addr)); if (WSAGetLastError() == WSAEINPROGRESS) { closesocket(Sockets[j]); BusySocks--; BusyAddrs[j] = 0; } else { BusyAddrs[j] = i; } if (i<dwEnd) { i++; } else { break; } } FD_ZERO (&fdWaitSet); for (int k=0; k<MAX_SOCKETS; k++) { if (BusyAddrs[k]) { FD_SET(Sockets[k], &fdWaitSet); } } tv.tv_sec = 1; tv.tv_usec = 0; if (select(1, NULL, &fdWaitSet, NULL, &tv) == SOCKET_ERROR) { continue; } for (int i=0; i<MAX_SOCKETS; i++) { if (BusyAddrs[i]) { if (FD_ISSET (Sockets[i], &fdWaitSet)) { Length = sizeof(Options); if (getsockopt(Sockets[i], SOL_SOCKET, SO_ERROR, (char*)&Options, &Length) == SOCKET_ERROR) { continue; } if (Options == 0) { #ifdef _DBG_PRINT_ addr.sin_addr.S_un.S_addr = htonl(BusyAddrs[i]); char tmp[MAX_PATH]; DWORD dwtmp; wsprintf(tmp, "\r\n%s:%d OPENED [%d:%d]\r\n", inet_ntoa(addr.sin_addr), Port, Threads + 1, MAX_THREADS); WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), tmp, strlen(tmp), &dwtmp, NULL); #endif switch (Port) { // payload default: break; } } } } } for (int j=0; j<MAX_SOCKETS; j++) { closesocket(Sockets[j]); } while (Threads >= MAX_THREADS) { Sleep(1000); } } } while (FALSE); ExitThread(ERROR_SUCCESS); } 7. Человеческий фактор. Не забывайте что все пользуются копьютерами, даже систеные администраторы не всегда уделяют много времяни безопасности именно своих ПК или телефонов,напримере BBC, Часто получив реальный IP можно с легкостью попасть в целевую систему и найти нужные нам данные. Тема будет пополнятся, буду рад вашему опыту.
Попробую дополнить своим скромным опытом: - Google security research Крупнейшая поисковая система порой реально помогает на определенных этапах сбора информации. Для того, чтобы запустить поиск по конкретному сайту нужно воспользоваться оператором поиска site: (https://support.google.com/websearch/answer/136861?hl=en). Что конкретно можно найти таким образом? - директории/файлы, на которые нет линков с основного сайта, но которые по воле неведомого случае оказались в индексе поисковой системы (админ убрал линк, гугл нашел линк в другом месте, etc..). - информацию о внутреннем устройстве сайта (возможно, в гугле сохранились данные о вывале сайта в ошибки с раскрытием путей, имен переменных, имен файлов, имен БД, таблиц и т.п.). - Чужой шелл, если таковой имеется и попал в индекс (почти шутка). e17, а nmap как сканер портов чем тебя не устраивает?
Быстродействием когда речь идет о диапазонах, спасибо за дополнение. Кстати по теме поиска через гугл, редкость но можно найти уязвимые скрипты или расскрытие путей гугя : имя сайта error in SQL , и тд. В таком случае либо ошибка должна провисеть долго, либо попасть в момент индексации. 8. Хостеры. В частных случаях хостеры создают резервную копию баз данных и www каталога, есть вероятность поймать момент переезда, либо взлом e-mail с целью запроса восстановления данных.
0.google,bing,yahoo,yandex,.... 1.http://dazzlepod.com/ip/?ip_address=antichat.ru 2.http://bgp.he.net/dns/antichat.ru 3.https://www.owasp.org/index.php/Category:OWASP_DirBuster_Project 4.https://www.owasp.org/index.php/Category:OWASP_Webslayer_Project 5.exploit-db.com > думать 6.Chromebleed 1.1.1 >http://goo.gl/nsmxjc lulz > http://ahack.ru/articles/how-antichat-ru-was-hacked.htm 2014 > http://9796933.ru/pravo/