HackBox(贰)
目标一
同样,给出攻击地址为10.10.10.46
使用nmap进行扫描
使用给出的“弱口令”进行连接
发现存在backup.zip,下载下来查看一下存在那些内容。
解压发现存在密码,可以使用JohntheRipper和rockyou.txt破解密码。
发现密码为741852963。
解压完成后发现存在两个文件。
查看一下index.php文件内容。
发现登录逻辑,发现密码经过md5加密,进行解密。
访问地址,使用解密的用户名密码进行登录。
登录后发现只有简单的搜索模块,进行最常见的sql注入测试。
使用cookie进行sql注入
查看是否可直接--os-shell。
可以用来执行bash进行反向shell。
权限提升
让我们升级到tty shell并继续枚举。
根据提示,查看dashboard.php的源码。
此密码可用于查看用户的sudo特权。
允许用户使用vi编辑/etc/postgresql/11/main/pg_hba.conf。可以利用它来获取root shell并访问root.txt。
获取flag并提交即可。
目标二
给出攻击地址为10.10.10.29
还是使用nmap进行查看,查看开启那些端口服务。
从nmap中可以看到开启了IIS和Mysql。
尝试访问80端口。
发现没有什么系统页面。
使用gobuster进行目录扫描。
发现名为wordpress的文件夹。
查看相关内容。
访问后台,查看是否为默认后台登录页面。
在上面几个目标中,发现常用密码为P@s5w0rd!
使用该密码进行登录尝试。
登录成功。
根据提示,可以通过msfmodule利用管理访问权限在系统上获取meterpreter shell。
将netcat二进制文件上传到目标以获得更稳定的shell。
使用lc更改目录,进行上传。
本地监听对应端口,接收到反弹。
接下来进行提权。
因为是Windows Server 2016操作系统,所以容易受到Rotten Potato攻击。
Juicy Potato是该漏洞利用程序的一种变体,它允许Windows上的服务帐户通过利用BITS和MiTM攻击中的SeAssignPrimaryTokenorSeImpersonate特权升级为SYSTEM(最高特权)。
可以通过上传Juicy Potato二进制文件并执行它来利用它。和以前一样,我们可以使用meterpreter shell进行上传,然后可以使用netcat shell执行漏洞利用。
还是,切换到本地目录下,上传Juicy Potato,需要将文件名称改成任意其他名称,否则将被Windows Defender删除。
创建一个将由漏洞利用程序执行的批处理文件,然后返回SYSTEM外壳程序。
创建新的监听端口接受反弹。
命令执行netcat shell。
使用Mimikatz获取登录密码。
获取到域用户名密码。
获取到桌面flag进行提交。
目标三
目标地址为10.10.10.30
使用masscan进行全端口扫描
端口88通常与Kerberos关联,端口389与LDAP关联,这表明这是域控制器。注意到在端口5985上启用了WinRM。
可以使用目标二中获取到的凭证。可以尝试枚举Active Directory。使用BloodHound来实现
json文件现在应该在工作目录中,可以导入到BloodHound中了。
为什么要用python版本的bloodhound,因为直接用psexec是登陆不上去的,而且也没有开3389端口,也就无法放exe和ps1的脚本放上去执行
-d megacorp.local //这里的域怎么得来?
1.在Shield靶机上面查询得知2.nmap扫描的时候看到运行3268端口和389都有域信息输出
-u sandra -p "Password1234!" //在Shield靶机获取到的域用户
-gc pathfinder.megacorp.local // pathfinder主机名怎么得来?
1.在Shield靶机执行mimikatz上面得知Logon Server:PATHFINDER
2.这个参数有什么用?可以在官方查询:https://docs.microsoft.com/en-us/windows/win32/ad/global-catalog 资料得知是全局编录服务器,还可以阅读下AD域服务的文章:https://www.secpulse.com/archives/82876.html 意思就是说:指定GC服务器就不需要花更多的时间去域林中搜索对象所在的域,加快枚举的速度,可以连接到3268端口进行枚举
-c all //收集全部信息
-ns 10.10.10.30 //指定DNS解析服务器
安装和启动BloodHound
首先,我们需要安装neo4j和BloodHound。
接下来,我们需要配置neo4j服务。
运行以下命令
然后将提示您更改密码。接下来,我们开始BloodHound
确保已连接到数据库;在三个输入字段顶部以符号表示。默认用户名neo4j,使用先前设置的密码。
打开BloodHound,可以拖放.json文件,然后BloodHound将开始分析数据。可以选择各种查询,其中一些非常有用的是Shortest Paths to High value Targets和Find Principles with DCSync Rights。
虽然后面的查询返回以下内容:
我们可以看到svc_bes拥有GetChangesAll对域的特权。这意味着该帐户可以从域控制器请求复制数据,并获得敏感信息,例如用户哈希。
横向运行
使用Impacket的工具进行检查GetNPUsers
我们获取的TGT票证svc_bes并将其保存到名为的文件中hash。我们可以结合使用Hashcat或JTRrockyou.txt来获取纯文本密码Sheffield19。
现在可以使用WinRM一样访问服务器并获得user.txt。
为了利用该GetChangesAll权限,可以使用Impacket的secretsdump.py进行DCSync攻击,并转储所有域用户的NTLM哈希值。
使用默认的域管理员NTLM哈希,我们可以在PTH攻击中使用它来获得对系统的更高访问权限。为此,我们可以使用Impacket的psexec.py。
至此就以攻击完成,获取到桌面flag文件。
BloodHound
BloodHound以用图与线的形式,将域内用户、计算机、组、Sessions、ACLs以及域内所有相关用户、组、计算机、登陆信息、访问控制策略之间的关系更直观的展现在Red Team面前进行更便捷的分析域内情况,更快速的在域内提升自己的权限。它也可以使Blue Team成员对己方网络系统进行更好的安全检测及保证域的安全性。
BloodHound通过在域内导出相关信息,在将数据收集后,将其导入Neo4j数据库中,进行展示分析。Neo4j是一款NOSQL图形数据库,它将结构化数据存储在网络上而不是表中,Bloodhound正是利用这种特性加以合理分析,可以更加直观的将数据以节点空间”来表达相关数据。
左上角的三个选项分别是数据库信息、节点信息、查询模块。
在数据库信息下可以显示所分析域的用户数量、计算机数量、组数量、Sessions数量、ACLs数量、关系。
我们可以在右边第四个窗口进行上传数据,BloodHound会帮助我们分析并展示数据。
演示数据来自靶机内搜索数据
现在数据库中存在5个用户,6个组,52条ACL,57个关系。
查询模块共有24个内容,分别是
点击图中任意用户,可查看该用户Name、DisPlayName、最后修改密码时间、最后登陆时间、该用户登陆在那台计算机存在Session,是否启动、属于那些组、拥有那些机器的本地管理员权限、对访问对象对控制权限等,BloodHound可以将这些以图表对形式展示出来,方便Pentester更快对进行横向渗透,提升权限。
DCSync是mimikatz在2015年添加的一个功能,由Benjamin DELPY gentilkiwi和Vincent LE TOUX共同编写,能够用来导出域内所有用户的hash,可以看到SVC_BES域用户对域控是拥有GetcangAll权限
2、Find AS-REP Roastable Users (DontReqPreAuth)
查看是否存在AS-REPRoasting漏洞的账户
neo4j
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
Active Directory
Acitve Directory(AD) 是一项Microsoft技术,用于管理网络上的计算机和其他设备。
Active Directory 允许网络管理员在网络中创建和管理域、用户和对象。
例如管理员可以创建一组用户,并赋予他们对服务器上某些目录的特定访问权限。随着网络的发展,Active Directory提供了一种将大量组织为逻辑组和子组的方法,同时提供了每个级别的访问控制。
ASREPRoasting的攻击
这篇文章将详细介绍我们正在滥用的Kerberos方面的背景,确切的问题是什么,如何轻松枚举不需要预身份验证的帐户,如何在这些情况下提取可破解的哈希值以及如何破解这些漏洞有效地检索哈希。还有一个关联的PowerShell工具箱ASREPRoast,现在可以在GitHub上使用。
如果您可以枚举Windows域中不需要Kerberos预身份验证的任何帐户,则现在可以轻松地为该帐户请求一条加密信息,并有效地离线破解资料,并显示用户密码。
如果您对目标用户拥有GenericWrite / GenericAll权限,则可以恶意修改其userAccountControl以使其不需要预身份验证,使用ASREPRoast,然后重置值
evil-winrm
evil-winrm是一个可用于黑客攻击/渗透测试的Windows远程管理(WinRM) Shell。
evil-winrm是Windows远程管理(WinRM) Shell的终极版本。
Windows远程管理是“WS 管理协议的 Microsoft 实施,该协议是基于标准 SOAP、不受防火墙影响的协议,允许不同供应商的硬件和操作系统相互操作。而微软将其包含在他们的系统中,是为了便于系统管理员在日常工作中,远程管理服务器,或通过脚本同时管理多台服务器,以提高他们的工作效率。
此程序可在启用此功能的任何Microsoft Windows服务器上使用(通常端口为5985),当然只有在你具有使用凭据和权限时才能使用。因此,我们说它可用于黑客攻击的后利用/渗透测试阶段。相对于攻击者来说,这个程序能为他们提供更好更简单易用的功能。当然,系统管理员也可以将其用于合法目的,但其大部分功能都集中于黑客攻击/渗透测试。
详细说明:evil-winrm:Windows远程管理(WinRM)Shell终极版-https://www.freebuf.com/sectool/210479.html
TGT(Ticket Grangting Ticket)
TGT是CAS为用户签发的登录票据,拥有了TGT,用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS认证成功后,CAS生成cookie(叫TGC),写入浏览器,同时生成一个TGT对象,放入自己的缓存,TGT对象的ID就是cookie的值。当HTTP再次请求到来时,如果传过来的有CAS生成的cookie,则CAS以此cookie值为key查询缓存中有无TGT ,如果有的话,则说明用户之前登录过,如果没有,则用户需要重新登录。
CAS的核心就是其Ticket,及其在Ticket之上的一系列处理操作。CAS的主要票据有TGT、ST、PGT、PGTIOU、PT,其中TGT、ST是CAS1.0协议中就有的票据,PGT、PGTIOU、PT是CAS2.0协议中有的票据。
TGC (Ticket-granting cookie):
存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,并且只能基于安全通道传输(Https),是CAS Server用来明确用户身份的凭证。
· ST(Service Ticket)
ST是CAS为用户签发的访问某一service的票据。用户访问service时,service发现用户没有ST,则要求用户去CAS获取ST。用户向CAS发出获取ST的请求,如果用户的请求中包含cookie,则CAS会以此cookie值为key查询缓存中有无TGT,如果存在TGT,则用此TGT签发一个ST,返回给用户。用户凭借ST去访问service,service拿ST去CAS验证,验证通过后,允许用户访问资源。
· PGT(Proxy Granting Ticket)
Proxy Service的代理凭据。用户通过CAS成功登录某一Proxy Service后,CAS生成一个PGT对象,缓存在CAS本地,同时将PGT的值(一个UUID字符串)回传给Proxy Service,并保存在Proxy Service里。Proxy Service拿到PGT后,就可以为Target Service(back-end service)做代理,为其申请PT。
· PGTIOU(全称 Proxy Granting Ticket I Owe You)
PGTIOU是CAS协议中定义的一种附加票据,它增强了传输、获取PGT的安全性。
PGT的传输与获取的过程:Proxy Service调用CAS的serviceValidate接口验证ST成功后,CAS首先会访问pgtUrl指向的https url,将生成的 PGT及PGTIOU传输给proxy service,proxy service会以PGTIOU为key,PGT为value,将其存储在Map中;然后CAS会生成验证ST成功的xml消息,返回给Proxy Service,xml消息中含有PGTIOU,proxy service收到Xml消息后,会从中解析出PGTIOU的值,然后以其为key,在map中找出PGT的值,赋值给代表用户信息的Assertion对象的pgtId,同时在map中将其删除。
· PT(Proxy Ticket)
PT是用户访问Target Service(back-end service)的票据。如果用户访问的是一个Web应用,则Web应用会要求浏览器提供ST,浏览器就会用cookie去CAS获取一个ST,然后就可以访问这个Web应用了。如果用户访问的不是一个Web应用,而是一个C/S结构的应用,因为C/S结构的应用得不到cookie,所以用户不能自己去CAS获取ST,而是通过访问proxy service的接口,凭借proxy service的PGT去获取一个PT,然后才能访问到此应用。
2、TGT、ST、PGT、PT之间关系
1)ST是TGT签发的。用户在CAS上认证成功后,CAS生成TGT,用TGT签发一个ST,ST的ticketGrantingTicket属性值是TGT对象,然后把ST的值redirect到客户应用。
2)PGT是ST签发的。用户凭借ST去访问Proxy service,Proxy service去CAS验证ST(同时传递PgtUrl参数给CAS),如果ST验证成功,则CAS用ST签发一个PGT,PGT对象里的ticketGrantingTicket是签发ST的TGT对象。
3)PT是PGT签发的。Proxy service代理back-end service去CAS获取PT的时候,CAS根据传来的pgt参数,获取到PGT对象,然后调用其grantServiceTicket方法,生成一个PT对象。
参考:
CAS Ticket票据:TGT、ST、PGT、PT、PGTIOU-http://www.coin163.com/java/cas/ticket.html
Hackthebox靶场练习-Pathfinder-https://zhuanlan.zhihu.com/p/338002504
HTB-Forest-https://blog.csdn.net/weixin_45434043/article/details/105084501
BloodHound官方使用指南-https://www.cnblogs.com/backlion/p/10643132.html