hacktricks/pentesting-web/parameter-pollution.md

90 lines
7 KiB
Markdown

# 파라미터 오염
<details>
<summary><strong>htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks를 지원하는 다른 방법:
* **회사가 HackTricks에 광고되길 원하거나** **HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제를 확인하세요**](https://github.com/sponsors/carlospolop)!
* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를 팔로우하세요**.
* **해킹 요령을 공유하려면 PR을** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **깃허브 저장소에 제출하세요**.
</details>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
# HTTP 파라미터 오염 (HPP) 개요
HTTP 파라미터 오염 (HPP)은 공격자가 HTTP 파라미터를 조작하여 웹 응용 프로그램의 동작을 의도하지 않은 방식으로 변경하는 기술입니다. 이 조작은 HTTP 파라미터를 추가, 수정 또는 복제함으로써 이루어집니다. 이러한 조작의 효과는 사용자에게 직접적으로 보이지 않지만 서버 측에서 응용 프로그램의 기능을 크게 변경할 수 있으며 클라이언트 측에도 영향을 미칠 수 있습니다.
## HTTP 파라미터 오염 (HPP)의 예
은행 응용 프로그램 거래 URL:
- **원본 URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
추가 `from` 파라미터를 삽입함으로써:
- **조작된 URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
거래가 `accountA` 대신 `accountC`에 잘못 청구될 수 있으며, 이는 HPP가 거래나 비밀번호 재설정, 2단계 인증 설정 또는 API 키 요청과 같은 기능을 조작할 수 있는 잠재력을 보여줍니다.
### **기술별 파라미터 구문 분석**
- 파라미터가 구문 분석되고 우선 순위가 매겨지는 방식은 기저 웹 기술에 따라 다르며, HPP가 어떻게 악용될 수 있는지에 영향을 줍니다.
- [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)와 같은 도구는 이러한 기술과 그들의 구문 분석 동작을 식별하는 데 도움을 줍니다.
## PHP 및 HPP 악용
**OTP 조작 사례:**
- **문맥:** 일회용 비밀번호 (OTP)를 필요로 하는 로그인 메커니즘이 악용되었습니다.
- **방법:** Burp Suite와 같은 도구를 사용하여 OTP 요청을 가로채어 공격자가 HTTP 요청에서 `email` 파라미터를 복제했습니다.
- **결과:** 초기 이메일을 위한 OTP가 조작된 요청에서 지정된 두 번째 이메일 주소로 전송되었습니다. 이 결함으로 인해 의도된 보안 조치를 우회하여 무단 액세스가 허용되었습니다.
이 시나리오는 OTP 생성을 위해 첫 번째 `email` 파라미터를 처리하고 전달을 위해 마지막을 사용한 응용 프로그램의 백엔드에서 중대한 실수를 강조합니다.
**API 키 조작 사례:**
- **시나리오:** 응용 프로그램이 사용자가 프로필 설정 페이지를 통해 API 키를 업데이트할 수 있도록 허용합니다.
- **공격 벡터:** 공격자가 POST 요청에 추가적인 `api_key` 파라미터를 추가함으로써 API 키 업데이트 기능의 결과를 조작할 수 있다는 것을 발견했습니다.
- **기술:** Burp Suite와 같은 도구를 활용하여 공격자는 두 개의 `api_key` 파라미터를 포함하는 요청을 작성했습니다: 하나는 합법적이고 다른 하나는 악의적입니다. 서버는 마지막 발생만 처리하여 API 키를 공격자가 제공한 값으로 업데이트합니다.
- **결과:** 공격자는 피해자의 API 기능을 제어하며, 무단으로 개인 데이터에 액세스하거나 수정할 수 있습니다.
이 예는 특히 API 키 관리와 같이 중요한 기능에서 안전한 파라미터 처리의 필요성을 강조합니다.
## 파라미터 구문 분석: Flask vs. PHP
웹 기술이 중복 HTTP 파라미터를 처리하는 방식은 다양하며, HPP 공격에 취약성을 미치는 방식이 다릅니다:
- **Flask:** 쿼리 문자열 `a=1&a=2`에서 처음 만난 매개변수 값을 채택하여 초기 인스턴스를 우선시합니다.
- **PHP (Apache HTTP Server에서):** 반대로 주어진 예제에서 `a=2`를 선택합니다. 이 동작은 공격자의 조작된 매개변수를 원본보다 우선시하여 HPP 악용을 우연히 촉진할 수 있습니다.
## 참고 자료
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks를 지원하는 다른 방법:
* **회사가 HackTricks에 광고되길 원하거나** **HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제를 확인하세요**](https://github.com/sponsors/carlospolop)!
* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를 팔로우하세요**.
* **해킹 요령을 공유하려면 PR을** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **깃허브 저장소에 제출하세요**.
</details>