从端口扫描到权限提升:深入剖析rpcbind漏洞的攻防实战

📅 2026/6/30 9:14:55
从端口扫描到权限提升:深入剖析rpcbind漏洞的攻防实战
1. 认识rpcbind网络共享的电话接线员想象一下你走进一家大型公司前台告诉接待员你想找市场部的张经理。接待员查了通讯录后告诉你张经理在3楼305室分机号3508。这个接待员就像网络世界里的rpcbind服务——它不直接处理业务但能告诉你该去哪里找对应的服务。rpcbindRemote Procedure Call Bind是Unix/Linux系统中用于RPC服务的端口映射器主要配合NFS网络文件系统工作。它默认监听111端口TCP/UDP就像个活页夹记录着文件共享服务在2049端口、用户验证在xxx端口。我曾在企业内网渗透测试中发现超过60%的NFS服务器都开着rpcbind而管理员往往忽视它的安全配置。这个服务本身不复杂但问题在于版本老旧很多服务器还在用存在已知漏洞的rpcbind 0.2.0-0.2.3信息泄露会暴露其他RPC服务的端口信息连锁反应攻破rpcbind往往能顺藤摸瓜找到NFS等敏感服务2. 漏洞探测三板斧从扫描到验证2.1 基础扫描发现目标先来个快速全身检查nmap -sV -p 111 192.168.1.100这个命令就像用听诊器贴在111端口上能听到端口开放状态运行的rpcbind版本使用的RPC协议版本我上个月测试某云服务器时就发现了个rpcbind 0.2.0心跳顿时加速——这可是有公开漏洞的老版本。2.2 深度探测挖掘服务信息光知道版本还不够得看看它关联了哪些服务nmap -p 111 --scriptrpcinfo 192.168.1.100这个脚本会列出所有注册的RPC服务就像拿到了公司的部门通讯录。有次我通过这个发现了隐藏的NFS共享里面居然有整个部门的项目源码。2.3 漏洞验证Searchsploit实战知道版本后就要查病历本searchsploit rpcbind典型输出会像这样----------------------------------------- Exploit Title | Path ----------------------------------------- rpcbind 0.1.0-0.2.1 | linux/dos/36771.txt rpcbind 2.0-4.1 | linux/remote/39568.py -----------------------------------------注意看那些标记为remote的条目这些可能就是通往系统内部的钥匙。不过要提醒的是生产环境千万别乱用DoS攻击脚本除非你想被请去喝茶。3. 漏洞利用实战从信息收集到权限提升3.1 Metasploit模块化攻击对于不想折腾脚本的新手Metasploit是瑞士军刀msfconsole use auxiliary/scanner/misc/sunrpc_portmapper set rhosts 192.168.1.100 run这个模块能帮你确认rpcbind服务真实性获取所有映射的RPC服务端口识别非常规端口运行的NFS服务上周我遇到个案例管理员把NFS改到了61000端口以为能躲过扫描。结果通过rpcbind还是被抓出来了因为所有RPC服务都要在这里登记。3.2 NFS服务接力攻击如果发现了NFS服务通常端口2049可以尝试showmount -e 192.168.1.100输出类似Export list for 192.168.1.100: /home/user/share * /var/log (everyone)看到(everyone)就要警惕了——这意味着任何IP都能挂载。我曾在某次授权测试中通过挂载/var/log拿到了包含密码的日志文件。3.3 权限提升经典路径当获取到NFS访问权限后可以尝试查找可写目录上传恶意.so库文件通过LD_PRELOAD提权具体操作假设已挂载到/mntecho [evil code] /mnt/home/user/.config/evil.c gcc -shared -o evil.so evil.c -fPIC然后在目标机上LD_PRELOAD/tmp/evil.so /usr/bin/vulnerable_program这个技巧在去年某次红队演练中帮我拿下了3台服务器。关键是要找到有执行权限的程序目录。4. 防御指南给管理员的五个锦囊4.1 版本升级第一原则打开终端输入rpcbind -version如果版本低于2.4.0请立即升级。就像我常跟客户说的用十年前的杀毒软件防今天的病毒跟用渔网挡子弹没区别。4.2 防火墙最小化规则建议的iptables规则iptables -A INPUT -p tcp --dport 111 -s 10.0.0.0/24 -j ACCEPT iptables -A INPUT -p udp --dport 111 -s 10.0.0.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 111 -j DROP只允许内网IP访问111端口其他全部拒绝。有次审计时发现某公司服务器居然对0.0.0.0开放rpcbind吓得我赶紧帮他们加了规则。4.3 NFS配置 hardening编辑/etc/exports时记住用rw明确指定可写IP禁用no_root_squash加上seckrb5p加密选项正确的配置示例/home/data 192.168.1.50(rw,sync,seckrb5p)千万别学我见过的一个配置/ *(rw,no_root_squash)这相当于把大门钥匙插在门锁上。4.4 监控与日志审计建议部署的监控项异常的rpcbind进程崩溃非常规IP的111端口连接NFS挂载请求频率突增用这个命令查可疑连接netstat -antp | grep rpcbind4.5 渗透测试验证每季度至少做一次nmap --script rpcinfo and safe -p 111 YOUR_IP看看会泄露哪些信息。就像定期体检早发现早治疗。去年有家客户就是通过定期扫描在黑客之前发现并修补了rpcbind漏洞。