W ciągu ostatnich dwóch dni został on przeciągnięty przez "podatność na zdalne wykonywanie kodu Apache Log4j2" wśród znajomych, głównie z powodu podatności na wstrzykiwanie JNDI w Java w tym komponencie: gdy program zapisuje dane wprowadzone przez użytkownika do loga, atakujący tworzy specjalne żądanie, aby wywołać podatność na zdalne wykonywanie kodu w Apache Log4j2, wykorzystując tę lukę do uruchomienia dowolnego kodu na docelowym serwerze.
Zakres wpływu
Apache Log4j 2.x <= 2.14.1
JNDI (Java Naming and Directory Interface) to interfejs nazewnictwa i katalogów w Javie oferowany przez Javę. Wywołując API JNDI, aplikacje mogą lokalizować zasoby i inne obiekty programowe. JNDI jest ważną częścią Java EE, warto zauważyć, że nie obejmuje tylko DataSource (źródło danych JDBC), ale także umożliwia dostęp do istniejących katalogów i usług, takich jak: JDBC, LDAP, RMI, DNS, NIS, CORBA, fragment z Baidu Encyclopedia. W internecie jest wiele artykułów o tym, jak naprawić luki i zrzuty ekranu z nich, ale niewiele o tym, jak przetestować projekt pod kątem tych luk.Java głównie testuje kod w Log4j2Następujący sposób:
Mówiąc prosto, Log4j2 uzyska dostęp do następującego adresu przez protokół RMI lub LDAP i w zależności od treści protokołu może uruchamiać złośliwie skonstruowany kod.
Istnienie tej luki jest niemal zawsze potwierdzone w Internecie, otwierając kalkulator Windows, a kod wygląda następująco:
Ponieważ Log4J2 korzysta z protokołów RMI lub LDAP do dostępu do serwera atakującego, a zarówno protokoły RMI, jak i LDAP są oparte na TCP, możemy to zrobić bezpośrednioUżywając .NET do nasłuchiwania na porcie TCP, jeśli wywołanie log4j2 do drukowania logów dostaje się do portu nasłuchu .NET, dowodzi to na istnienie luki, a jeśli nie, to jest bezpieczne。
.NET generuje bardzo małe programy testowe6kb, kod jest następujący:
Spróbuj użyć komponentu log4j2.14.0Wersja jest drukowana, a rendering wygląda następująco:
Spróbuj zaktualizować komponent log4j do2.15.0Wykonana ponownie, efekt wygląda następująco:
Po aktualizacji wersji okazuje się, że po wywołaniu dziennika wydruku,Program Java nie korzysta już z zewnętrznego portu。
Zainteresowani przyjaciele, możecie odwołać się do poniższego linku, aby odtworzyć lukę i wywołać kalkulator.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Na koniec załącz procedurę testową:
测试程序.rar
(2.66 KB, Liczba pobranych plików: 1)
|