# 80,443 - Pentesting Web Methodology {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** πŸ’¬ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_μœ μ°½ν•œ ν΄λž€λ“œμ–΄ ν•„κΈ° 및 ꡬ사 ν•„μš”_). {% embed url="https://www.stmcyber.com/careers" %} ## Basic Info μ›Ή μ„œλΉ„μŠ€λŠ” κ°€μž₯ **일반적이고 κ΄‘λ²”μœ„ν•œ μ„œλΉ„μŠ€**이며 λ§Žμ€ **λ‹€μ–‘ν•œ μœ ν˜•μ˜ 취약점**이 μ‘΄μž¬ν•©λ‹ˆλ‹€. **κΈ°λ³Έ 포트:** 80 (HTTP), 443(HTTPS) ```bash PORT STATE SERVICE 80/tcp open http 443/tcp open ssl/https ``` ```bash nc -v domain.com 80 # GET / HTTP/1.0 openssl s_client -connect domain.com:443 # GET / HTTP/1.0 ``` ### Web API Guidance {% content-ref url="web-api-pentesting.md" %} [web-api-pentesting.md](web-api-pentesting.md) {% endcontent-ref %} ## Methodology summary > 이 λ°©λ²•λ‘ μ—μ„œλŠ” 도메인(λ˜λŠ” μ„œλΈŒλ„λ©”μΈ)을 κ³΅κ²©ν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 발견된 각 도메인, μ„œλΈŒλ„λ©”μΈ λ˜λŠ” λ²”μœ„ λ‚΄μ˜ λΆˆν™•μ‹€ν•œ μ›Ή μ„œλ²„κ°€ μžˆλŠ” IP에 이 방법둠을 μ μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. * [ ] **μ›Ή μ„œλ²„**μ—μ„œ μ‚¬μš©λ˜λŠ” **기술**을 **식별**ν•˜λŠ” 것뢀터 μ‹œμž‘ν•©λ‹ˆλ‹€. κΈ°μˆ μ„ μ„±κ³΅μ μœΌλ‘œ 식별할 수 μžˆλ‹€λ©΄ λ‚˜λ¨Έμ§€ ν…ŒμŠ€νŠΈ λ™μ•ˆ 염두에 두어야 ν•  **트릭**을 μ°Ύμ•„λ³΄μ„Έμš”. * [ ] 기술 λ²„μ „μ˜ **μ•Œλ €μ§„ 취약점**이 μžˆμŠ΅λ‹ˆκΉŒ? * [ ] **잘 μ•Œλ €μ§„ 기술**을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? 더 λ§Žμ€ 정보λ₯Ό μΆ”μΆœν•˜κΈ° μœ„ν•œ **μœ μš©ν•œ 트릭**이 μžˆμŠ΅λ‹ˆκΉŒ? * [ ] μ‹€ν–‰ν•  **μ „λ¬Έ μŠ€μΊλ„ˆ**κ°€ μžˆμŠ΅λ‹ˆκΉŒ(예: wpscan)? * [ ] **일반 λͺ©μ μ˜ μŠ€μΊλ„ˆ**λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. 무언가λ₯Ό λ°œκ²¬ν• μ§€, ν₯미둜운 정보λ₯Ό λ°œκ²¬ν• μ§€ μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€. * [ ] **초기 검사**둜 μ‹œμž‘ν•©λ‹ˆλ‹€: **robots**, **sitemap**, **404** 였λ₯˜ 및 **SSL/TLS μŠ€μΊ”**(HTTPS인 경우). * [ ] μ›Ή νŽ˜μ΄μ§€λ₯Ό **μŠ€νŒŒμ΄λ”λ§**ν•˜κΈ° μ‹œμž‘ν•©λ‹ˆλ‹€: κ°€λŠ₯ν•œ λͺ¨λ“  **파일, 폴더** 및 **μ‚¬μš©λ˜λŠ” λ§€κ°œλ³€μˆ˜**λ₯Ό **μ°ΎλŠ”** μ‹œκ°„μž…λ‹ˆλ‹€. λ˜ν•œ **νŠΉλ³„ν•œ 발견**을 ν™•μΈν•˜μ„Έμš”. * [ ] _브루트 포싱 λ˜λŠ” μŠ€νŒŒμ΄λ”λ§ 쀑에 μƒˆλ‘œμš΄ 디렉토리가 발견될 λ•Œλ§ˆλ‹€ μŠ€νŒŒμ΄λ”λ§ν•΄μ•Ό ν•©λ‹ˆλ‹€._ * [ ] **디렉토리 브루트 포싱**: 발견된 λͺ¨λ“  폴더λ₯Ό 브루트 ν¬μŠ€ν•˜μ—¬ μƒˆλ‘œμš΄ **파일** 및 **디렉토리**λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€. * [ ] _브루트 포싱 λ˜λŠ” μŠ€νŒŒμ΄λ”λ§ 쀑에 μƒˆλ‘œμš΄ 디렉토리가 발견될 λ•Œλ§ˆλ‹€ 브루트 포싱해야 ν•©λ‹ˆλ‹€._ * [ ] **λ°±μ—… 확인**: 일반적인 λ°±μ—… ν™•μž₯자λ₯Ό μΆ”κ°€ν•˜μ—¬ **발견된 파일**의 **λ°±μ—…**을 찾을 수 μžˆλŠ”μ§€ ν…ŒμŠ€νŠΈν•©λ‹ˆλ‹€. * [ ] **브루트 포슀 λ§€κ°œλ³€μˆ˜**: **μˆ¨κ²¨μ§„ λ§€κ°œλ³€μˆ˜**λ₯Ό **μ°Ύμ•„λ³΄μ„Έμš”**. * [ ] **μ‚¬μš©μž μž…λ ₯**을 μˆ˜μš©ν•˜λŠ” λͺ¨λ“  κ°€λŠ₯ν•œ **μ—”λ“œν¬μΈνŠΈ**λ₯Ό **식별**ν•œ ν›„, κ΄€λ ¨λœ λͺ¨λ“  μ’…λ₯˜μ˜ **취약점**을 ν™•μΈν•©λ‹ˆλ‹€. * [ ] [이 체크리슀트λ₯Ό λ”°λ₯΄μ„Έμš”](../../pentesting-web/web-vulnerabilities-methodology.md) ## Server Version (Vulnerable?) ### Identify μ‹€ν–‰ 쀑인 μ„œλ²„ **버전**에 λŒ€ν•œ **μ•Œλ €μ§„ 취약점**이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.\ **μ‘λ‹΅μ˜ HTTP 헀더 및 μΏ ν‚€**λŠ” μ‚¬μš© 쀑인 **기술** 및/λ˜λŠ” **버전**을 **식별**ν•˜λŠ” 데 맀우 μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. **Nmap μŠ€μΊ”**은 μ„œλ²„ 버전을 식별할 수 μžˆμ§€λ§Œ, [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech) λ˜λŠ” [**https://builtwith.com/**](https://builtwith.com)**와 같은 도ꡬ도 μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:** ```bash whatweb -a 1 #Stealthy whatweb -a 3 #Aggresive webtech -u webanalyze -host https://google.com -crawl 2 ``` Search **for** [**μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 취약점** **버전**](../../generic-methodologies-and-resources/search-exploits.md) ### **WAF ν™•μΈν•˜κΈ°** * [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f) * [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git) * [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html) ### μ›Ή 기술 트릭 λ‹€μ–‘ν•œ 잘 μ•Œλ €μ§„ **기술**μ—μ„œ **취약점**을 μ°ΎκΈ° μœ„ν•œ **트릭**: * [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md) * [**Apache**](apache.md) * [**Artifactory**](artifactory-hacking-guide.md) * [**Buckets**](buckets/) * [**CGI**](cgi.md) * [**Drupal**](drupal/) * [**Flask**](flask.md) * [**Git**](git.md) * [**Golang**](golang.md) * [**GraphQL**](graphql.md) * [**H2 - Java SQL λ°μ΄ν„°λ² μ΄μŠ€**](h2-java-sql-database.md) * [**IIS 트릭**](iis-internet-information-services.md) * [**JBOSS**](jboss.md) * [**Jenkins**](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md) * [**Jira**](jira.md) * [**Joomla**](joomla.md) * [**JSP**](jsp.md) * [**Laravel**](laravel.md) * [**Moodle**](moodle.md) * [**Nginx**](nginx.md) * [**PHP (phpμ—λŠ” μ•…μš©λ  수 μžˆλŠ” ν₯미둜운 트릭이 많음)**](php-tricks-esp/) * [**Python**](python.md) * [**Spring Actuators**](spring-actuators.md) * [**Symphony**](symphony.md) * [**Tomcat**](tomcat/) * [**VMWare**](vmware-esx-vcenter....md) * [**μ›Ή API νŽœν…ŒμŠ€νŒ…**](web-api-pentesting.md) * [**WebDav**](put-method-webdav.md) * [**Werkzeug**](werkzeug.md) * [**Wordpress**](wordpress.md) * [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/) _같은 **도메인**이 **λ‹€λ₯Έ 기술**을 **λ‹€λ₯Έ 포트**, **폴더** 및 **μ„œλΈŒλ„λ©”μΈ**μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€λŠ” 점을 κ³ λ €ν•˜μ„Έμš”._\ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 이전에 λ‚˜μ—΄λœ 잘 μ•Œλ €μ§„ **기술/ν”Œλž«νΌ**μ΄λ‚˜ **기타**λ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€λ©΄, **μΈν„°λ„·μ—μ„œ** μƒˆλ‘œμš΄ νŠΈλ¦­μ„ **κ²€μƒ‰ν•˜λŠ” 것을 μžŠμ§€ λ§ˆμ„Έμš”** (그리고 μ €μ—κ²Œ μ•Œλ €μ£Όμ„Έμš”!). ### μ†ŒμŠ€ μ½”λ“œ κ²€ν†  μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ **μ†ŒμŠ€ μ½”λ“œ**κ°€ **github**에 μžˆλŠ” 경우, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•΄ **μžμ‹ μ΄ 직접 ν™”μ΄νŠΈ λ°•μŠ€ ν…ŒμŠ€νŠΈ**λ₯Ό μˆ˜ν–‰ν•˜λŠ” 것 외에도 ν˜„μž¬ **λΈ”λž™ λ°•μŠ€ ν…ŒμŠ€νŠΈ**에 **μœ μš©ν•œ 정보**κ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€: * **λ³€κ²½ 둜그 λ˜λŠ” README λ˜λŠ” 버전** νŒŒμΌμ΄λ‚˜ **버전 정보에 μ ‘κ·Ό κ°€λŠ₯ν•œ** 것이 μžˆλ‚˜μš”? * **자격 증λͺ…**은 μ–΄λ–»κ²Œ 어디에 μ €μž₯λ˜λ‚˜μš”? 자격 증λͺ…(μ‚¬μš©μž 이름 λ˜λŠ” λΉ„λ°€λ²ˆν˜Έ)이 μžˆλŠ” (μ ‘κ·Ό κ°€λŠ₯ν•œ?) **파일**이 μžˆλ‚˜μš”? * **λΉ„λ°€λ²ˆν˜Έ**λŠ” **일반 ν…μŠ€νŠΈ**, **μ•”ν˜Έν™”**λ˜μ–΄ μžˆκ±°λ‚˜ μ–΄λ–€ **ν•΄μ‹± μ•Œκ³ λ¦¬μ¦˜**이 μ‚¬μš©λ˜λ‚˜μš”? * μ–΄λ–€ 것을 μ•”ν˜Έν™”ν•˜κΈ° μœ„ν•΄ **λ§ˆμŠ€ν„° ν‚€**λ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‚˜μš”? μ–΄λ–€ **μ•Œκ³ λ¦¬μ¦˜**이 μ‚¬μš©λ˜λ‚˜μš”? * μ–΄λ–€ 취약점을 μ΄μš©ν•΄ **이 νŒŒμΌλ“€μ— μ ‘κ·Όν•  수 μžˆλ‚˜μš”**? * **github**에 (ν•΄κ²°λœ 것과 ν•΄κ²°λ˜μ§€ μ•Šμ€ 것) **이슈**에 ν₯미둜운 정보가 μžˆλ‚˜μš”? λ˜λŠ” **컀밋 기둝**에 (μ•„λ§ˆλ„ **였래된 컀밋에 μž…λ ₯된 λΉ„λ°€λ²ˆν˜Έ**)? {% content-ref url="code-review-tools.md" %} [code-review-tools.md](code-review-tools.md) {% endcontent-ref %} ### μžλ™ μŠ€μΊλ„ˆ #### 일반 λͺ©μ μ˜ μžλ™ μŠ€μΊλ„ˆ ```bash nikto -h whatweb -a 4 wapiti -u W3af zaproxy #You can use an API nuclei -ut && nuclei -target # https://github.com/ignis-sec/puff (client side vulns fuzzer) node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ" ``` #### CMS μŠ€μΊλ„ˆ CMSκ°€ μ‚¬μš©λ˜λŠ” 경우 **μŠ€μΊλ„ˆλ₯Ό μ‹€ν–‰ν•˜λŠ” 것을 μžŠμ§€ λ§ˆμ„Έμš”**, μ•„λ§ˆλ„ ν₯미둜운 것이 발견될 수 μžˆμŠ΅λ‹ˆλ‹€: [**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\ [**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/), **Joomla**, **vBulletin** μ›Ήμ‚¬μ΄νŠΈμ˜ λ³΄μ•ˆ 문제. (GUI)\ [**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/)**, PrestaShop, Opencart**\ **CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/) **λ˜λŠ”** [**(M)oodle**](moodle.md)\ [**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md) ```bash cmsmap [-f W] -F -d wpscan --force update -e --url joomscan --ec -u joomlavs.rb #https://github.com/rastating/joomlavs ``` > 이 μ‹œμ μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‚¬μš©ν•˜λŠ” μ›Ή μ„œλ²„μ— λŒ€ν•œ 정보(주어진 데이터가 μžˆμ„ 경우)λ₯Ό 이미 가지고 μžˆμ–΄μ•Ό ν•˜λ©°, ν…ŒμŠ€νŠΈ 쀑에 염두에 두어야 ν•  λͺ‡ 가지 μš”λ Ήμ΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 운이 μ’‹λ‹€λ©΄ CMSλ₯Ό μ°Ύκ³  μŠ€μΊλ„ˆλ₯Ό μ‹€ν–‰ν–ˆμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. ## 단계별 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 탐색 > 이 μ‹œμ λΆ€ν„° μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μƒν˜Έμž‘μš©μ„ μ‹œμž‘ν•  κ²ƒμž…λ‹ˆλ‹€. ### 초기 점검 **ν₯미둜운 정보가 μžˆλŠ” κΈ°λ³Έ νŽ˜μ΄μ§€:** * /robots.txt * /sitemap.xml * /crossdomain.xml * /clientaccesspolicy.xml * /.well-known/ * μ£Όμš” 및 보쑰 νŽ˜μ΄μ§€μ˜ 주석도 ν™•μΈν•˜μ„Έμš”. **였λ₯˜ κ°•μ œ λ°œμƒ** μ›Ή μ„œλ²„λŠ” μ΄μƒν•œ 데이터가 전솑될 λ•Œ **μ˜ˆμƒμΉ˜ λͺ»ν•œ λ°©μ‹μœΌλ‘œ λ™μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€**. μ΄λŠ” **취약점**μ΄λ‚˜ **λ―Όκ°ν•œ μ •λ³΄μ˜ λ…ΈμΆœ**을 μ—΄ 수 μžˆμŠ΅λ‹ˆλ‹€. * /whatever\_fake.php (.aspx, .html, λ“±)와 같은 **κ°€μ§œ νŽ˜μ΄μ§€**에 μ ‘κ·Όν•˜κΈ° * **μΏ ν‚€ κ°’** 및 **λ§€κ°œλ³€μˆ˜** 값에 **"\[]", "]]", 및 "\[\["** μΆ”κ°€ν•˜μ—¬ 였λ₯˜ 생성 * **URL**의 **끝**에 **`/~randomthing/%s`**둜 μž…λ ₯ν•˜μ—¬ 였λ₯˜ 생성 * PATCH, DEBUG λ˜λŠ” FAKE와 같은 **λ‹€μ–‘ν•œ HTTP 동사** μ‹œλ„ #### **파일 μ—…λ‘œλ“œ κ°€λŠ₯ μ—¬λΆ€ 확인 (**[**PUT 동사, WebDav**](put-method-webdav.md)**)** **WebDav**κ°€ **ν™œμ„±ν™”**λ˜μ–΄ μžˆμ§€λ§Œ 루트 폴더에 **파일 μ—…λ‘œλ“œ**λ₯Ό μœ„ν•œ μΆ©λΆ„ν•œ κΆŒν•œμ΄ μ—†λŠ” 경우 λ‹€μŒμ„ μ‹œλ„ν•˜μ„Έμš”: * **자격 증λͺ…** 무차별 λŒ€μž… * μ›Ή νŽ˜μ΄μ§€ λ‚΄μ—μ„œ **발견된 폴더**의 **λ‚˜λ¨Έμ§€**에 WebDavλ₯Ό 톡해 **파일 μ—…λ‘œλ“œ**. λ‹€λ₯Έ 폴더에 νŒŒμΌμ„ μ—…λ‘œλ“œν•  수 μžˆλŠ” κΆŒν•œμ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. ### **SSL/TLS 취약점** * μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ–΄λŠ λΆ€λΆ„μ—μ„œλ„ **HTTPS μ‚¬μš©μ„ κ°•μ œν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄**, μ΄λŠ” **MitM에 μ·¨μ•½**ν•©λ‹ˆλ‹€. * μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ **HTTPλ₯Ό μ‚¬μš©ν•˜μ—¬ λ―Όκ°ν•œ 데이터(λΉ„λ°€λ²ˆν˜Έ)λ₯Ό μ „μ†‘ν•˜λŠ” 경우**, μ΄λŠ” 높은 μ·¨μ•½μ μž…λ‹ˆλ‹€. [**testssl.sh**](https://github.com/drwetter/testssl.sh)λ₯Ό μ‚¬μš©ν•˜μ—¬ **취약점**을 ν™•μΈν•˜κ³  (버그 λ°”μš΄ν‹° ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ 취약점이 μˆ˜μš©λ˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€) [**a2sv**](https://github.com/hahwul/a2sv)λ₯Ό μ‚¬μš©ν•˜μ—¬ 취약점을 μž¬ν™•μΈν•˜μ„Έμš”: ```bash ./testssl.sh [--htmlfile] 10.10.10.10:443 #Use the --htmlfile to save the output inside an htmlfile also # You can also use other tools, by testssl.sh at this momment is the best one (I think) sslscan sslyze --regular ``` 정보 SSL/TLS 취약점에 λŒ€ν•œ: * [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/) * [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/) ### μŠ€νŒŒμ΄λ”λ§ μ›Ή λ‚΄μ—μ„œ μ–΄λ–€ μ’…λ₯˜μ˜ **μŠ€νŒŒμ΄λ”**λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. μŠ€νŒŒμ΄λ”μ˜ λͺ©ν‘œλŠ” ν…ŒμŠ€νŠΈλœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ **κ°€λŠ₯ν•œ λ§Žμ€ 경둜λ₯Ό μ°ΎλŠ” 것**μž…λ‹ˆλ‹€. λ”°λΌμ„œ μ›Ή 크둀링과 μ™ΈλΆ€ μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°€λŠ₯ν•œ λ§Žμ€ μœ νš¨ν•œ 경둜λ₯Ό μ°Ύμ•„μ•Ό ν•©λ‹ˆλ‹€. * [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML μŠ€νŒŒμ΄λ”, JS 파일 및 μ™ΈλΆ€ μ†ŒμŠ€(Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com)μ—μ„œ 링크 μ°ΎκΈ°. * [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML μŠ€νŒŒμ΄λ”, JS νŒŒμΌμ— λŒ€ν•œ LinkFinder 및 Archive.orgλ₯Ό μ™ΈλΆ€ μ†ŒμŠ€λ‘œ μ‚¬μš©. * [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML μŠ€νŒŒμ΄λ”, "juicy files"도 ν‘œμ‹œ. * [**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): HTML μŠ€νŒŒμ΄λ”, JS νŒŒμΌμ—μ„œ μƒˆλ‘œμš΄ 경둜λ₯Ό 검색할 수 μžˆλŠ” JS beautify κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€. [JSScanner](https://github.com/dark-warlord14/JSScanner)도 μ‚΄νŽ΄λ³Ό κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” LinkFinder의 λž˜νΌμž…λ‹ˆλ‹€. * [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTML μ†ŒμŠ€μ™€ λ‚΄μž₯된 μžλ°”μŠ€ν¬λ¦½νŠΈ 파일 λͺ¨λ‘μ—μ„œ μ—”λ“œν¬μΈνŠΈλ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€. 버그 ν—Œν„°, λ ˆλ“œ νŒ€μ›, 정보 λ³΄μ•ˆ μ „λ¬Έκ°€μ—κ²Œ μœ μš©ν•©λ‹ˆλ‹€. * [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): JavaScript νŒŒμΌμ—μ„œ μƒλŒ€ URL을 ꡬ문 λΆ„μ„ν•˜κΈ° μœ„ν•΄ Tornado와 JSBeautifierλ₯Ό μ‚¬μš©ν•˜λŠ” 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 λ¨Έμ‹ μ—μ„œ 링크λ₯Ό λ°œκ²¬ν•©λ‹ˆλ‹€(응닡을 λ‹€μš΄λ‘œλ“œν•˜κ³  더 λ§Žμ€ 링크λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€). * [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): 크둀링(양식 μž‘μ„± 포함)ν•˜κ³  νŠΉμ • μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ―Όκ°ν•œ 정보λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€. * [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider SuiteλŠ” 사이버 λ³΄μ•ˆ μ „λ¬Έκ°€λ₯Ό μœ„ν•΄ μ„€κ³„λœ κ³ κΈ‰ λ‹€κΈ°λŠ₯ GUI μ›Ή λ³΄μ•ˆ 크둀러/μŠ€νŒŒμ΄λ”μž…λ‹ˆλ‹€. * [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL, 경둜, λΉ„λ°€ 및 JavaScript μ†ŒμŠ€ μ½”λ“œμ—μ„œ 기타 ν₯미둜운 데이터λ₯Ό μΆ”μΆœν•˜κΈ° μœ„ν•œ Go νŒ¨ν‚€μ§€ 및 [λͺ…령쀄 도ꡬ](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)μž…λ‹ˆλ‹€. * [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForgeλŠ” μš”μ²­μ—μ„œ λ§€κ°œλ³€μˆ˜μ™€ μ—”λ“œν¬μΈνŠΈλ₯Ό μΆ”μΆœν•˜μ—¬ 퍼징 및 μ—΄κ±°λ₯Ό μœ„ν•œ μ‚¬μš©μž μ •μ˜ 단어 λͺ©λ‘μ„ μƒμ„±ν•˜λŠ” κ°„λ‹¨ν•œ **Burp Suite ν™•μž₯**μž…λ‹ˆλ‹€. * [**katana**](https://github.com/projectdiscovery/katana) (go): 이 μž‘μ—…μ— λŒ€ν•œ 멋진 λ„κ΅¬μž…λ‹ˆλ‹€. * [**Crawley**](https://github.com/s0rg/crawley) (go): 찾을 수 μžˆλŠ” λͺ¨λ“  링크λ₯Ό μΈμ‡„ν•©λ‹ˆλ‹€. ### 디렉토리 및 νŒŒμΌμ— λŒ€ν•œ 무차별 λŒ€μž… 루트 ν΄λ”μ—μ„œ **무차별 λŒ€μž…**을 μ‹œμž‘ν•˜κ³  **이 방법**을 μ‚¬μš©ν•˜μ—¬ 발견된 **λͺ¨λ“ ** **디렉토리**λ₯Ό 무차별 λŒ€μž…ν•΄μ•Ό ν•˜λ©°, **μŠ€νŒŒμ΄λ”λ§**에 μ˜ν•΄ **발견된** λͺ¨λ“  디렉토리도 포함해야 ν•©λ‹ˆλ‹€(이 무차별 λŒ€μž…μ„ **μž¬κ·€μ μœΌλ‘œ** μˆ˜ν–‰ν•˜κ³  μ‚¬μš©λœ 단어 λͺ©λ‘μ˜ μ‹œμž‘ 뢀뢄에 발견된 디렉토리 이름을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€).\ 도ꡬ: * **Dirb** / **Dirbuster** - Kali에 ν¬ν•¨λ˜μ–΄ 있으며, **였래된** (및 **느린**) κΈ°λŠ₯μ μž…λ‹ˆλ‹€. μžλ™ μ„œλͺ…λœ μΈμ¦μ„œλ₯Ό ν—ˆμš©ν•˜κ³  μž¬κ·€ 검색을 μ§€μ›ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ˜΅μ…˜μ— λΉ„ν•΄ λ„ˆλ¬΄ λŠλ¦½λ‹ˆλ‹€. * [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: μžλ™ μ„œλͺ…λœ μΈμ¦μ„œλ₯Ό ν—ˆμš©ν•˜μ§€ μ•Šμ§€λ§Œ** μž¬κ·€ 검색을 ν—ˆμš©ν•©λ‹ˆλ‹€. * [**Gobuster**](https://github.com/OJ/gobuster) (go): μžλ™ μ„œλͺ…λœ μΈμ¦μ„œλ₯Ό ν—ˆμš©ν•˜λ©°, **μž¬κ·€** 검색이 **μ—†μŠ΅λ‹ˆλ‹€**. * [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- λΉ λ₯΄λ©°, μž¬κ·€ 검색을 μ§€μ›ν•©λ‹ˆλ‹€.** * [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ` * [**ffuf** ](https://github.com/ffuf/ffuf)- 빠름: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` * [**uro**](https://github.com/s0md3v/uro) (python): μŠ€νŒŒμ΄λ”λŠ” μ•„λ‹ˆμ§€λ§Œ 발견된 URL λͺ©λ‘μ„ μ£Όλ©΄ "μ€‘λ³΅λœ" URL을 μ‚­μ œν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€. * [**Scavenger**](https://github.com/0xDexter0us/Scavenger): λ‹€μ–‘ν•œ νŽ˜μ΄μ§€μ˜ burp κΈ°λ‘μ—μ„œ 디렉토리 λͺ©λ‘μ„ μƒμ„±ν•˜λŠ” Burp ν™•μž₯μž…λ‹ˆλ‹€. * [**TrashCompactor**](https://github.com/michael1026/trashcompactor): κΈ°λŠ₯이 μ€‘λ³΅λœ URL을 μ œκ±°ν•©λ‹ˆλ‹€(기반 js κ°€μ Έμ˜€κΈ°). * [**Chamaleon**](https://github.com/iustin24/chameleon): μ‚¬μš©λœ κΈ°μˆ μ„ κ°μ§€ν•˜κΈ° μœ„ν•΄ wapalyzerλ₯Ό μ‚¬μš©ν•˜κ³  μ‚¬μš©ν•  단어 λͺ©λ‘μ„ μ„ νƒν•©λ‹ˆλ‹€. **μΆ”μ²œ 사전:** * [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt) * [**Dirsearch** 포함 사전](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) * [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) * [Assetnote 단어 λͺ©λ‘](https://wordlists.assetnote.io) * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) * raft-large-directories-lowercase.txt * directory-list-2.3-medium.txt * RobotsDisallowed/top10000.txt * [https://github.com/random-robbie/bruteforce-lists](https://github.com/random-robbie/bruteforce-lists) * [https://github.com/google/fuzzing/tree/master/dictionaries](https://github.com/google/fuzzing/tree/master/dictionaries) * [https://github.com/six2dez/OneListForAll](https://github.com/six2dez/OneListForAll) * [https://github.com/random-robbie/bruteforce-lists](https://github.com/random-robbie/bruteforce-lists) * [https://github.com/ayoubfathi/leaky-paths](https://github.com/ayoubfathi/leaky-paths) * _/usr/share/wordlists/dirb/common.txt_ * _/usr/share/wordlists/dirb/big.txt_ * _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_ _무차별 λŒ€μž… λ˜λŠ” μŠ€νŒŒμ΄λ”λ§ 쀑에 μƒˆλ‘œμš΄ 디렉토리가 발견될 λ•Œλ§ˆλ‹€ 무차별 λŒ€μž…ν•΄μ•Ό ν•©λ‹ˆλ‹€._ ### 발견된 각 νŒŒμΌμ—μ„œ 확인할 사항 * [**Broken link checker**](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) * _Param-miner β€œparams” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params) * _Assetnote β€œparameters\_top\_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) * _nullenc0de β€œparams.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) * **주석:** λͺ¨λ“  파일의 주석을 ν™•μΈν•˜μ‹­μ‹œμ˜€. **자격 증λͺ…** λ˜λŠ” **μˆ¨κ²¨μ§„ κΈ°λŠ₯**을 찾을 수 μžˆμŠ΅λ‹ˆλ‹€. * **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 ν‚€, DB λΉ„λ°€λ²ˆν˜Έ 및 기타 정보λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€. * **API μ—”λ“œν¬μΈνŠΈ**λ₯Ό 찾으면 [ν…ŒμŠ€νŠΈν•΄μ•Ό ν•©λ‹ˆλ‹€](web-api-pentesting.md). 이듀은 νŒŒμΌμ€ μ•„λ‹ˆμ§€λ§Œ μ•„λ§ˆλ„ "파일처럼" 보일 κ²ƒμž…λ‹ˆλ‹€. * **JS 파일**: μŠ€νŒŒμ΄λ”λ§ μ„Ήμ…˜μ—μ„œ 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 및 Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) * **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org) * **JsFuck λ””μ˜€λΈŒνΌμΌ€μ΄μ…˜** (λ¬Έμžμ™€ ν•¨κ»˜ν•˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ: "\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/)) * [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.` * μ—¬λŸ¬ κ²½μš°μ— **μ‚¬μš©λœ μ •κ·œ ν‘œν˜„μ‹**을 이해해야 ν•  ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μœ μš©ν•  κ²ƒμž…λ‹ˆλ‹€: [https://regex101.com/](https://regex101.com) * **양식이 κ°μ§€λœ νŒŒμΌμ„ λͺ¨λ‹ˆν„°λ§**ν•΄μ•Ό ν•˜λ©°, λ§€κ°œλ³€μˆ˜μ˜ λ³€κ²½μ΄λ‚˜ μƒˆλ‘œμš΄ μ–‘μ‹μ˜ μΆœν˜„μ€ 잠재적인 μƒˆλ‘œμš΄ μ·¨μ•½ν•œ κΈ°λŠ₯을 λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. **403 κΈˆμ§€/κΈ°λ³Έ 인증/401 κΆŒν•œ μ—†μŒ (우회)** {% content-ref url="403-and-401-bypasses.md" %} [403-and-401-bypasses.md](403-and-401-bypasses.md) {% endcontent-ref %} **502 ν”„λ‘μ‹œ 였λ₯˜** μ–΄λ–€ νŽ˜μ΄μ§€κ°€ **μ½”λ“œ**둜 **응닡**ν•˜λ©΄, μ•„λ§ˆλ„ **잘λͺ» κ΅¬μ„±λœ ν”„λ‘μ‹œ**일 κ²ƒμž…λ‹ˆλ‹€. **`GET https://google.com HTTP/1.1`**와 같은 HTTP μš”μ²­μ„ 보내면(호슀트 헀더 및 기타 일반 헀더 포함), **ν”„λ‘μ‹œ**λŠ” _**google.com**_에 **μ ‘κ·Ό**ν•˜λ €κ³  μ‹œλ„ν•˜λ©°, 이둜 인해 SSRFλ₯Ό λ°œκ²¬ν•˜κ²Œ λ©λ‹ˆλ‹€. **NTLM 인증 - 정보 곡개** 인증을 μš”μ²­ν•˜λŠ” μ„œλ²„κ°€ **Windows**μ΄κ±°λ‚˜ **자격 증λͺ…**(및 **도메인 이름** μš”μ²­)을 μš”κ΅¬ν•˜λŠ” 둜그인 화면을 찾으면 **정보 곡개**λ₯Ό μœ λ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.\ **헀더**λ₯Ό μ „μ†‘ν•˜μ‹­μ‹œμ˜€: `β€œAuthorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` 그리고 **NTLM 인증이 μž‘λ™ν•˜λŠ” 방식** λ•Œλ¬Έμ—, μ„œλ²„λŠ” "WWW-Authenticate" 헀더 내에 λ‚΄λΆ€ 정보(IIS 버전, Windows 버전 λ“±...)둜 응닡할 κ²ƒμž…λ‹ˆλ‹€.\ 이 μž‘μ—…μ€ **nmap ν”ŒλŸ¬κ·ΈμΈ** "_http-ntlm-info.nse_"λ₯Ό μ‚¬μš©ν•˜μ—¬ μžλ™ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. **HTTP λ¦¬λ””λ ‰μ…˜ (CTF)** **λ¦¬λ””λ ‰μ…˜** 내에 **λ‚΄μš©**을 **λ„£λŠ”** 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 이 λ‚΄μš©μ€ **μ‚¬μš©μžμ—κ²Œ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€**(λΈŒλΌμš°μ €κ°€ λ¦¬λ””λ ‰μ…˜μ„ μ‹€ν–‰ν•˜κΈ° λ•Œλ¬Έ) κ·ΈλŸ¬λ‚˜ κ·Έ μ•ˆμ— **μˆ¨κ²¨μ§„** 것이 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. ### μ›Ή 취약점 확인 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ 포괄적인 μ—΄κ±°κ°€ μˆ˜ν–‰λ˜μ—ˆμœΌλ―€λ‘œ, 이제 κ°€λŠ₯ν•œ λ§Žμ€ 취약점을 확인할 μ‹œκ°„μž…λ‹ˆλ‹€. μ²΄ν¬λ¦¬μŠ€νŠΈλŠ” μ—¬κΈ°μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€: {% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %} [web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md) {% endcontent-ref %} μ›Ή 취약점에 λŒ€ν•œ 더 λ§Žμ€ μ •λ³΄λŠ” λ‹€μŒμ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€: * [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist) * [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html) * [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection) ### λ³€κ²½ 사항 λͺ¨λ‹ˆν„°λ§ νŽ˜μ΄μ§€ [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)와 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ 취약점을 μ‚½μž…ν•  수 μžˆλŠ” μˆ˜μ • 사항을 λͺ¨λ‹ˆν„°λ§ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
**ν•΄ν‚Ή κ²½λ ₯**에 관심이 있고 ν•΄ν‚Ήν•  수 μ—†λŠ” 것을 ν•΄ν‚Ήν•˜κ³  μ‹Άλ‹€λ©΄ - **μš°λ¦¬λŠ” μ±„μš© μ€‘μž…λ‹ˆλ‹€!** (_μœ μ°½ν•œ ν΄λž€λ“œμ–΄ ꡬ사 ν•„μˆ˜_). {% embed url="https://www.stmcyber.com/careers" %} ### HackTricks μžλ™ λͺ…λ Ή ``` Protocol_Name: Web #Protocol Abbreviation if there is one. Port_Number: 80,443 #Comma separated if there is more than one. Protocol_Description: Web #Protocol Abbreviation Spelled out Entry_1: Name: Notes Description: Notes for Web Note: | https://book.hacktricks.xyz/pentesting/pentesting-web Entry_2: Name: Quick Web Scan Description: Nikto and GoBuster Command: nikto -host {Web_Proto}://{IP}:{Web_Port} &&&& gobuster dir -w {Small_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} && gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} Entry_3: Name: Nikto Description: Basic Site Info via Nikto Command: nikto -host {Web_Proto}://{IP}:{Web_Port} Entry_4: Name: WhatWeb Description: General purpose auto scanner Command: whatweb -a 4 {IP} Entry_5: Name: Directory Brute Force Non-Recursive Description: Non-Recursive Directory Brute Force Command: gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} Entry_6: Name: Directory Brute Force Recursive Description: Recursive Directory Brute Force Command: python3 {Tool_Dir}dirsearch/dirsearch.py -w {Small_Dirlist} -e php,exe,sh,py,html,pl -f -t 20 -u {Web_Proto}://{IP}:{Web_Port} -r 10 Entry_7: Name: Directory Brute Force CGI Description: Common Gateway Interface Brute Force Command: gobuster dir -u {Web_Proto}://{IP}:{Web_Port}/ -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -s 200 Entry_8: Name: Nmap Web Vuln Scan 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} Entry_9: Name: Drupal Description: Drupal Enumeration Notes Note: | git clone https://github.com/immunIT/drupwn.git for low hanging fruit and git clone https://github.com/droope/droopescan.git for deeper enumeration Entry_10: Name: WordPress Description: WordPress Enumeration with WPScan Command: | ?What is the location of the wp-login.php? Example: /Yeet/cannon/wp-login.php wpscan --url {Web_Proto}://{IP}{1} --enumerate ap,at,cb,dbe && wpscan --url {Web_Proto}://{IP}{1} --enumerate u,tt,t,vp --passwords {Big_Passwordlist} -e Entry_11: Name: WordPress Hydra Brute Force Description: Need User (admin is default) Command: hydra -l admin -P {Big_Passwordlist} {IP} -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location' Entry_12: Name: Ffuf Vhost Description: Simple Scan with Ffuf for discovering additional vhosts Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters} ``` {% hint style="success" %} AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks μ§€μ›ν•˜κΈ° * [**ꡬ독 κ³„νš**](https://github.com/sponsors/carlospolop) ν™•μΈν•˜κΈ°! * **πŸ’¬ [**λ””μŠ€μ½”λ“œ κ·Έλ£Ή**](https://discord.gg/hRep4RUj7f) λ˜λŠ” [**ν…”λ ˆκ·Έλž¨ κ·Έλ£Ή**](https://t.me/peass)에 μ°Έμ—¬ν•˜κ±°λ‚˜ **νŠΈμœ„ν„°** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**λ₯Ό νŒ”λ‘œμš°ν•˜μ„Έμš”.** * **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) κΉƒν—ˆλΈŒ 리포지토리에 PR을 μ œμΆœν•˜μ—¬ ν•΄ν‚Ή νŠΈλ¦­μ„ κ³΅μœ ν•˜μ„Έμš”.**
{% endhint %}