Web Application Security, Testing, & Scanning - PortSwigger
PortSwigger offers tools for web application security, testing, & scanning. Choose from a range of security tools, & identify the very latest vulnerabilities.
portswigger.net
API란?
API는 소프트웨어나 앱이 데이터를 공유할 수 있게 하는데, API 취약점을 통해 웹 사이트의 기밀성 등이 침해될 수 있기 때문에 API 테스팅이 중요함.
API recon
API 테스팅을 위해서는 API 자체에 대한 정보를 최대한 수집해야 한다. 일단 API 엔드포인트를 식별해야하는데 API가 서버의 특정 자원에 대한 요청을 받는 위치를 말함. 예를 들어 이런 GET 요청이 있다
GET /api/books HTTP/1.1
Host: example.com
여기서 요청의 엔드포인트는 /api/books
이 요청으로 라이브러리에서 책의 리스트를 가져오도록 API가 통신한다
그리고 다음과 같은 정보들을 알아내야 함
- API가 처리하는 인풋 데이터(필수/옵셔널 파라미터)
- API가 처리하는 요청 타입(http 메서드와 미디어 포맷)
- 인증 방식 등
API documentation
API는 개발자들이 사용/통합하는 방법을 알 수 있게 문서화된다. JSON, XML 등의 형식으로 작성함
만약 API 문서가 공개되어 있지 않아도 해당 API를 사용하는 애플리케이션을 분석해서 알 수 있다
burp scanner로 API를 볼 수있는데 /api, /swagger/index.html, openapi.json 이런걸 보면 찾을 수 있음
어떤 자원의 엔드포인트를 찾으면 그 하위 경로를 찾는게 중요하다.
예를 들어 /api/swagger/v1/users/123라는 엔드포인트를 찾았다고 치면
/api/swagger/v1
/api/swagger
/api
이런 경로들을 조사해야 함
Lab: Exploiting an API endpoint using documentation
실습을 해보자
노출된 API 문서를 이용해 carlos를 삭제해야 한다
먼저 주어진 기본 계정인 wiener:peter로 로그인하자
이메일을 업데이트할 수 있어 wienerr로 이메일을 변경했다
이제 burpsuite에서 Proxy>HTTP history 탭에 들어가기
wiener 라는 유저의 정보를 패치하는 PATCH 요청 패킷을 찾아서 리피터 repeater에 보냄
일단 아무것도 변경 안하고 요청을 그대로 보냄
이 요청은 wiener라는 유저의 크레덴셜을 회수한다고 보면 됨
여기서는 PATCH /api/user/wiener에서 계정명을 삭제하고 /api/user만 적어서 보냄
유저를 식별할 정보가 없기 때문에 400 오류가 뜬다
이번에는 /user도 지우고 /api만 남겨서 요청을 다시 보낸다
API documentation이 응답으로 돌아온다
이를 시각적으로 확인하기 위해서는 show response in browser 옵션을 사용한다
url 복붙해서 들어가보면
이렇게 api documentation이 테이블 형태로 보여진다
이 랩의 목적은 carlos 삭제니까 DELETE 메서드를 선택하자
delete에 들어가서 carlos 이름을 적고 요청을 보내면 끝!
'웹해킹' 카테고리의 다른 글
OS command injection 취약점/Lab: OS command injection, simple case 실습 (0) | 2025.05.06 |
---|---|
SSRF with blacklist-based input filters 필터링 우회 (1) | 2025.04.03 |
[Tryhackme] Passive Reconnaissance (0) | 2025.03.17 |
Web LLM Attacks 대규모 언어 모델 AI 보안 취약점 (0) | 2025.03.11 |
취약점 점검 자동화 도구 SQL Map, JWT 크랙 (0) | 2025.03.11 |