首页/网络/常用端口速查/8009 Tomcat AJP / Chromecast
8000-8999 注册端口65 条

8009 Tomcat AJP / Chromecast

另一个双身份端口:Tomcat 的 AJP13 连接器(与前端 httpd 集成)与 Chromecast 的 castv2 流媒体协议共用这一数值。

常用端口速查网络更新于 2026-10-13

8009 是什么

Tomcat 的 AJP13 连接器默认监听 8009,用于前置 httpd 或 Nginx 通过 AJP 协议把请求转发给 Tomcat,比逐条重建 HTTP 请求更省开销。同一个数值也被 Google Cast 使用:Chromecast 投屏的 castv2 协议在设备与手机之间走 8009。一个端口对应两套完全无关的生态,排查时必须先看监听进程。

Ghostcat 的影响面

AJP 因 CVE-2020-1938(Ghostcat)广为人知:只要 8009 可达,攻击者即可通过构造 AJP 请求读取应用内的文件,包括配置文件中的数据库口令;如果应用允许上传文件且包含可解析的模板,还可能进一步发展为代码执行。影响版本范围很广,因此该端口长期是内网扫描的重点目标。

基本信息

服务Tomcat AJP13 连接器 / Google Cast castv2
协议TCP 8009
用途反向代理与容器集成、投屏流传输
默认监听视发行版而定,部分默认全网卡
安全等级AJP 必须限制为受信前端或直接关闭

典型使用场景

  • 用 httpd 的 mod_proxy_ajp 对接 Tomcat 后端,减少协议转换开销
  • 旧架构中 Apache 前置加 Tomcat 后端的组合,升级时确认 AJP 是否仍需保留
  • 安全核查时确认 AJP 是否对非受信网段暴露
  • Chromecast 投屏时设备与手机之间的流传输(castv2)

配置与加固

配置与加固
grep -n -A6 'AJP' /etc/tomcat/server.xml    # 查看 AJP Connector 配置
ss -lntp | grep 8009                        # 确认是否监听在 0.0.0.0
# server.xml 加固示例:
# <Connector protocol="AJP/1.3" address="127.0.0.1" port="8009"
#            secretRequired="true" secret="<随机串>"/>

外网可达性自查

外网可达性自查
nc -vz 10.0.0.5 8009         # 从其他网段验证是否可达
# 若应用不再使用 AJP:注释或删除 Connector 后重启
systemctl restart tomcat
journalctl -u tomcat --since '10 min ago' | tail -20   # 确认启动无异常

风险与加固对照

项目说明建议
CVE-2020-1938Ghostcat,AJP 文件读取与潜在代码执行升级到已修复版本
Tomcat 9.0.31 以上出厂配置默认注释 AJP 连接器保持注释或按需显式开启
共享密钥AJP 的 secret 校验机制secretRequired 设为 true 并使用随机密钥
只要 8009 对外可达,Ghostcat 就具备利用条件。无论版本是否已升级,都应限制监听地址或直接关闭 AJP,把请求交给 HTTP 反向代理承担。
同一数值在两种生态里的排查方式不同:Tomcat 场景看 server.xml 中的 Connector 配置,投屏场景看设备侧是否常驻 cast 服务,不要用一套结论覆盖两种情况。

易错点

  • AJP 监听全网卡且版本未升级:Ghostcat 可读取应用任意文件,包含配置里的数据库口令
  • 为省事把 AJP 端口映射到公网:扫描器几分钟内即可发现并尝试利用
  • 默认 8009 等同于 Tomcat:投屏设备同样使用该端口,需结合监听进程与设备类型判断
  • 关闭 AJP 前没有同步改前端代理配置:httpd 仍指向 AJP 端口,站点立即报 503

数据来源与参考

  • Apache Tomcat 官方文档(AJP 8009)
  • CVE-2020-1938(Ghostcat)公告

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌