代码之家  ›  专栏  ›  技术社区  ›  Thomi

X权限绕过

  •  0
  • Thomi  · 技术社区  · 16 年前

    我正在尝试编写一个作为守护进程运行并监视的应用程序 运行X个会话。现在我很难找到文件 从我的守护进程连接到正在运行的X显示器。召唤 XOpenDisplay(dispName) 研究,看起来我需要用xauth做点什么。

    在我的测试环境中,X服务器的启动方式如下:

    /usr/bin/X -br -nolisten tcp :0 vt7 -auth /var/run/xauth/A:0-QBEVDj
    

    该文件包含一个条目,如下所示:

    #ffff##:  MIT-MAGIC-COOKIE-1  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    

    通过向添加条目 ~/.Xauthority 使用相同的十六进制密钥,我可以 我想它的位置会随着发行版的不同而变化,以及 身份验证文件。如果进程作为守护进程运行,它可能没有 主目录,那么我怎么知道把新条目写在哪里呢?

    ~/.X权威 ,甚至知道饼干在哪里 所有。我意识到这不太可能——安全模型有什么好处 如果它很容易被绕过?但我希望这个名单上的人可能有 在本地机器上显示?

    2 回复  |  直到 12 年前
        1
  •  1
  •   C. K. Young    16 年前

    如果指定了主目录,则不必使用主目录 XAUTHORITY .Xauthority 文件。阅读 xauth 手册页。

    但是,一般来说,由于您提到的原因,很难找到身份验证文件;此外,这种“寻找身份验证令牌”的方法只适用于本地显示器。

    关于让root(或其他用户)随意连接到X服务器,您可能需要修补源代码才能做到这一点,并且必须使用类似 getpeereid

        2
  •  1
  •   kazanaki    16 年前

    Xauth不是X的唯一安全机制

    还有一个(不太安全)只是执行基于IP的身份验证 (参见 xhost ).

    因此,如果您将X服务器切换到这种不太安全的模式,它将信任任何连接 从定义的IP集合中。

    这样,您根本不需要与Xauthority打交道。