Thinkphp5.1反序列化漏洞复现加代码调式
2023-4-25 17:13:9 Author: www.freebuf.com(查看原文) 阅读量:22 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

代码调试环境问题

一直不行就是composer上的默认php版本和你phpstrom上面的版本对不上,要先在你composer下来的目录下找composer.json文件修改版本(可能大概而已)

因为我是用自己的phpstudy来搭建composer下来的源码的,没用think run 。。。

1682413348_64479724e5032492be702.png!small?1682413310351

环境搭建并访问成功

(自行百度一下composer如何安装)

1682412428_6447938ce926912aaf2b3.png!small?1682412390263

版本错了再来

https://packagist.org/找相应的版本下载信息

1682412436_64479394f1130e40dff0e.png!small?1682412398283

1682412443_6447939be497aeb48f0d2.png!small?1682412405210

不太行这样下载只会下载最新版本好像,继续

1682412466_644793b27ac286d826bcb.png!small?1682412427806

成功搭建好

1682412479_644793bf6f61730cf9169.png!small?1682412440703

复现过程(poc是偷别人的)忘记在原链接在哪里了,真是个小呆瓜1682412513_644793e13ae7ae5aa7b47.png!small?1682412474512

增加应用入口反序列化接收1682412593_6447943117fbcbc6c3424.png!small?1682412554382

复现成功截图·

1682412740_644794c4933b525d0e734.png!small?1682412702235

直接可用hackbar发包

1682412757_644794d5da85758dd380a.png!small?1682412719179

代码调式

接受反序列化字符

1682412806_64479506f07f4fed25279.png!small?1682412768349

序列化出对象,无利用会触发析构函数

1682412814_6447950e27a3a8ae9c74b.png!small?1682412775590

跟进removeFiles()

1682412820_64479514678234cc667b7.png!small?1682412781696

继续

回头看poc

1682412827_6447951b74f80c56ceeb8.png!small?1682412788697

Windows的对象赋值为一个Pivot的实例化

所以

1682412834_64479522ea4ab354a55b3.png!small?1682412796273

跟进file_exists,他会把参数当成字符处理,由于我们传进去的是对象,因此会触发php的_Tostring()

1682412842_6447952a88f990836761c.png!small?1682412803942

跟进toJson

当前对象(Piovt)ToAray()方法

1682412849_6447953152a0c3d497e08.png!small?1682412812044

跟进toArray

1682412855_64479537b3e6c13f41e6d.png!small?1682412817157

visible为空值,直接跳到第二个if判断

hidden也为空值,所以也不进去if判断

来到这个foreach遍历

1682412866_644795429967aa8018372.png!small?1682412827978

1682412874_6447954a065a4483c87ba.png!small?1682412835232

1682412880_64479550adb1cbac68378.png!small?1682412841971

跟进getAtr,调用getData

1682412886_644795561b5e0d6946fc6.png!small?1682412847529

1682412893_6447955d934f466e091bc.png!small?1682412855005

这些值在poc序列化前已经构造好了

此时的$value的值是前面的data[‘apls’]

拼接取得方法

1682412900_6447956438e667f5cad0e.png!small?1682412861462

1682412904_64479568bebe84560d5ef.png!small?1682412866051

都不符合一些if里面的条件

直接到底部return

1682412912_644795709c4a08fba4c16.png!small?1682412873948

1682412918_64479576adf5d45e7f282.png!small?1682412880204

回到调用处,进行判断进入判断体

1682412934_644795865810dc77d1892.png!small?1682412896021

1682412948_644795944169c99b207be.png!small?1682412909596

继续跟

1682412954_6447959a939c7aef152ff.png!small?1682412915845

1682412960_644795a0a01f2750454c9.png!small?1682412922409

1682412966_644795a6b539bcb24a88e.png!small?1682412927968

最后

1682412975_644795af740b85da222ab.png!small?1682412936988

1682412982_644795b630a66a376feeb.png!small?1682412943441

最后进行一系列传参,进行html输出

1682412988_644795bcdc34b00c2ad60.png!small?1682412950577


文章来源: https://www.freebuf.com/articles/web/364838.html
如有侵权请联系:admin#unsafe.sh