7.4 KiB
프록시 / WAF 보호 우회
htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks를 다운로드하고 싶다면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm을 팔로우하세요.
- 해킹 트릭을 공유하려면 PR을 HackTricks 및 HackTricks Cloud github 저장소에 제출하세요.
{% embed url="https://websec.nl/" %}
경로 이름 조작을 통한 Nginx ACL 규칙 우회
기술 이 연구에서.
Nginx 규칙 예시:
location = /admin {
deny all;
}
location = /admin/ {
deny all;
}
NodeJS - Express
Nginx Version | Node.js Bypass Characters |
---|---|
1.22.0 | \xA0 |
1.21.6 | \xA0 |
1.20.2 | \xA0 , \x09 , \x0C |
1.18.0 | \xA0 , \x09 , \x0C |
1.16.1 | \xA0 , \x09 , \x0C |
Flask
Nginx Version | Flask Bypass Characters |
---|---|
1.22.0 | \x85 , \xA0 |
1.21.6 | \x85 , \xA0 |
1.20.2 | \x85 , \xA0 , \x1F , \x1E , \x1D , \x1C , \x0C , \x0B |
1.18.0 | \x85 , \xA0 , \x1F , \x1E , \x1D , \x1C , \x0C , \x0B |
1.16.1 | \x85 , \xA0 , \x1F , \x1E , \x1D , \x1C , \x0C , \x0B |
Spring Boot
Nginx Version | Spring Boot Bypass Characters |
---|---|
1.22.0 | ; |
1.21.6 | ; |
1.20.2 | \x09 , ; |
1.18.0 | \x09 , ; |
1.16.1 | \x09 , ; |
PHP-FPM
Nginx FPM configuration:
location = /admin.php {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
Nginx는 /admin.php
에 대한 액세스를 차단하도록 구성되어 있지만, /admin.php/index.php
에 액세스하여 이를 우회할 수 있습니다.
방지 방법
location ~* ^/admin {
deny all;
}
Mod Security 규칙 우회
경로 혼란
이 게시물에서는 ModSecurity v3 (3.0.12 버전까지)이 REQUEST_FILENAME
변수를 부적절하게 구현하여 액세스된 경로를 포함해야 했지만 (매개변수 시작까지), 이 변수가 URL 디코드를 수행하여 경로를 가져오기 때문에 실제로는 /foo%3f';alert(1);foo=
와 같은 요청은 mod security에서 경로가 /foo
로 가정될 것이지만 %3f
가 URL 경로를 끝내는 ?
로 변환되므로 서버가 받게 될 실제 경로는 /foo%3f';alert(1);foo=
가 됩니다.
변수 REQUEST_BASENAME
및 PATH_INFO
도 이 버그의 영향을 받았습니다.
Mod Security의 2 버전에서도 백업 파일과 관련된 특정 확장자를 가진 파일에 액세스하는 것을 방지하는 보호를 우회할 수 있었던 버그가 발생했습니다. 예를 들어, .bak
와 같은 백업 파일과 관련된 특정 확장자를 가진 파일에 액세스하는 것을 방지하는 보호를 우회하기 위해 단순히 점을 URL 인코딩된 %2e
로 보내는 것이 가능했습니다. 예를 들어, https://example.com/backup%2ebak
.
AWS WAF ACL 우회
형식이 잘못된 헤더
이 연구는 AWS WAF 규칙을 우회할 수 있는 방법으로 HTTP 헤더에 적용된 AWS WAF 규칙을 우회할 수 있었던 "형식이 잘못된" 헤더를 보내는 것이 가능했다고 언급합니다. 이 헤더는 AWS에서 올바르게 구문 분석되지 않았지만 백엔드 서버에서는 올바르게 구문 분석되었습니다.
예를 들어, 다음 요청을 SQL 인젝션을 포함한 헤더 X-Query로 보내는 것:
GET / HTTP/1.1\r\n
Host: target.com\r\n
X-Query: Value\r\n
\t' or '1'='1' -- \r\n
Connection: close\r\n
\r\n
AWS WAF를 우회하는 것이 가능했었는데, 이는 AWS WAF가 헤더 값의 다음 줄이 해당 값의 일부라는 것을 이해하지 못했기 때문이었습니다. 반면 NODEJS 서버는 이를 이해했었습니다 (해당 문제는 수정되었습니다).
참고 자료
- https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies
- https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/
{% embed url="https://websec.nl/" %}
제로부터 AWS 해킹을 전문가로 학습하세요 htARTE (HackTricks AWS Red Team Expert)와 함께!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 PDF로 다운로드하고 싶다면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 디스코드 그룹 또는 텔레그램 그룹에 가입하거나트위터** 🐦 @carlospolopm를 팔로우하세요.
- 해킹 트릭을 공유하려면 PR을 HackTricks 및 HackTricks Cloud 깃허브 저장소에 제출하세요.