
IP 네트워크를 스캔하고 log4j 라이브러리에서 CVE-2021-44228 취약점이 있을 가능성이 있는 호스트를 식별합니다.
IP 네트워크를 스캔하여 log4j 라이브러리에서 CVE-2021-44228 취약점이 있을 가능성이 있는 호스트를 확인하세요.
보안 감사에는 훨씬 더 우수하고 고급진 도구가 많이 있지만, 그중 상당수는 상용 침투 테스트 소프트웨어나 외부 제3자 서비스 또는 소프트웨어를 필요로 합니다.
이 스크립트는 빠르고 독립적인 작은 도구로 작성되었습니다. 서버와 장치가 100% 안전하다는 것을 확인해 주지는 않습니다. IT 환경을 감사할 때 사용해야 하는 여러 도구 중 하나로 간주하세요. 사설 및 공인 IP 주소에서 사용할 수 있습니다.
이 스크립트는 log4shell 익스플로잇 시연이 아닙니다. 어떠한 해를 끼치거나 원격 코드를 실행하려고 시도하지 않습니다.
스크립트는 User-Agent, X-Api-Version 및 X-Forwarded-For 필드에 특수 문자열을 포함하여 HTTPS(443으로 끝나는 포트) 또는 HTTP(그 외 모든 포트) 요청을 생성합니다. 그 특수 문자열은 ${jndi:ldap://some_listen_host:port} 형식입니다.
취약한 log4j 라이브러리가 '사용자 -> 서비스 | 로드 밸런서 -> 보안 -> 서버 -> 로깅' 경로 어딘가에서 사용자 활동(우리의 http 요청)을 로깅하는 데 사용된다면, JNDI 문자열을 파싱하고 우리의 some_listen_host:port로 LDAP 세션을 설정하려고 시도할 것입니다.
some_listen_host:port에서 트래픽을 모니터링하다가 그러한 패킷을 발견하면, 해당 패킷의 출처를 추가로 조사해야 합니다.
http(s) 요청이 전송되는 기본 포트는 80, 8080, 443 및 8443입니다.
이 두 호스트는 동일한 머신일 수 있습니다.
수신 호스트에서 사용 가능한 TCP 포트로 수신되는 패킷을 캡처하려면 tcpdump를 시작하세요. 예시:
tcpdump -nn -i ens160 tcp port 12345
Linux 호스트에서 필수 매개변수와 함께 스크립트를 실행하세요. 예시:
./log4j-quick-scan.py -e 192.168.0.3:12345 192.168.0.0/24"
이 명령은 192.168.0.0/24 네트워크를 테스트하여 포트 12345에서 수신 호스트 192.158.0.3으로 TCP 연결을 트리거하려고 시도합니다.
수신 호스트에서 tcpdump 출력을 모니터링하세요. log4j 취약점이 의심되는 대상은 JNDI 문자열을 파싱하고 LDAP 연결을 설정하려고 시도할 것입니다.
모든 포트를 스캔하는 것은 비효율적이고 매우 느립니다. log4j 라이브러리는 많은 제품에서 사용되므로, 먼저 환경에서 사용되는 웹 포트를 확인하세요. 사용자 지정 포트 목록으로 스크립트를 실행하세요.
스크립트와 다른 도구가 외부에서 log4j 취약점을 발견하지 못하게 하는 요소가 너무 많습니다. 그중 일부는 다음과 같습니다: 네트워크 및 서버 방화벽, 웹 애플리케이션 방화벽, 사용자 지정 TCP 포트, 소프트웨어/서비스가 낮은 심각도 이벤트(예: 우리의 일반적인 http 요청)를 로깅하지 않음, 스크립트가 필요한 호스트 이름 대신 IP 주소로 접근함 등...
log4j 문제에 대한 자세한 내용은 항상 오픈소스 프로젝트 또는 소프트웨어 공급업체의 공지사항을 확인하세요.
usage: log4j-quick-scan.py [-h] [-V] -e LISTENHOST [-p PORTS] [-l LOG] target
Scan hosts with log4j+jndi doing external connections.
required arguments:
-e LISTENHOST, --listenhost LISTENHOST
Host[:port] where to monitor tcp connections. It could be the same machine where script is to be run.
optional arguments:
-h, --help show this help message and exit
-V, --version Display version and exit.
-p PORTS, --ports PORTS
Optional, comma separated list of ports on tested hosts. Default: 80,8080,443,8443
-l LOG, --log LOG Optional, append output to custom log file. Default: ./log4j-quick-scan.log
positional arguments:
target Scan target: IP network in CIDR format.