小迪安全109-php模型动态调试,反序列化,变量覆盖,tp框架,原生pop链

案例一 原生代码变量覆盖,duomicms

变量覆盖是什么

这个时候为什么会输出xiaodi呢

就是因为$a=b所以$$a=$b  所以就让$b=xiaodi

搞不到源码,看老师的学吧

这一般在web端页面是看不到,也不好发现,代码可以看关键字和函数

例如$$这个符号

搜索完之后有很多,首先看前端和配置界面,再去看后台的界面

先看有变量且可以控制的文件

有可控变量,这里很可能就是脆弱点

而这个代码就是个数组接受$_get,$_post,$_cookie的值,在网页传输数据,例如get传输name激素?name=xiaodi,因为as复制给了reques,在代码内接受$_get  变量name的值,因为是经过数组传递的值,所以就是$_get[name]=xiaodi  数组的表达方式赋值给$k=》$v  那就是$name=xiadi

比起$name=$_get[name]  这样就直接简化挨个写的代码,这样可以直接遍历获取提交的值并赋值给变量。

这里存在变量覆盖但本身不是个漏洞,需要利用起来的才叫漏洞

我们登录到后台

正常这里有对cookie值的验证,那我们可不可以进行变量覆盖,覆盖为管理员的,那我们就可以访问管理员界面。

我们来到管理员登录文件,看他能不能进行变量覆盖,就看他有没有包含能变量覆盖的文件

包含了

看代码逻辑检测登录就是

res=1就可以返回值

但是变量res是由checkuser创建的,跟踪checkuser

这里就是接受密码,然后去数据库对比查询,密码错误就返回-1,密码没有函数就返回-2

正常逻辑就返回1。

如果已经登录在访问后台就不需要在登录,这是怎么判断,再去看login文件

keepuser,

s形id里面有对应的三个值就返回1,没有就返回-1

变量覆盖就把当前这三个值强制写到当前浏览器里面去

现在就通过动态调试获取登录的session值

如何就通过变量覆盖技术,让为空session有管理员的值

下个断点

这里老师环境出问题段不下来,直接看数据库userid是什么值

1,1,admin

对应的上

这里要覆盖s形数据必须文件开启了session_start才行

构造poc

为什么是exchang.php文件,因为他包含了文件并且开启session

直接访问

session已经强制存储

在访问后台界面admin

直接进入

就相当于这样

案例二-phpmyadmin-原生反序列化

这就直接搜关键字,就两个函数unserialize

那就这两个地方

对于反序列化漏洞的挖掘,要看触发了那些魔术方法,魔术方法里面有什么东西,

而这里就去看调用的wakeup方法,找出来看看

这个方法也要先看看这个代码准备,里面有没有对象

这里就调用了一个对象,在这个对象里面找有没有wakeup方法,

全局搜索一下wakeup方法

有,但是不能乱找,比如第一个wakeup在这个类里面

而触发反序列化的地方并不能触发这个类,第二个在看wakeup有没有能触发影响安全的问题

再看看第二个wakeup

慢慢看都是干嘛的,转到load的声明看看

eval,危险函数,要注意了,file-get-contents可以读取任意文件

这就看看getsuorre这个比哪里怎么来的,跟踪看看

返回个source的变量值

看到这里利用链就出来了,怎么构造接受的值

这个危险函数在这个类里面,刚好我们反序列化文件调用了这个类

显示找到了接受反序列化值的地方,然后load里面有触发的魔术方法,在任何发现了危险函数,接受的getsource的值,跟踪发现是就是返回变量source的值,那就可以构造序列化值了

现在就去找文件触发点,然后传入序列化值

然后就根据代码要求传递值就可以了

最终poc

成功读取到1.txt的文件内容

案例三演示案例-PHP审计-动态调试-框架反序列化-KiteCMS

版本问题搭建不起来

看主页有tp框架开发的提示

但是不知道具体tp版本号怎么在代码搜索,直接veision关键字,搜

5.1.37

反序列化值生成工具

自动生成

上一个案例是借助一个反序列化操作函数的,而这个是用到了phar的反序列化

这个又是什么

参考链接phar反序列化 - My_Dreams - 博客园

phar将类似java文件的jar文件

上半部分是链,下半部分是生成phar

这个是案例里面生成的文件,上面class调用的链来攻击的,而我们的靶场是tp搭建就要用到tp的链是由两个模板生成的,我们就要把上面调用的链改成tp生成的模板

就要第二个文件的内容复制到生成phar的链里面去

复制好好之后第一个文件要复制这两个内容

在生成phar的文件内构造一下

这里还修改了一些删除了案例调用的链,因为我们是用到tp框架的链,上面已经生成了,在把变量object改成变量a,上面第二条数据也要改成$a等于那个值

这里命令就执行个计算器calc,然后把变量system为空全部为空,就不执行命令

这里要生产phar文件要打开一个开关才行,php5.6之后默认是开启的

访问报错了

这里有参数值,去掉,不应该有。

案例里面的利用方式是有一个文件上传点,只允许上传图片也没啥,把生成的phar后缀改成gif上传上去就行了,,然后用到确定文件的函数,去访问这个上传的文件然后就可以利用phar执行命令

这里文件还是gif

这就要全局搜索is_dir  

 file_exists

这种类似的函数

搜索到这个看看

变量dir从参数来,get和post提交得到,现在就需要找一个文件上传的地方

ok开干poc

后面路径是上传完之后phar包的路径

弹计算机了,命令执行成功

扩展知识,php反序列化链

如果要用到刚刚phpmyadmin利用phar的方式去利用,就要把上半部分的链换成phpmyamdin的利用链

jian

kang

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值