2024-02-10 21:30:13 +00:00
# 파라미터 오염
2022-04-28 16:01:33 +00:00
< details >
2024-02-10 21:30:13 +00:00
< summary > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > 를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2023-12-31 01:25:17 +00:00
2024-02-10 21:30:13 +00:00
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS** ](https://github.com/sponsors/carlospolop )를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그** ](https://peass.creator-spring.com )를 얻으세요.
* 독점적인 [**NFT** ](https://opensea.io/collection/the-peass-family ) 컬렉션인 [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )를 발견하세요.
* 💬 [**Discord 그룹** ](https://discord.gg/hRep4RUj7f ) 또는 [**텔레그램 그룹** ](https://t.me/peass )에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )을 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 **PR을 제출**하여 여러분의 해킹 기교를 공유하세요.
2022-04-28 16:01:33 +00:00
< / details >
2024-02-10 21:30:13 +00:00
# HTTP 파라미터 오염 (HPP) 개요
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
HTTP 파라미터 오염 (HPP)은 공격자가 HTTP 파라미터를 조작하여 웹 애플리케이션의 동작을 의도하지 않은 방식으로 변경하는 기술입니다. 이 조작은 HTTP 파라미터를 추가, 수정 또는 복제함으로써 이루어집니다. 이러한 조작의 효과는 사용자에게 직접적으로 보이지 않지만, 서버 측에서 애플리케이션의 기능을 심각하게 변경하고 클라이언트 측에서도 관찰할 수 있습니다.
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
## HTTP 파라미터 오염 (HPP)의 예
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
은행 애플리케이션의 거래 URL:
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
- **원래 URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
추가적인 `from` 파라미터를 삽입함으로써:
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
- **조작된 URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
거래가 `accountA` 대신에 `accountC` 로 잘못 청구될 수 있으며, 이는 HPP가 거래나 비밀번호 재설정, 2FA 설정 또는 API 키 요청과 같은 다른 기능을 조작할 수 있는 잠재력을 보여줍니다.
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
### 특정 기술에 따른 파라미터 구문 분석
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
- 파라미터가 구문 분석되고 우선순위가 결정되는 방식은 기반이 되는 웹 기술에 따라 다르며, HPP를 악용하는 방법에 영향을 줍니다.
- [Wappalyzer ](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/ )와 같은 도구를 사용하여 이러한 기술과 그들의 구문 분석 동작을 식별할 수 있습니다.
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
## PHP와 HPP 악용
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
**OTP 조작 사례:**
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
- **문맥:** OTP(일회용 비밀번호)를 요구하는 로그인 메커니즘이 악용되었습니다.
- **방법:** Burp Suite와 같은 도구를 사용하여 OTP 요청을 가로채어 HTTP 요청에서 `email` 파라미터를 복제했습니다.
- **결과:** 초기 이메일을 위한 OTP가 조작된 요청에서 지정된 두 번째 이메일 주소로 전송되었습니다. 이 결함으로 인해 의도된 보안 조치를 우회하여 무단 액세스가 가능해졌습니다.
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
이 시나리오는 애플리케이션의 백엔드에서 발생한 심각한 실수를 강조하며, 이는 OTP 생성을 위해 첫 번째 `email` 파라미터를 처리하지만 전달에는 마지막 파라미터를 사용했습니다.
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
**API 키 조작 사례:**
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
- **시나리오:** 어떤 애플리케이션에서 사용자가 프로필 설정 페이지를 통해 API 키를 업데이트할 수 있습니다.
- **공격 벡터:** 공격자는 POST 요청에 추가적인 `api_key` 파라미터를 추가함으로써 API 키 업데이트 기능의 결과를 조작할 수 있다는 것을 발견했습니다.
- **기술:** Burp Suite와 같은 도구를 사용하여 공격자는 한 개는 정당하고 한 개는 악의적인 두 개의 `api_key` 파라미터를 포함한 요청을 작성합니다. 서버는 마지막 발생만 처리하므로 API 키가 공격자가 제공한 값으로 업데이트됩니다.
- **결과:** 공격자는 피해자의 API 기능을 제어하며, 무단으로 개인 데이터에 액세스하거나 수정할 수 있습니다.
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
이 예제는 특히 API 키 관리와 같이 중요한 기능에서 안전한 파라미터 처리의 필요성을 강조합니다.
2024-02-06 03:10:38 +00:00
2024-02-10 21:30:13 +00:00
## 파라미터 구문 분석: Flask vs. PHP
2024-02-06 03:10:38 +00:00
2024-02-10 21:30:13 +00:00
웹 기술이 중복된 HTTP 파라미터를 처리하는 방식은 HPP 공격에 취약성을 미치는 방식에 영향을 줍니다:
2024-02-06 03:10:38 +00:00
2024-02-10 21:30:13 +00:00
- **Flask:** 쿼리 문자열 `a=1&a=2` 에서 처음으로 만나는 `a=1` 과 같은 첫 번째 파라미터 값을 채택하며, 초기 인스턴스를 후속 복제본보다 우선시합니다.
- **PHP (Apache HTTP Server에서):** 반대로 주어진 예제에서 `a=2` 를 선택하는 마지막 파라미터 값을 우선시합니다. 이 동작은 원래의 파라미터보다 공격자의 조작된 파라미터를 우연히 우선시하여 HPP 공격을 용이하게 할 수 있습니다.
2020-07-30 08:34:18 +00:00
2024-02-10 21:30:13 +00:00
## 참고 자료
2024-02-04 16:10:29 +00:00
* [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 )
2022-04-28 16:01:33 +00:00
< details >
2024-02-10 21:30:13 +00:00
< summary > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > 를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2023-12-31 01:25:17 +00:00
2024-02-10 21:30:13 +00:00
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS** ](https://github.com/sponsors/carlospolop )를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그** ](https://peass.creator-spring.com )를 얻으세요.
* 독점적인 [**NFT** ](https://opensea.io/collection/the-peass-family ) 컬렉션인 [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )를 발견하세요.
* 💬 [**Discord 그룹** ](https://discord.gg/hRep4RUj7f ) 또는 [**텔레그램 그룹** ](https://t.me/peass )에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )을 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 **PR을 제출**하여 여러분의 해킹 기교를 공유하세요.
2022-04-28 16:01:33 +00:00
< / details >