How to Hack Web Application
Introduction
“How to Hack a Web Application”은 Web 기반의 Application을 테스팅하는 방법입니다. 전반적인 테스팅 메커니즘과 환경 구성에 대한 내용을 주로 다룹니다.
What is Web?
Web은 월드 와이드 웹(World Wide Web, WWW, W3)의 줄임말로 사용되며 인터넷에 연결된 여러가지 컴퓨터를 통해 정보를 공유할 수 있는 공간을 의미합니다. 인터넷에 연결된 디바이스들은 여러가지 프로토콜을 통해서 데이터를 교환합니다. 이중 웹에서 가장 핵심이 되는건 HTTP(HyperText Transfer Protocol)입니다.
HTTP
HTTP는 웹에서 정보를 주고받을 수 있는 프로토콜입니다. TCP를 주로 사용하며, HTTP/3 부턴 UDP를 통한 통신도 지원하고 있고, 기본적으로 80포트와 SSL이 적용된 443 포트(https)를 가장 많이 사용합니다.
각 버전별 특징은 아래와 같습니다.
Version | DT | Desc |
---|---|---|
HTTP/0.9 | TCP | 초기 HTTP 프로토콜, 단일 Line, Only GET Method |
HTTP/1.0 | TCP | Header 지원, Content-Type, StatusCode |
HTTP/1.1 | TCP | Persistent Connection, Pipelining |
HTTP/2 | TCP | Multiplexed Streams, Header Compression |
HTTP/3 (QUIC) | UDP | QUIC(Quick UDP Internet Connections) |
자세한 내용은 Cullinan > HTTP를 참고해주세요.
Hack Mechanism
MITM Proxy
MITM(Man In the Middle Attack)은 보통 중간자 공격을 의미합니다. 실제 공격에선 스니핑 등으로 표현되지만, Web을 테스팅하는 입장에선 이렇게 중간에 개입하는 도구들을 통해 브라우저, 모바일 등 디바이스가 서버랑 통신하는 내용들을 가로채고 변경하여 테스트할 수 있습니다.
Client와 Server 사이에서 데이터를 변조하며 테스트합니다.
대표적으로 많이 사용되는 도구는 BurpSuite, ZAP 입니다. 이외에도 더 많은 도구들이 궁금하다면 WHW > mitmproxy를 참고해주세요.
Testing Methods
테스팅 방법들은 명확하기 정의하긴 어렵고 개개인의 경험과 지식 그리고 스타일이 누적된 결과입니다. 테스팅 방법에 대해서 고민을 들게 하는 링크들입니다. 필요한 부분은 잘 접목한다면 독특하고 효과적인 자신만의 테스팅 방법론을 만들어갈 수 있습니다.
Testing Resources
테스팅 방법, 취약점, 공격 등은 하나의 문서로 표현 하기에는 너무 방대합니다. 잘 알려진 취약점, 공격 방법 등은 아래 Resources에서 참고하셔서 테스팅할 수 있습니다. (제 컬리넌을 제외한 나머지는 정말 참고하기 좋은 리소스입니다 :D)
- Cullinan by Me :D
- HackTricks by carlospolop
- HowToHunt by kathan19
- PayloadAllTheThings by swissky
- Top 10 Web Hacking Techniques by Portswigger
🛠 Environment
Embeded Browser
Burpsuite, ZAP 등 일부 Proxy 도구들은 인증서 신뢰 처리가 설정된 브라우저를 내장하여 제공하고 있습니다. 테스팅 시 발생할 수 있는 여러 문제들을 피해갈 수 있어서 개인적으로 선호하는 방식입니다.
Common Browser
만약 Embeded Browser가 아닌 PC 내 브라우저를 사용하는 경우 Custom Proxy 설정 및 인증서 신뢰 설정이 필요합니다.
Set Custom Proxy
- Firefox:
Settings
>General
>Network Settings
- Chrome:
Settings
>Advanced
>System
>Proxy settings
- Safari: 시스템 프록시를 이용합니다.
위 과정으로 프록시 설정이 가능하며, MM3 ProxySwitch, FoxyProxy 등 Browser Addon 등을 통해 토글 설정이 가능합니다.
Set CA Certificate
- Firefox:
Settings
>Privacy & Security
>Security
>View Certificates
- Chrome:
Settings
>Privacy & Security
>Security
>Manage certificates
- Safari: Open
Key Chain
>System Root