OWASP A8 Software and Data Integrity Failures(软件和数据完整性故障)
Software and Data Integrity Failures(软件和数据完整性故障)
这是在 2021 年中,增加的新的类别.
在之前 2017 年版本中,是不安全的反序列化,但在 2021 年版本中包含在其中了.
本文来讲讲序列化吧
就以 PHP 为例吧,实际上大部分面向对象语言的序列化思路也是如此
序列化,说简单点就是把对象变成可以传输的字符串
下面是一段 PHP 代码.可以达到简单的序列化
class Demo{public $test="Hello,World!"
}$s=new Demo();
$se=serialize($s);print_r($se)
这时候就会有这种结果
O:4:“Demo”:1:{s:4:“test”;s:12:“Hello,World!”;
从左到右依次分析
/*
O:代表object
4:是对象名称长度
Demo:对象名称
1:代表对象里面有一个变量
s:数据类型
4:变量名称长度
test:变量名称
s:数据类型
12:变量长度
Hello,World!:变量值
*/
反序列化也是很好理解的
class Demo{public $test="Hello,World!"
}$classtest = 'O:4:"Demo":1:{s:4:"test";s:12:"Hello,World!";'$unclasstest = unserialize($classtest);//当使用 __wakeup() 成员函数
当然还有很多魔法函数
__wakeup() //使用unserialize时触发
__sleep() //使用serialize时触发
__destruct() //对象被销毁时触发
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__construct() //当对象创建(new)时会自动调用。但在unserialize()时是不会自动调用的。
__get() //用于从不可访问的属性读取数据
__set() //用于将数据写入不可访问的属性
__isset() //在不可访问的属性上调用isset()或empty()触发
__unset() //在不可访问的属性上使用unset()时触发
__toString() //把类当作字符串使用时触发
__invoke() //当脚本尝试将对象调用为函数时触发
如果想要实现反序列化漏洞,那么应该有这么几个条件
- 后台存在不正当使用魔术方法的行为
- 后台存在命令执行漏洞
- 后台存在反序列化函数
- 用户对反序列化的内容可控
来个简单的样例
远程代码执行
<?php
class person{var $name;function __construct($name){$this->name = $name;}function __destruct(){echo eval($this->name);}
}
$str = $_GET["obj"];
$p1 = unserialize($str);
?>
我向网站后面只需要加入这么几句
?obj=O:6:“person”:1:{s:4:“name”;s:10:“phpinfo();”;}
正常情况应该会显示这么界面
远程文件删除
<?phpclass person{var $name;function __construct($name){$this->name = $name;}function __destruct(){unlink(dirname(__FILE__)."/".$this->name);}}$str = $_GET["obj"];$p1 = unserialize($str);
?>
这是目前文件结构
我向网站输入这么一句话
?obj=O:6:“person”:1:{s:4:“name”;s:5:“1.txt”;}
会报错没有此文件夹
在删之前看一下文件夹有哪些
?obj=O:6:“person”:1:{s:4:“name”;s:8:“test.txt”;}
返回空白界面
再看眼文件夹,确实被删除
这就是序列化的基本思路
距离过年还差5天
OWASP TOP10 也快要迎来完结了
但是学习之路是不会停止的
让我们一起加油吧
OWASP A8 Software and Data Integrity Failures(软件和数据完整性故障)相关推荐
- Automatic Software Repair: a Bibliography 自动软件修复概览(三)
原论文标题<Automatic Software Repair: a Bibliography> 原作者 Martin Monperrus,主页:https://www.monperrus ...
- Room cannot verify the data integrity. Looks like you‘ve changed schema but forgot to update the ve
背景: 在使用Room 数据库时,出现了该错误信息 Room cannot verify the data integrity. Looks like you've changed schema bu ...
- SBOM(Software Bill of Materials,软件物料清单)
微软近日将其用于公司内部的 SBOM(Software Bill of Materials,软件物料清单)生成工具开源 微软开发的这个工具名为Salus,可在 Windows.Linux 和 Mac ...
- 解决:room无论如何怎么修改数据库版本都报错java.lang.IllegalStateException: Room cannot verify the data integrity
问题描述 这已经是第二次遇到这个bug了,第一次卡了一两天,这次卡了半天. bug: java.lang.IllegalStateException: Room cannot verify the d ...
- Android Studio报错 “java.lang.IllegalStateException: Room cannot verify the data integrity” 解决方法
最近在Android Studio遇到以下报错: Caused by: java.lang.IllegalStateException: Room cannot verify the data int ...
- photoworks 9 |ams software photoworks 9(图像编辑软件)
photoworks 9是一款功能强大的智能图像编辑软件,用户可以通过该应用中的各种效果和改善来整体图像中的人物面貌,这样也就可以轻松把你的照片变成一张专业级图片,同时软件内置的智能修饰工具可轻松进行 ...
- RemObjects Data Abstract数据库软件的最佳框架
RemObjects Data Abstract数据库软件的最佳框架 数据摘要是构建快速.受保护和可靠的数据库软件的最佳框架. 采用多层策略,Data Abstract使我们能够从您的机器中应用业务逻 ...
- OWASP A9 Security Logging and Monitoring Failures(安全日志和监控故障)
Security Logging and Monitoring Failures(安全日志和监控故障) 在2017中为 Insufficient Logging & Monitoring 不足 ...
- Automatic Software Repair: a Bibliography 自动软件修复概览(一)
原论文标题<Automatic Software Repair: a Bibliography> 原作者 Martin Monperrus,主页:https://www.monperrus ...
最新文章
- 依赖倒转原则(Dependency Inversion Principle,DIP)
- 【Joomla】本地化汇总
- php实现 明明的随机数
- Android4: HDMI system in ICS
- 将query存进数组 php,thinkphp下通过QueryList获取网站指定数据并封装成数组,存入数据库...
- python的learn_python_learn1
- 通过php extension使disable_function支持通配符
- BZOJ2038: [2009国家集训队]小Z的袜子(hose)
- mysql :The user specified ... does not exist 报错
- 随着互联网的深化,世间万物都将如何学会思考?
- vue-cli3.0使用及配置(部分)
- [翻译] AFDropdownNotification
- Java跟踪对象,使用OpenCV实时隔离和跟踪多个对象?
- JavaScript权威指南笔记
- 农业大数据上线 农民耕田种地施肥都用“高科技”
- 如何彻底干净地卸载McAfee Agent
- 2022年了,Windows Vista还能用吗?
- C#用NPOI控件把MySQL数据库中查询符合条件的数据导出到EXCEL
- 温度传感器—LM75
- python列表姓氏_Python 批量生成中文姓名(百家姓)
热门文章
- 四月三十号OCP考试失败了- -!
- 计算机毕业设计Java银杏湖景区旅游管理信息平台(源码+系统+mysql数据库+Lw文档)
- 玄武短信接口和移动MAS短信接口的API封装
- OpenSSL心脏滴血检测
- 用 js判断 一个数是否是素数(质数)_小学五年级下册数学公式打印版,孩子考试用的上!...
- JAV学习笔记基础运算符
- 在设置背景图片全屏时background-size: 100% 100%;和background-size: 100%;的区别,一个100%和两个100%的区别
- (转)我与我周旋久,宁做我!
- win7旗舰版下使用EasyBCD安装Ubuntu
- mysql索引原理及查询优化