当前位置: 首页 > ops >正文

反序列化漏洞3-反序列化漏洞讲解演示

一.反序列化漏洞的介绍       

        当用户的请求在传给反序列化函数 unserialize()之前没有被正确的过滤时就会产生漏洞。因为
PHP 允许对象序列化,攻击者就可以提交特定的序列化的字符串给一个具有该漏洞的 unserialize
函数,最终 导致一个在该应用范围内的任意 PHP 对象注入。
反序列化漏洞出现需要满足两个条件:
1. unserialize 时参数用户可控
2. 参数被传递到方法中被执行,并且方法中使用了危险函数。
什么是危险函数?比如 php 代码执行函数、文件读取函数、文件写入函数等等。
代码演示:
<?php
class Test{
var $free = "demo";
function __destruct(){
//_destruct()函数中调用 eval 执行序列化对象中的语句
@eval($this->free);
}
}
$free = $_GET['free'];
$len = strlen($free)+1;
//构造序列化对象
$ser = "O:4:\"Test\":1:{s:4:\"free\";s:".$len.":\"".$free.";\";}";
// 反序列化同时触发_destruct 函数
$xuegod = unserialize($ser);
?>
       用户提交的参数作为序列化后的字符串参数,进行反序列化时触发__destruct()魔术方法,而
魔术方法中使用危险函数 eval(),$this->free 可以调用对象中的 free 属性,所以使 $free =
"phpinfo();"; 而 @eval($this->free); 则执行 free 属性中的 php 代码
浏览器访问URL:http://192.168.112.12/free.php
这里不用加分号因为代码里面自带了。
这就导致敏感信息泄露:

PHP Version 5.4.16

SystemLinux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64
Build DateApr 1 2020 04:08:16
Server APIApache 2.0 Handler
Virtual Directory Supportdisabled
Configuration File (php.ini) Path/etc
Loaded Configuration File/etc/php.ini
Scan this dir for additional .ini files/etc/php.d
Additional .ini files parsed/etc/php.d/curl.ini, /etc/php.d/fileinfo.ini, /etc/php.d/gd.ini, /etc/php.d/json.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_sqlite.ini, /etc/php.d/phar.ini, /etc/php.d/sqlite3.ini, /etc/php.d/zip.ini
PHP API20100412
PHP Extension20100525
Zend Extension220100525
Zend Extension BuildAPI220100525,NTS
PHP Extension BuildAPI20100525,NTS
Debug Buildno
Thread Safetydisabled
Zend Signal Handlingdisabled
Zend Memory Managerenabled
Zend Multibyte Supportdisabled
IPv6 Supportenabled
DTrace Supportdisabled
Registered PHP Streamshttps, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip
Registered Stream Socket Transportstcp, udp, unix, udg, ssl, sslv3, tls
Registered Stream Filterszlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
这就是简单的反序列化漏洞演示。
注意:在URL中:空白字符1可以用%00和/00来表示。
http://www.xdnf.cn/news/15651.html

相关文章:

  • 5W8-3D牢游戏超级大集合[2012年6月] 地址 + 解压密码
  • 智慧后厨检测算法构建智能厨房防护网
  • 瀚高数据库开启Oracle兼容模块
  • 私有服务器AI智能体搭建配置选择记录
  • 如何更改 SQLserver 数据库存储的位置 想从C盘换到D盘
  • ​​Docker 速通教程
  • 机器人行业10年巨变从协作机器人到具身智能的萌芽、突破和成长——从 Automatic慕尼黑10 年看协作机器人到具身智能的发展
  • 加了pm2
  • (数据结构)线性表(上):SeqList 顺序表
  • vue自定义指令bug
  • Skia 的核心类---深入画布SkCanvas
  • Jfinal+SQLite处理 sqlite数据库执行FIND_IN_SET报错
  • Spring AI:程序调用 AI 大模型
  • Python编程进阶知识之第二课学习网络爬虫(selenium)
  • Java HashMap key为Integer时,遍历是有序还是无序?
  • 信息学奥赛一本通 1575:【例 1】二叉苹果树 | 洛谷 P2015 二叉苹果树
  • 基于LiteNetLib的Server/Client Demo
  • 深入理解 Redis 集群化看门狗机制:原理、实践与风险
  • 当OT遇见IT:Apache IoTDB如何用“时序空间一体化“技术破解工业物联网数据孤岛困局?
  • iOS 文件深度调试实战 查看用户文件 App 沙盒 系统文件与日志全指南
  • iOS WebView 调试实战 全流程排查接口异常 请求丢失与跨域问题
  • 深入理解进程地址空间:虚拟内存与进程独立性
  • 首个直播流扩散(LSD)AI模型:MirageLSD,它可以实时把任意视频流转换成你的自定义服装风格——虚拟换装新体验
  • LVS(Linux Virtual Server)详细笔记(实战篇)
  • 基于ROS2进行相机标定,并通过测试相机到棋盘格之间的距离进行验证
  • SpringSecurity-spring security单点登录
  • 【数据结构初阶】--双向链表(一)
  • VUE目录结构详解
  • 1 初识C++
  • ElasticSearch Doc Values和Fielddata详解