前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >公交售票手机APP中的XXE

公交售票手机APP中的XXE

作者头像
黑伞安全
发布2021-10-14 12:17:15
3280
发布2021-10-14 12:17:15
举报
文章被收录于专栏:黑伞安全黑伞安全

infosecwriteups翻译文章

目标的范围是一个票务Android应用程序(Prod)。这个应用程序是基于德国的主要公共交通票务应用程序。

登录安卓应用程序并完成帐户设置后,我遇到了“更改我的数据”选项。

在下一个屏幕中,我必须修改我的个人数据

在保存数据时,我发现以下请求被发送到服务器

The request format was like 062.6.26#{some long data}.This looks interesting. 接下来,我选择了{一些长数据}并将其发送到解码器。我尝试解码它并发现它是base64。解码后的数据是一个 XML,如下图所示

Great, next I included the following XXE payload

代码语言:javascript
复制
version="1.0" encoding="UTF-8"?><!DOCTYPE aa[ bb ANY> xxe SYSTEM "file:///etc/passwd">]>

并从主体中调用定义的实体 &xxe; 如下图所示:

现在,我需要做的就是将整个payload编码回 base64 格式。

最后,我替换了原始请求中的payload并将请求转发到服务器。而且,bang! get了 /etc/passwd 的内容

由于应用程序使用的是 java,甚至可以使用以下pyload列出目录

代码语言:javascript
复制
version="1.0" encoding="UTF-8"?><!DOCTYPE aa[ bb ANY> xxe SYSTEM "file://">]>

我在寻找SSH private keys,但出于好奇,我尝试获取 /etc/shadow(感觉很幸运:D)。而且,令我惊讶的是,我get it(这是一个罕见的案例)。表明它以 root 身份运行。

我还发现,SSH 私钥在 /home/user/.ssh/ 目录中可以读到。这意味着我们也可以在系统上执行完整的 RCE,但授权不够。SO 我没有尝试,直到这里停止我的测试并报告了同样的情况。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑伞攻防实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档