**버그 바운티 팁**: **해커들에 의해 만들어진 프리미엄 버그 바운티 플랫폼인 Intigriti에 가입**하세요! 오늘 [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)에서 참여하여 최대 **$100,000**의 바운티를 받으세요!
**응답의 HTTP 헤더 및 쿠키**는 사용 중인 **기술** 및/또는 **버전**을 식별하는 데 매우 유용할 수 있습니다. **Nmap 스캔**은 서버 버전을 식별할 수 있지만, [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)또는 [**https://builtwith.com/**](https://builtwith.com)**:**와 같은 도구도 유용할 수 있습니다.
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** 웹사이트의 보안 취약점을 찾기 위해 사용됩니다. (GUI)\
[**testssl.sh**](https://github.com/drwetter/testssl.sh)를 사용하여 **취약점**을 확인하고 (Bug Bounty 프로그램에서는 이러한 유형의 취약점이 허용되지 않을 수 있음) [**a2sv**](https://github.com/hahwul/a2sv)를 사용하여 취약점을 재확인하세요:
웹 내부에서 어떤 종류의 **스파이더**를 실행합니다. 스파이더의 목표는 테스트된 애플리케이션에서 **가능한 많은 경로를 찾는 것**입니다. 따라서 웹 크롤링과 외부 소스를 사용하여 가능한 많은 유효한 경로를 찾아야 합니다.
* [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML 스파이더, JS 파일 및 외부 소스 (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com)에서 LinkFinder 사용.
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML 스파이더, JS 파일 및 외부 소스로 Archive.org 사용.
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML 스파이더, "중요한 파일"도 표시합니다.
* [**evine** ](https://github.com/saeeddhqan/evine)(go): 대화형 CLI HTML 스파이더. Archive.org에서도 검색합니다.
* [**meg**](https://github.com/tomnomnom/meg) (go): 이 도구는 스파이더가 아니지만 유용할 수 있습니다. 호스트 파일과 경로 파일을 지정하면 meg가 각 호스트의 각 경로를 가져와 응답을 저장합니다.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JS 렌더링 기능이 있는 HTML 스파이더입니다. 그러나 유지되지 않는 것 같으며, 미리 컴파일된 버전이 오래되었고 현재 코드는 컴파일되지 않습니다.
* [**gau**](https://github.com/lc/gau) (go): 외부 공급자(wayback, otx, commoncrawl)를 사용하는 HTML 스파이더입니다.
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): 이 스크립트는 매개변수가 있는 URL을 찾아 나열합니다.
* [**galer**](https://github.com/dwisiswant0/galer) (go): JS 렌더링 기능이 있는 HTML 스파이더입니다.
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): JS 파일에서 새로운 경로를 검색할 수 있는 JS 뷰티파이 기능이 있는 HTML 스파이더입니다. LinkFinder의 래퍼인 [JSScanner](https://github.com/dark-warlord14/JSScanner)도 살펴볼 가치가 있습니다.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTML 소스와 포함된 javascript 파일에서 엔드포인트를 추출하는 도구입니다. 버그 헌터, 레드 팀, 정보보안 닌자에게 유용합니다.
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Tornado와 JSBeautifier를 사용하여 JavaScript 파일에서 상대적인 URL을 구문 분석하는 Python 2.7 스크립트입니다. AJAX 요청을 쉽게 발견하는 데 유용합니다. 유지되지 않는 것 같습니다.
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): 파일(HTML)을 지정하면 미관적인(압축된) 파일에서 상대적인 URL을 찾아 추출하는 데 사용되는 귀여운 정규식을 사용합니다.
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, 여러 도구): 여러 도구를 사용하여 JS 파일에서 흥미로운 정보를 수집합니다.
* [**subjs**](https://github.com/lc/subjs) (go): JS 파일을 찾습니다.
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): 무헤드 브라우저에서 페이지를 로드하고 로드된 모든 URL을 출력합니다.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 이전 도구의 여러 옵션을 혼합한 콘텐츠 탐색 도구
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS 파일에서 경로와 매개변수를 찾기 위한 Burp 확장 프로그램.
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URL을 제공하면 정리된 JS 코드를 가져옵니다.
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 주어진 대상의 엔드포인트를 발견하는 도구입니다.
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** wayback machine에서 링크를 발견합니다(wayback에서 응답을 다운로드하고 더 많은 링크를 찾습니다).
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): 양식을 작성하여 크롤링하고 특정 정규식을 사용하여 민감한 정보를 찾습니다.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite는 사이버 보안 전문가를 위해 설계된 고급 다기능 GUI 웹 보안 크롤러/스파이더입니다.
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): JavaScript 소스 코드에서 URL, 경로, 비밀번호 및 기타 흥미로운 데이터를 추출하기 위한 Go 패키지 및 [명령줄 도구](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)입니다.
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): 요청에서 매개변수와 엔드포인트를 추출하여 퍼징 및 열거를 위한 사용자 정의 워드리스트를 생성하기 위한 간단한 **Burp Suite 확장 프로그램**입니다.
### 디렉토리 및 파일 무차별 대입
루트 폴더에서 **무차별 대입(brute-forcing)**을 시작하고 **찾은 모든 디렉토리**를 **이 방법**과 **스파이더링**에서 발견한 디렉토리 **모두**에 대해 무차별 대입해야 합니다(무차별 대입을 **재귀적으로** 수행하고 발견한 디렉토리의 이름을
_브루트 포싱이나 스파이더링 중에 새로운 디렉토리를 발견하면 브루트 포싱을 해야 합니다._
### 각 파일에서 확인해야 할 사항
* [**링크가 깨진 링크 확인기**](https://github.com/stevenvachon/broken-link-checker): 탈취 가능성이 있는 HTML 내에서 깨진 링크 찾기
* **파일 백업**: 모든 파일을 찾은 후, 실행 가능한 파일 ("_.php_", "_.aspx_" 등)의 백업을 찾아야 합니다. 백업의 일반적인 이름 변형은 다음과 같습니다: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp 및 file.old._ [**bfac**](https://github.com/mazen160/bfac) **또는** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**** 도구를 사용할 수도 있습니다.
* **새로운 매개변수 발견**: [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **및** [**Param Miner**](https://github.com/PortSwigger/param-miner) **와 같은 도구를 사용하여 숨겨진 매개변수를 발견할 수 있습니다. 가능하다면 각 실행 가능한 웹 파일에서 숨겨진 매개변수를 검색해 볼 수도 있습니다.
* _Arjun의 모든 기본 단어 목록:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
* **주석**: 모든 파일의 주석을 확인하면 **자격 증명**이나 **숨겨진 기능**을 찾을 수 있습니다.
* **CTF**를 진행하는 경우, 페이지의 **오른쪽**에 주석 내에 **정보를 숨기는** "일반적인" 트릭이 있습니다 (브라우저에서 소스 코드를 열면 데이터를 보지 못하도록 **수백 개의 공백**을 사용). 다른 가능성은 **여러 개의 새 줄**을 사용하고 웹 페이지의 **하단**에 주석에 정보를 숨기는 것입니다.
* **API 키**: **API 키**를 찾으면 다음 가이드를 사용하여 다른 플랫폼의 API 키를 사용할 수 있습니다: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
* Google API 키: **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik와 같은 API 키를 찾으면 프로젝트 [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner)를 사용하여 키가 액세스할 수 있는 API를 확인할 수 있습니다.
* **S3 버킷**: 스파이더링 중에 **서브도메인**이나 **링크**가 어떤 **S3 버킷**과 관련이 있는지 확인하세요. 그 경우 [**버킷의 권한을 확인**](buckets/)하세요.
### 특별한 발견
**스파이더링** 및 **브루트 포싱**을 수행하는 동안 **주목해야 할 흥미로운 사항**을 발견할 수 있습니다.
**흥미로운 파일**
* **CSS** 파일 내부에 다른 파일로의 **링크**를 찾으세요.
* _**.git**_ 파일을 찾으면 [정보를 추출할 수 있습니다](git.md).
* _**.env**_ 파일을 찾으면 API 키, 데이터베이스 비밀번호 및 기타 정보를 찾을 수 있습니다.
* **API 엔드포인트**를 찾으면 [테스트해야 합니다](web-api-pentesting.md). 이들은 파일은 아니지만 파일과 유사할 수 있습니다.
* **JS 파일**: 스파이더링 섹션에서 JS 파일에서 경로를 추출할 수 있는 여러 도구가 언급되었습니다. 또한, 코드에 잠재적인 취약점이 도입되었을 수도 있는 변경 사항을 **감시**하는 것이 흥미로울 수 있습니다. 예를 들어 [**JSMon**](https://github.com/robre/jsmon)**을 사용**할 수 있습니다.
* 발견한 JS 파일을 [**RetireJS**](https://github.com/retirejs/retire.js/) 또는 [**JSHole**](https://github.com/callforpapers-source/jshole)로 취약점이 있는지 확인해야 합니다.
* **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
Description: Tailored Nmap Scan for web Vulnerabilities
Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP}