红日靶场4渗透记录(上)
0 前言
后面的失败了,看到第4节结束就差不多了,靶场可能有点问题
1 环境搭建
最近红日靶场官网寄了,若想下载靶场镜像请私聊我
解压后是三个容器,web,dc,win7。按理来说我们只需来到vmware界面选择导入虚拟机就可以,但是这次选择该选项后是需要自动创建虚拟机的,要选一个空间稍大的一点的目录(默认是文档目录),大概装完后有这么大:
可见需要预留至少45G空间吧
逐个导入后逐个开启,查看下账号密码有没有问题(红日靶场2的密码有时候会错)
随后配置网络,DC,win7需要一张自定义的虚拟网卡,ubuntu作为DMZ区需要一张自定义的虚拟网卡和一张用于与外网通信的网卡(我选择了桥接模式)
这张自定义虚拟网卡必须如下配置,DC已经把内网网段限制死了
随后配置网络,ubuntu选择桥接和虚拟网卡2,其余两个只选择虚拟网卡2,最后互ping检测一下通路,成功就算是大功告成了
紧接着启动web服务,进去ubuntu的docker启动三个容器
随后外面访问一下三个容器端口,有服务就算完成
2 外网渗透
2.1 信息收集
介绍这个Arp-scan,这是一款kali自带的一款轻量ARP扫描工具,该工具会自动解析MAC地址,得到对应硬件厂商。由于用的是arp协议,所以还是会快一些
我觉得吧,用来扫描局域网的主机还是挺好用的,由于扫描的少,所以扫描速度还是比较快,可以很快的查看到局域网有哪些主机和对应的MAC地址。
扫描到主机后,再配合Nmap使用,更加方便。
104是web靶机,105是kali
想用nmap也可以用这个
详细信息
但是呢,明显-A参数更好,可以带上poc去扫描,指纹信息更丰富
这时你可以看到structs2的指纹特征(不过点开web界面也可以在title处看到)
2001:struts2
2002:Tomcat (version:8.5.19)
2003:phpmyadmin
2.2 Web
2.2.1 structs
一般是用struct2scan,但是我这里扫不出洞,复现失败
既然是上传文件,直接传冰蝎马,dirsearch扫到有个upload目录,于是决定upload/xxx.jsp这样碰碰运气,但是失败了捏
2.2.2 tomcat
复制到home目录
桌面双击home目录进去找就行
可以看到这个poc的使用
探测一下
成功后就把poc.jsp传上去了
成功后入上,kali也会给你个shell
tomcat漏洞汇总:Tomcat漏洞汇总 - 知乎 (zhihu.com)
Put方法写马,看到201成功了,访问/shell.jsp就行
原因是
漏洞的产生是由于配置不当(非默认配置),将配置文件(
conf/web.xml)中的readonly设置为了false,导致可以使用PUT方法上传任意文件,但限制了jsp后缀,不过对于不同平台有多种绕过方法
2.2.3 phpmyadmin
一看连弱密码都不用爆咱直接进来后台了,版本4.8.1
确实能穿
后面两个是sess文件包含,具体操作那个txt写得很明白
唯一要注意的是这里路径是常见的/tmp/sess_{your token}
3 Docker反弹shell
3.1 判断服务器是否为docker环境
实战中首先需要判断服务器是否为docker环境。
常用的判断方法有两种。
3.2 冰蝎的反弹shell
看到y0ng哥哥也用了下冰蝎,咱学一手
冰蝎安装建议直接下冰蝎3.0的,然后要jdk8,没有的自己去下一个,然后找到Jdk8的路径接着xxx/xxx/java.exe -jar Behinder.jar
启动以后,和蚁剑类似添加Url和密码(该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond)
‘
冰蝎在反弹shell这里的功能很丰富
kali
点击
成功
3.3 msfvenom 后门
生成msf马
与此同时kali开启新的终端开启监听
接着传出来
由于我这里/usr/bin/python: No module named SimpleHTTPServer
,就是py2没有装SimpleHTTPServer
所以用
拿到后,上传
当然这里上传如果没有冰蝎图形化界面的话,可以考虑wget,curl -F的方式
4 Docker逃逸
Docker逃逸漏洞目前已知有
- Dirty Cow(CVE-2016-5195)是Linux内核中的权限提升漏洞
- CVE-2019-5736
- emote api 未授权访问
4.1 CVE-2019-5736
先试试CVE-2019-5736
影响版本:
docker version <=18.09.2
RunC version <=1.0-rc6
但是人家没有Poc,所以咱下载一个https://github.com/Frichetten/CVE-2019-5736-PoC
就是反弹shell的命令
然后需要在配置特定环境变量的情况下使用Go编译,然后忽然发现kali没go
接着
注意这个source是临时设置的环境变量,随着新的终端的出现而消失
咱熟悉下meterpleter的使用
msfconsole常用命令 - 简书 (jianshu.com)
上传文件命令upload file
进入终端
之后加权限运行,还有重启docker
但最后果然遇到和y0一样的问题
表面成功(其实只是重写了sh)但是没有返回shell
成功效果如下图(借来的图)
4.2 特权模式—privileged+ssh 免密码 逃逸
一句话描述就是:利用docker的特权模式来在宿主机硬盘中写入ssh私钥,实现ssh免密登录宿主机,从而实现对目标宿主机的控制
特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。
使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。
当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。
4.2.1 挂载磁盘
所以第一步是挂载,何为挂载呢:这里的挂载指的就是将磁盘分区挂载到文件系统的层级结构中,用户可以访问层级结构中的对应路径来对磁盘分区进行读取访问。
可以看到 sda1
在/dev/sda1
不熟悉磁盘挂载的可以看这个linux 磁盘挂载 - 知乎 (zhihu.com)
查看是否挂载出去了
如上说明成功,我们可以通过访问/cyshack来访问宿主机的/dev/sda1这块磁盘
4.2.2 生成密钥
注意,生成东西都要记得加权限
我输入了密钥:thai
生成cyshack和cyshack.pub
4.2.3 写入密钥
一般来说用户目录下就有相应的.ssh目录
4.2.4 免密登录
之后
此时,可以利用自己的私钥进行免密码登录目标宿主机
但是我复现失败了,就直接ubuntu连了
5 内网渗透
弹个shell先
传shell.elf,加权限
监听,运行,成功
5.1 内网路由
其余三个网络是docker 内网地址
看到了内网地址,可以添加路由(可以run autoroute -help看提示)
但是我下面这张图用了下面的错误命令,路由ip段错了
挂代理(这个可以参考我以前写的博客)
run之后会出现 starting... ,jobs可以查看当前代理任务,如果出现stoping...,可以尝试更改 SRVHOST配置 或者 修改如下配置文件
如果proxychains配置终端代理出现问题 修改一下文件
切记打开的是/etc/proxychains4.conf
(这个因人而异吧)
最后面那行改为socks4 127.0.0.1 1080
改好后run
这样就开启socket代理了,
之后使用proxychains+cmd 这条命令,可以实现 使用代理执行命令(通过这个1080端口转发你本机的流量到shell上发出)
如果你一不小心和我一样代理的路由ip写错了,如何回去修改呢
首先要回到meterpreter,重新run一下之前的run autoroute -s 192.168.168.0/24
回到meterpreter
接着background回到msf,这时候直接run代理会显示被一个job占用,如何删掉该Job呢
可以看到重新开起来了
5.2 内网扫描
之后使用proxychains+cmd 这条命令,可以实现 使用代理执行命令(通过这个1080端口转发你本机的流量到shell上发出)
扫到啥呢:139,135,53,445
我的129靶机挂了,咱们先130
445容易想到永恒之蓝系列
图中这个rhost可以有这几种形式的写法
至于这个setg Proxies socks5:192.168.0.107:1080
要不要设置,只能说最好要(但是有时候不设置也可以,估计是自动开代理了)
5.3 进攻win2008尝试
理论上前面有域控信息收集之类的
效果
失败告终
5.4 进攻win7
5.4.1 直接挂4a代理进攻
扫描的时候扫到了
131就是了
然后这里继续失败踩坑,怀疑是代理的问题了,因为已经能打到445端口了,但是连不上去
5.4.2 使用sockets5
5.4.2.1 ew
下个ew
咱重开一遍,重新反弹ubuntu的shell给kali:
msfconsle
先ssh上ubuntu,执行
这样就可以把该进程挂后台了,不会挡在终端这,因为后面还要用这个终端(尝试过另一个ssh连上去,失败,只能这样)
这个[1] 7463
是pid
kali改下
配置路由
挂代理
扫活
ms17-010进攻win7
然后探测得到但是反弹连不上
换个使用方法
本地配置一下
kali
也是不行
5.4.2.2 chisel
直到我找到一篇文档(37条消息) 红日安全vulnstack-ATT&CK实战系列 红队实战(四)_Ys3ter的博客-CSDN博客
拿ew做socks代理时候msf一连就断,没法执行命令,换成chisel就好了
Release v1.7.7 · jpillora/chisel · GitHub
使用方法类似
ubuntu
kali
这里其实也是用1080的,8888是开在跳板机上的,很好理解,就是本机的流量全部用127.0.0.1:1080对外发送,发送到跳板机192.168.0.105:8888的代理上
用proxychains测试了下,可以是可以(注意proxychain只能转发tcp流量,ping就用不了)
而我106(本机)监听到的的确是来自ubuntu的ip,就说明是代理转发了
注意用的直连bind_tcp
5.5 win7上面工具的使用
5.5.1 Psexec的使用
(37条消息) PsExec的使用_平凡的学者的博客-CSDN博客_psexec使用命令
简单来说是远控软件,使用如下
这样就控制了DC
5.5.2 artifact.exe的使用
是cs的后门文件
(37条消息) 渗透测试神器CS(4.0)的使用_世间繁华梦一出的博客-CSDN博客_cs渗透测试
报错
https://www.cnblogs.com/adsry/p/12904057.html
也可以直接在win7跑下面这个(应该要管理员)
如果报错
xs,最后失败了,我根本没有管理员