2024. 5. 6. 11:10ㆍSTUDY
HTTP 라이브러리
PHP : php-curl
NodeJS : http
python : urllib, requests
=> HTTP 요청을 보낼 client 뿐만 아니라 server와 server간 통신을 위해 사용되기도 한다.
SSRF (Server-Side Request Forgery)
웹 서비스의 요청을 변조하는 취약점
브라우저가 변조된 요청을 보내는 CSRF와는 다르게 웹 서비스의 권한으로 변조된 요청을 보낼 수 있다.
웹 서비스가 보내는 요청을 변조하기 위해서는 요청 내에 이용자의 입력값이 포함돼야 한다.
ex1) 웹 서비스가 이용자가 입력한 URL에 요청을 보내는 경우
image_downloader
이용자가 입력한 image_url을 requests.get 함수를 사용해 GET 메소드로 HTTP 요청을 보내고 응답을 반환
ex) URL 입력
http://127.0.0.1:8000/image_downloader?image_url=https://dreamhack.io/assets/dreamhack_logo.png
=> 엔드포인트 image_url에 request_info 엔드포인트 경로 입력
http://127.0.0.1:8000/image_downloader?image_url=http://127.0.0.1:8000/request_info
request_info
웹 페이지에 접속한 브라우저의 정보(User-Agent)를 반환
ex) 해당 엔드포인트에 접근
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4558.0 Safari/537.36
=> 브라우저 정보
python-requests/<LIBRARY_VERSION>
ex2) 요청을 보낼 URL에 이용자 번호와 같은 내용이 사용되는 경우
http://api.internal/search
=> # 문자를 입력해 경로 조작(# 문제 뒤에 붙는 문자열은 API 경로에서 생략됨)
http://api.internal/search?user_name=secret&user_type=private#&user_type=public
ex3) 이용자가 입력한 값이 HTTP Body에 포함되는 경우
data = f"title={title}&body={body}&user={session['idx']}
=> & 구분자를 포함해 user 파라미터를 추가
title=title&user=admin&body=body&user=guest
'STUDY' 카테고리의 다른 글
[NETWORK] OSI 7계층 (0) | 2024.07.10 |
---|---|
[CRYPTOFRAPHY] cryptography (0) | 2024.05.09 |
[WEB] File Vulnerability (0) | 2024.05.06 |
[WEB] command injection (0) | 2024.03.06 |
[SYSTEM] Docker (1) | 2023.10.31 |