Insecure deserialization——不安全的反序列化

理论知识:

https://portswigger.net/web-security/deserialization

Lab: Modifying serialized objects——实验室:修改序列化对象

https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-modifying-serialized-objects

原理:

基于序列化的会话机制:实验室使用了序列化的对象来存储用户的会话信息。这些对象通常包含用户的身份和权限等信息。

序列化对象:在 PHP 中,可以使用 serialize() 函数将对象转换为字符串表示形式,方便存储和传输。反过来,unserialize() 函数可以将字符串还原为原始对象。

漏洞点:实验中,序列化对象包含了用户的权限信息(例如 admin 属性)。攻击者可以通过修改序列化对象的内容(如将 admin 属性从 b:0 更改为 b:1),来伪造管理员权限。

实验记录:

登录用户

dashboard发现反序列化漏洞

将cookie处base64解码后,修改s:5:”admin”;b:1;

对比可发现存在admin panel

/admin/delete?username=carlos修改请求路径发包

总结:

改个参数而已

Lab: Modifying serialized data types——实验室:修改序列化数据类型

https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-modifying-serialized-data-types

原理:

在 PHP 7.x 及更早版本中,PHP 对不同类型的数据进行比较时有特殊的行为。当进行比较时,PHP 会将字符串 "0" 和整数 0 视为相等(即 "0" == 0true),这可能被用来绕过身份验证机制。

实验记录:

登录

将username改为administrator,access_token改为int类型且为0,修改id为administrator重新发包

可以看到admin panel,修改请求路径为/admin/delete?username=carlos

总结:

根据php版本的特性导致的判断绕过

Lab: Using application functionality to exploit insecure deserialization——实验室:使用应用程序功能来利用不安全的反序列化

https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-using-application-functionality-to-exploit-insecure-deserialization

原理:

反序列化后的对象包含一个 avatar_link 属性,指向用户的头像文件路径。攻击者可以通过修改这个属性,指向系统上的其他文件(例如,卡洛斯的 morale.txt 文件)。

实验记录:

登录,发现存在一个头像上传功能(可以不用上传内容),功能点是思路是:账户存在,然后用户可以上传图片,图片被保存,下面一个delete account功能,删除用户后,服务器将用户上传的图片删除,我们通过删除用户功能抓包修改图片的地址即可

删除/home/carlos/morale.txt

总结:

需要对系统功能进行理解,删除用户的同时删除头像,将头像路径替换即可删除其他文件

Lab: Arbitrary object injection in PHP——实验室:PHP 中的任意对象注入

https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-arbitrary-object-injection-in-php

原理:

利用编辑器生成的备份文件(通过在文件名后加 ~),读取源代码 /libs/CustomTemplate.php。 发现 CustomTemplate 类包含 __destruct() 方法,调用了 unlink(),删除了由 $lock_file_path 属性指定的文件。根据 PHP 序列化语法构造对象,使 $lock_file_path 指向目标文件 /home/carlos/morale.txt

实验记录:

登录后查看源代码发现引用文件

通过在文件名后附加波形符(~ )来读取源代码

本来想展示一下高端操作,结果还要考虑绕过什么的,不会。遂放弃

根据上面生成的序列化内容改写为如下的payload

O:14:"CustomTemplate":1:{s:14:"lock_file_path";s:23:"/home/carlos/morale.txt";}

放到cookie中发包即可,反序列化的结果为lock_file_path文件路径为/home/carlos/morale.txt

总结:

按照我浅薄的理解,__destruct() 方法会在对象销毁时自动执行,而内容为检测锁文件是否存在以及删除锁文件,这段代码的含义为在修改模板文件时创建一个锁文件.lock,当修改完毕后删除锁文件。我们将序列化的内容中锁文件的路径指定为其他文件路径,当其进行反序列化时,触发__destruct()方法,被指定的路径文件将被删除

Lab: Exploiting Java deserialization with Apache Commons——实验室:通过 Apache Commons 利用 Java 反序列化

https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-exploiting-java-deserialization-with-apache-commons

原理:

实验记录:

总结:

Lab: Exploiting PHP deserialization with a pre-built gadget chain——实验室:通过预构建的小工具链利用 PHP 反序列化

https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-exploiting-php-deserialization-with-a-pre-built-gadget-chain

原理:

实验记录:

总结:

Lab: Exploiting Ruby deserialization using a documented gadget chain——实验室:使用记录的小工具链利用 Ruby 反序列化

https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-exploiting-ruby-deserialization-using-a-documented-gadget-chain

原理:

实验记录:

总结:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇