GoogleAppEngine上的版本信息是秘密吗?

时间:2014-04-11 12:01:31

标签: google-app-engine exploit

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

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

我不确定AppEngine如何提出<somenumber>,但我有多自信 <version-id><somenumber>未在任何地方公开?

1 个答案:

答案 0 :(得分:0)

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

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>部分没有公开可访问,但我知道,它不是秘密。如果他们真的想要,有人可以在一段时间内生成所有时间戳的所有可能值,他们怀疑您上次更新了应用程序,并尝试了所有可能的路径。