80,443 - Pentesting Web Methodology
해킹 경력에 관심이 있고 해킹할 수 없는 것을 해킹하고 싶다면 - 채용 중입니다! (유창한 폴란드어 필수).
기본 정보
웹 서비스는 가장 일반적이고 광범위한 서비스이며 다양한 종류의 취약점이 존재합니다.
기본 포트: 80 (HTTP), 443(HTTPS)
웹 API 가이드
pageWeb API Pentesting방법론 요약
이 방법론에서는 도메인(또는 서브도메인)을 공격할 것으로 가정합니다. 따라서 발견된 각 도메인, 서브도메인 또는 스코프 내부에 있는 웹 서버에 대해 이 방법론을 적용해야 합니다.
서버 버전 (취약점 있나요?)
식별
실행 중인 서버 버전에 대한 알려진 취약점이 있는지 확인하세요. 응답의 HTTP 헤더 및 쿠키는 사용된 기술 및/또는 버전을 식별하는 데 매우 유용할 수 있습니다. Nmap 스캔은 서버 버전을 식별할 수 있지만 whatweb, webtech 또는 https://builtwith.com/**:**와 같은 도구도 유용할 수 있습니다.
웹 응용 프로그램의 취약점 버전을 검색하십시오
WAF 여부 확인
웹 기술 트릭
다양한 잘 알려진 기술에서 **취약점을 찾는 데 도움이 되는 몇 가지 트릭:
같은 도메인이 다른 포트, 폴더 및 하위 도메인에서 다른 기술을 사용할 수 있다는 점을 고려하십시오. 웹 응용 프로그램이 이전에 나열된 잘 알려진 기술/플랫폼 또는 다른 기술을 사용하는 경우 인터넷에서 새로운 트릭을 검색하지 않는 것을 잊지 마십시오!
소스 코드 검토
응용 프로그램의 소스 코드가 github에 제공되는 경우, 응용 프로그램의 백색 상자 테스트를 진행하는 것 외에도 현재 블랙박스 테스트에 유용한 일부 정보가 있을 수 있습니다:
변경 로그 또는 Readme 또는 버전 정보가 웹을 통해 액세스 가능한 파일이 있는지 확인하십시오.
자격 증명은 어디에 저장되며 어떻게 저장되었습니까? 자격 증명 (사용자 이름 또는 암호가 포함된?)이 있는 파일이 있습니까?
암호는 평문, 암호화되었거나 사용된 해싱 알고리즘은 무엇입니까?
무언가를 암호화하는 데 마스터 키를 사용하고 있습니까? 사용된 알고리즘은 무엇입니까?
어떤 취약점을 이용하여 이러한 파일에 액세스할 수 있습니까?
github의 (해결된 및 미해결된) 이슈에 흥미로운 정보가 있습니까? 또는 커밋 기록에 (이전 커밋에 비밀번호가 포함된 것일 수도 있음) 흥미로운 정보가 있습니까?
자동 스캐너
일반 목적 자동 스캐너
CMS 스캐너
만약 CMS가 사용된다면 스캐너를 실행하는 것을 잊지 마세요. 어쩌면 중요한 정보가 발견될 수도 있습니다:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin 웹사이트의 보안 취약점을 찾습니다. (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal 또는 (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
이 시점에서는 이미 클라이언트가 사용하는 웹 서버에 대한 일부 정보(제공된 데이터가 있는 경우)와 테스트 중에 기억해야 할 몇 가지 요령이 있어야 합니다. 운이 좋다면 CMS를 찾았고 일부 스캐너를 실행했을 수도 있습니다.
웹 애플리케이션 발견 단계별 절차
이제 웹 애플리케이션과 상호 작용을 시작할 것입니다.
초기 점검
흥미로운 정보가 있는 기본 페이지:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
주요 및 보조 페이지의 주석도 확인합니다.
에러 강제
웹 서버는 이상한 데이터가 전송될 때 예기치 않게 동작할 수 있습니다. 이는 취약점을 노출하거나 민감한 정보를 누설할 수 있습니다.
/whatever_fake.php (.aspx,.html,.etc)와 같은 가짜 페이지에 액세스
쿠키 값 및 매개변수 값에 "[]", "]]", 및 "[["를 추가하여 오류 생성
URL 끝에 **
/~randomthing/%s
**로 입력하여 오류 생성PATCH, DEBUG 등 다른 HTTP 동사 또는 잘못된 FAKE 시도
파일 업로드 가능 여부 확인 (PUT 동사, WebDav)
WebDav가 활성화되어 있지만 루트 폴더에 파일을 업로드할 권한이 충분하지 않은 경우 다음을 시도해 보세요:
자격 증명 브루트 포스
WebDav를 통해 파일을 업로드하여 웹 페이지 내의 다른 폴더에 찾은 폴더의 나머지에 업로드할 수 있는 권한이 있는지 확인합니다.
SSL/TLS 취약점
응용 프로그램이 HTTPS 사용을 강제하지 않는 경우, MitM에 취약합니다.
응용 프로그램이 HTTP를 사용하여 민감한 데이터(암호)를 전송하는 경우, 높은 취약점입니다.
testssl.sh를 사용하여 취약점을 확인하고([Bug Bounty 프로그램에서는 이러한 유형의 취약점이 허용되지 않을 수 있음) a2sv를 사용하여 취약점을 다시 확인하세요:
SSL/TLS 취약점에 대한 정보:
Spidering
웹 내부에서 어떤 종류의 스파이더를 실행합니다. 스파이더의 목표는 테스트된 애플리케이션에서 가능한 많은 경로를 찾는 것입니다. 따라서 웹 크롤링 및 외부 소스를 사용하여 가능한 많은 유효한 경로를 찾아야 합니다.
gospider (go): HTML 스파이더, JS 파일 및 외부 소스(LinkFinder)에서 링크 찾기 (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HML 스파이더, JS 파일 및 외부 소스(Archive.org)에서 링크 찾기.
dirhunt (python): HTML 스파이더, "juicy files"도 표시합니다.
evine (go): 대화형 CLI HTML 스파이더. 또한 Archive.org에서 검색합니다.
meg (go): 이 도구는 스파이더가 아니지만 유용할 수 있습니다. 호스트 및 경로가 포함된 파일을 지정하면 meg가 각 호스트의 각 경로를 가져와 응답을 저장합니다.
urlgrab (go): JS 렌더링 기능을 갖춘 HTML 스파이더. 그러나 유지 관리되지 않는 것으로 보이며, 미리 컴파일된 버전이 오래되었고 현재 코드는 컴파일되지 않습니다.
gau (go): 외부 제공업체(wayback, otx, commoncrawl)를 사용하는 HTML 스파이더
ParamSpider: 이 스크립트는 매개변수가 포함된 URL을 찾아 나열합니다.
galer (go): JS 렌더링 기능을 갖춘 HTML 스파이더.
LinkFinder (python): JS 파일에서 새 경로를 검색할 수 있는 JS 뷰티파이 기능을 갖춘 HTML 스파이더. JSScanner도 살펴볼 가치가 있습니다.
goLinkFinder (go): HTML 소스 및 포함된 javascript 파일에서 엔드포인트를 추출하는 도구. 버그 헌터, 레드 팀, 정보 보안 닌자에 유용합니다.
JSParser (python2.7): Tornado 및 JSBeautifier를 사용하여 JavaScript 파일에서 상대적인 URL을 구문 분석하는 Python 2.7 스크립트. AJAX 요청을 쉽게 발견하는 데 유용합니다. 유지 관리되지 않는 것으로 보입니다.
relative-url-extractor (ruby): 파일(HTML)이 주어지면 지저분한(압축된) 파일에서 상대적인 URL을 찾아 추출하는 데 사용되는 귀여운 정규식을 사용하여 URL을 추출합니다.
JSFScan (bash, 여러 도구): 여러 도구를 사용하여 JS 파일에서 흥미로운 정보를 수집합니다.
subjs (go): JS 파일을 찾습니다.
page-fetch (go): 무헤드 브라우저에서 페이지를 로드하고 페이지를 로드하기 위해 로드된 모든 URL을 출력합니다.
Feroxbuster (rust): 이전 도구의 여러 옵션을 혼합한 콘텐츠 발견 도구
Javascript Parsing: JS 파일에서 경로 및 매개변수를 찾기 위한 Burp 확장 프로그램.
Sourcemapper: .js.map URL이 주어지면 정리된 JS 코드를 가져올 수 있는 도구
xnLinkFinder: 주어진 대상의 엔드포인트를 발견하는 데 사용되는 도구
waymore: wayback machine에서 링크를 발견합니다(wayback에서 응답을 다운로드하고 더 많은 링크를 찾습니다)
HTTPLoot (go): 특정 정규식을 사용하여 크롤링(양식 작성 포함)하고 민감한 정보를 찾습니다.
SpiderSuite: 사이버 보안 전문가를 위해 설계된 고급 다중 기능 GUI 웹 보안 크롤러/스파이더
jsluice (go): Go 패키지 및 command-line tool로 JavaScript 소스 코드에서 URL, 경로, 비밀 및 기탠 데이터를 추출합니다.
ParaForge: 요청에서 매개변수 및 엔드포인트를 추출하여 퍼징 및 열거를 위한 사용자 정의 워드리스트를 생성하는 간단한 Burp Suite 확장 프로그램
katana (go): 이 도구는 훌륭합니다.
디렉토리 및 파일 무차별 대입
루트 폴더에서 무차별 대입을 시작하고, 이 방법을 사용하여 찾은 모든 디렉토리를 무차별 대입하고 스파이더링에 의해 발견된 모든 디렉토리를 무차별 대입합니다(이를 재귀적으로 수행하고 찾은 디렉토리의 이름을 사용된 워드리스트의 시작에 추가할 수 있습니다). 도구:
Dirb / Dirbuster - Kali에 포함되어 있으며 오래되었지만(그리고 느립니다) 기능이 있습니다. 자동 서명된 인증서 및 재귀적 검색을 허용합니다. 다른 옵션과 비교하여 너무 느립니다.
Dirsearch (python): 자동 서명된 인증서를 허용하지 않지만 재귀적 검색을 허용합니다.
Gobuster (go): 자동 서명된 인증서를 허용하며, 재귀적 검색을 하지 않습니다.
Feroxbuster - 빠르며, 재귀적 검색을 지원합니다.
wfuzz
wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - 빠릅니다:
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): 이것은 스파이더가 아니지만 발견된 URL 목록을 제공하여 "중복" URL을 삭제합니다.
Scavenger: 다른 페이지의 burp 히스토리에서 디렉토리 목록을 생성하는 Burp 확장 프로그램
TrashCompactor: 중복 기능을 가진 URL을 제거합니다(js 가져오기를 기반으로 함)
Chamaleon: 사용된 기술을 감지하고 사용할 워드리스트를 선택하기 위해 wapalyzer를 사용합니다.
추천하는 사전:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
브루트 포싱이나 스파이더링 중에 새 디렉토리가 발견될 때마다 브루트 포스해야 합니다.
각 발견된 파일에서 확인해야 할 사항
링크 깨진 링크 확인기: 탈취 가능성이 있는 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 또는 backup-gen를 사용할 수 있습니다.
새 매개변수 발견: Arjun**, parameth, **x8 및 Param Miner 와 같은 도구를 사용하여 숨겨진 매개변수를 발견할 수 있습니다. 가능하다면 각 실행 웹 파일에서 숨겨진 매개변수를 찾아보세요.
Arjun 모든 기본 워드리스트: https://github.com/s0md3v/Arjun/tree/master/arjun/db
Param-miner “params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
Assetnote “parameters_top_1m”: https://wordlists.assetnote.io/
nullenc0de “params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
코멘트: 모든 파일의 코멘트를 확인하면 자격 증명이나 숨겨진 기능을 찾을 수 있습니다.
CTF를 진행 중이라면, 페이지의 오른쪽에 수백 개의 공백을 사용하여 데이터를 숨겨 브라우저로 소스 코드를 열어도 데이터를 보이지 않게 하는 코멘트에 정보를 숨기는 "일반적인" 트릭이 있습니다. 다른 가능성은 여러 개의 새 줄을 사용하여 웹 페이지 하단에 코멘트에 정보를 숨기는 것입니다.
API 키: API 키를 찾으면 다양한 플랫폼의 API 키를 사용하는 방법을 안내하는 가이드가 있습니다: keyhacks**, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, **EarlyBird
Google API 키: AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik와 같은 API 키를 찾으면 프로젝트 gmapapiscanner를 사용하여 키가 액세스할 수 있는 API를 확인할 수 있습니다.
S3 버킷: 스파이더링 중에 서브도메인이나 링크가 어떤 S3 버킷과 관련이 있는지 확인하세요. 그 경우, 버킷의 권한을 확인하세요(buckets/).
특별한 발견
스파이더링 및 브루트 포싱을 수행하는 동안 주목해야 할 흥미로운 사항을 발견할 수 있습니다.
흥미로운 파일
CSS 파일 내의 다른 파일로의 링크를 찾아보세요.
.git 파일을 찾으면 일부 정보를 추출할 수 있습니다.
.env 파일을 찾으면 API 키, 데이터베이스 비밀번호 및 기타 정보를 찾을 수 있습니다.
API 엔드포인트를 찾으면 테스트해야 합니다. 이들은 파일이 아니지만 아마도 파일처럼 보일 것입니다.
JS 파일: 스파이더링 섹션에서 JS 파일에서 경로를 추출할 수 있는 여러 도구가 언급되었습니다. 또한, 코드에 잠재적인 취약점이 도입되었을 수 있음을 나타내는 변경이 있는지 각 JS 파일을 모니터링하는 것이 흥미로울 수 있습니다. 예를 들어 JSMon을 사용할 수 있습니다.
Javascript Deobfuscator 및 Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator
Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/
JsFuck 해독 (문자가 있는 javascript:"[]!+" https://ooze.ninja/javascript/poisonjs/)
TrainFuck:
+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
여러 경우에는 사용된 정규 표현식을 이해해야 할 수도 있습니다. 이 링크가 유용할 것입니다: https://regex101.com/
또한 양식이 감지된 파일을 모니터링해야 하며, 매개변수의 변경이나 새 양식의 나타남이 잠재적인 새로운 취약한 기능을 나타낼 수 있습니다.
403 Forbidden/Basic Authentication/401 Unauthorized (bypass)
page403 & 401 Bypasses502 Proxy Error
해당 코드로 응답하는 페이지가 있으면 아마도 잘못 구성된 프록시입니다. GET https://google.com HTTP/1.1
(호스트 헤더 및 기타 일반적인 헤더와 함께)와 같은 HTTP 요청을 보내면 프록시가 _google.com_에 액세스하려고 시도할 것이며 SSRF를 발견할 수 있습니다.
NTLM 인증 - 정보 노출
인증을 요청하는 실행 중인 서버가 Windows인 경우 또는 자격 증명을 요청하고 도메인 이름을 요청하는 로그인을 찾으면 정보 노출을 유발할 수 있습니다.
“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
헤더를 전송하면 NTLM 인증 방식 작동 방식에 따라 서버가 "WWW-Authenticate" 헤더 내부 정보 (IIS 버전, Windows 버전 등)로 응답합니다.
이를 자동화하려면 "http-ntlm-info.nse" nmap 플러그인을 사용할 수 있습니다.
HTTP Redirect (CTF)
리다이렉션에 콘텐츠를 넣을 수 있습니다. 이 콘텐츠는 사용자에게 표시되지 않을 것이므로 브라우저가 리다이렉션을 실행할 것입니다. 그러나 거기에 무언가가 숨겨져 있을 수 있습니다.
웹 취약점 확인
이제 웹 응용 프로그램의 포괄적인 열거가 수행되었으므로 가능한 많은 취약점을 확인할 차례입니다. 여기에서 체크리스트를 찾을 수 있습니다:
pageWeb Vulnerabilities Methodology웹 취약점에 대한 자세한 정보는 다음에서 확인할 수 있습니다:
변경 사항 모니터링 페이지
https://github.com/dgtlmoon/changedetection.io와 같은 도구를 사용하여 취약점을 삽입할 수 있는 수정 사항을 모니터링할 수 있습니다.
해킹 경력에 관심이 있고 해킹할 수 없는 것을 해킹하고 싶다면 - 채용 중입니다! (유창한 폴란드어 필수).
HackTricks 자동 명령어
Last updated