学徒-修改序列化对象
# 实验室:修改序列化对象
# 题目
此实验室使用基于序列化的会话机制,因此容易受到 权限提升 的攻击。若要解决该实验,请编辑会话 cookie 中的序列化对象,以利用此漏洞并获得管理员权限。然后,删除用户carlos
。
你可以使用以下凭据登录到自己的帐户:wiener:peter
- name: 实验室-学徒
desc: 修改序列化对象 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-modifying-serialized-objects
bgColor: '#001350'
textColor: '#39d50c'
1
2
3
4
5
6
2
3
4
5
6
# 实操
点击 “ACCESS THE LAB” 进入实验室。
一个购物站点。
使用题目中提供的用户名和密码进行登录。
登录之后,通过 BurpSuite 捕获一个请求数据包,在 Cookie 中可以看到session
字段,参数值疑似为一段经过 Base64 编码的值。
转到 BurpSuite 的 “Decoder” 功能模块,对 Cookie 依次进行 URL 解码和 Base64 解码,得到一个 PHP 序列化对象。
这个序列化对象存在一个可疑的值admin: false
(布尔类型的0
相当于false
)
O:4:"User":2:{s:8:"username";s:6:"wiener";s:5:"admin";b:0;}
1
在网站的/admin
目录下,存在一个管理界面,需要管理员身份才能访问。
看到先前的序列化对象,将admin: false
修改为admin: true
(布尔类型的1
相当于true
):
O:4:"User":2:{s:8:"username";s:6:"wiener";s:5:"admin";b:1;}
1
然后对 修改过后的序列化对象 进行 Base64 编码,然后对特殊字符(例如=
)进行 URL 编码:
Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjY6IndpZW5lciI7czo1OiJhZG1pbiI7YjoxO30=
Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjY6IndpZW5lciI7czo1OiJhZG1pbiI7YjoxO30%3d
1
2
3
2
3
将生成的恶意序列化对象覆盖到 Cookie 的session
字段中,然后再次访问管理界面。
成功利用反序列化漏洞实现了 权限提升。
点击 “Delete” 按钮删除 carlos 账户。
删除成功,实验完成。
编辑 (opens new window)