【问题标题】:Is the version info on GoogleAppEngine secret?GoogleAppEngine 上的版本信息是保密的吗?
【发布时间】:2014-04-11 12:01:30
【问题描述】:

我注意到我们的 GoogleAppEngine 应用程序中有一些 XXE 漏洞。但是,您似乎必须知道文件的确切路径才能读取它们,例如

/base/data/home/apps/s~<app-name>/<version-id>.<somenumber>/appengine_config.py

我不确定 AppEngine 是如何提出<somenumber> 的,但我应该有多自信 <version-id><somenumber> 没有暴露在任何地方?

【问题讨论】:

  • 您是否尝试过从您共同拥有的另一个应用程序中读取文件来测试您是否有权限?我会假设您没有阅读权限。

标签: google-app-engine exploit


【解决方案1】:

我想知道这个数字是从哪里来的,经过一番搜索和实验后,我发现它实际上是应用程序更新时时间戳的混淆版本。

version_id = self.request.environ["CURRENT_VERSION_ID"].split('.')[1]
timestamp = long(version_id) / pow(2,28)
timestamp = datetime.datetime.fromtimestamp(timestamp).strftime("%d/%m/%y %X")
logging.info("Timestamp=" + timestamp)

例如,大约 5 分钟前上传的我的应用程序的最新版本是实时的。375065912366661170,当运行上面的代码时,它会显示为 11/04/14 15: 16:44 这是上传时间(UTC)。由于它基于时间,而不是您的特定应用,因此该值将在该确切时间点更新的所有 App Engine 应用版本之间共享。

这个 SO 答案 https://stackoverflow.com/a/3949530/2018227 是我的来源。

因此,在回答您最初的问题时,据我所知,<somenumber> 部分并未在任何可公开访问的地方公开,但它不是秘密。如果他们真的愿意,有人可以在他们怀疑您上次更新应用的一段时间内为所有时间戳生成所有可能的值,并尝试所有可能的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多