|
|
2021-12-11 21:06:29에 게시됨
|
|
|
|

지난 이틀 동안, 친구들 사이에서 "Apache Log4j2 원격 코드 실행 취약점"으로 인해 이 코드가 스와이프되었습니다. 이는 주로 컴포넌트에 Java JNDI 인젝션 취약점 때문입니다. 프로그램이 사용자가 입력한 데이터를 로그에 기록할 때, 공격자는 Apache Log4j2의 원격 코드 실행 취약점을 트리거하는 특별 요청을 만들어 이 취약점을 이용해 대상 서버에서 임의의 코드를 실행합니다.
영향 범위
Apache Log4j 2.x <= 2.14.1
JNDI(Java Naming and Directory Interface)는 Java에서 제공하는 Java 명명 및 디렉터리 인터페이스입니다. JNDI의 API를 호출함으로써 애플리케이션은 자원과 다른 프로그램 객체를 찾을 수 있습니다. JNDI는 Java EE의 중요한 부분으로, DataSource(JDBC 데이터 소스)뿐만 아니라 JDBC, LDAP, RMI, DNS, NIS, CORBA 등 기존 디렉터리와 서비스에 접근할 수 있다는 점이 유의해야 합니다. 인터넷에는 취약점 수정 방법과 취약점 스크린샷에 관한 글이 많지만, 취약점 테스트 방법에 대한 정보는 거의 없습니다.자바는 주로 코드를 테스트하기 위해 Log4j2를 사용합니다다음과 같습니다:
간단히 말해, Log4j2는 RMI 또는 LDAP 프로토콜을 통해 다음 주소에 접근하며, 프로토콜 내용에 따라 악의적으로 작성된 코드를 실행할 수 있습니다.
이 취약점의 존재는 거의 항상 윈도우 계산기를 열어 인터넷에서 확인할 수 있으며, 코드는 다음과 같습니다:
Log4J2는 공격자의 서버에 접근할 때 RMI 또는 LDAP 프로토콜을 사용하고, RMI와 LDAP 프로토콜 모두 TCP 기반이기 때문에 직접 접근할 수 있습니다.NET을 TCP 포트에서 듣는 경우, 로그를 print하기 위해 log4j2를 호출하면 .NET 리스닝 포트에 접근하면 취약점이 있을 수 있음을 증명하고, 그렇지 않다면 안전하다고 판단됩니다。
.NET은 매우 작은 테스트 프로그램을 생성합니다6KB, 코드는 다음과 같습니다:
log4j 컴포넌트를 사용해 보세요2.14.0이 버전은 인쇄되었으며, 렌더링은 다음과 같습니다:
log4j 컴포넌트를 다음으로 업그레이드해 보세요.2.15.0버전이 다시 실행되면 효과는 다음과 같습니다:
버전을 업그레이드한 후, 인쇄 로그를 호출한 후Java 프로그램은 더 이상 외부 포트에 접근하지 않습니다。
관심 있는 친구분들은 다음 링크를 참고해 취약점을 재현하고 계산기를 호출할 수 있습니다.
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.
마지막으로, 테스트 절차를 첨부하세요:
测试程序.rar
(2.66 KB, 다운로드 횟수: 1)
|
이전의:[실제 전투]. NET/C# SQLite 데이터베이스를 만들고 단순히 추가, 삭제, 수정만 하면 됩니다다음:CentOS 시스템 배포 nacos 튜토리얼
|