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() //当脚本尝试将对象调用为函数时触发

如果想要实现反序列化漏洞,那么应该有这么几个条件

  1. 后台存在不正当使用魔术方法的行为
  2. 后台存在命令执行漏洞
  3. 后台存在反序列化函数
  4. 用户对反序列化的内容可控

来个简单的样例

远程代码执行

<?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(软件和数据完整性故障)相关推荐

  1. Automatic Software Repair: a Bibliography 自动软件修复概览(三)

    原论文标题<Automatic Software Repair: a Bibliography> 原作者 Martin Monperrus,主页:https://www.monperrus ...

  2. 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 ...

  3. SBOM(Software Bill of Materials,软件物料清单)

    微软近日将其用于公司内部的 SBOM(Software Bill of Materials,软件物料清单)生成工具开源 微软开发的这个工具名为Salus,可在 Windows.Linux 和 Mac ...

  4. 解决:room无论如何怎么修改数据库版本都报错java.lang.IllegalStateException: Room cannot verify the data integrity

    问题描述 这已经是第二次遇到这个bug了,第一次卡了一两天,这次卡了半天. bug: java.lang.IllegalStateException: Room cannot verify the d ...

  5. Android Studio报错 “java.lang.IllegalStateException: Room cannot verify the data integrity” 解决方法

    最近在Android Studio遇到以下报错: Caused by: java.lang.IllegalStateException: Room cannot verify the data int ...

  6. photoworks 9 |ams software photoworks 9(图像编辑软件)

    photoworks 9是一款功能强大的智能图像编辑软件,用户可以通过该应用中的各种效果和改善来整体图像中的人物面貌,这样也就可以轻松把你的照片变成一张专业级图片,同时软件内置的智能修饰工具可轻松进行 ...

  7. RemObjects Data Abstract数据库软件的最佳框架

    RemObjects Data Abstract数据库软件的最佳框架 数据摘要是构建快速.受保护和可靠的数据库软件的最佳框架. 采用多层策略,Data Abstract使我们能够从您的机器中应用业务逻 ...

  8. OWASP A9 Security Logging and Monitoring Failures(安全日志和监控故障)

    Security Logging and Monitoring Failures(安全日志和监控故障) 在2017中为 Insufficient Logging & Monitoring 不足 ...

  9. Automatic Software Repair: a Bibliography 自动软件修复概览(一)

    原论文标题<Automatic Software Repair: a Bibliography> 原作者 Martin Monperrus,主页:https://www.monperrus ...

最新文章

  1. 依赖倒转原则(Dependency Inversion Principle,DIP)
  2. 【Joomla】本地化汇总
  3. php实现 明明的随机数
  4. Android4: HDMI system in ICS
  5. 将query存进数组 php,thinkphp下通过QueryList获取网站指定数据并封装成数组,存入数据库...
  6. python的learn_python_learn1
  7. 通过php extension使disable_function支持通配符
  8. BZOJ2038: [2009国家集训队]小Z的袜子(hose)
  9. mysql :The user specified ... does not exist 报错
  10. 随着互联网的深化,世间万物都将如何学会思考?
  11. vue-cli3.0使用及配置(部分)
  12. [翻译] AFDropdownNotification
  13. Java跟踪对象,使用OpenCV实时隔离和跟踪多个对象?
  14. JavaScript权威指南笔记
  15. 农业大数据上线 农民耕田种地施肥都用“高科技”
  16. 如何彻底干净地卸载McAfee Agent
  17. 2022年了,Windows Vista还能用吗?
  18. C#用NPOI控件把MySQL数据库中查询符合条件的数据导出到EXCEL
  19. 温度传感器—LM75
  20. python列表姓氏_Python 批量生成中文姓名(百家姓)

热门文章

  1. 四月三十号OCP考试失败了- -!
  2. 计算机毕业设计Java银杏湖景区旅游管理信息平台(源码+系统+mysql数据库+Lw文档)
  3. 玄武短信接口和移动MAS短信接口的API封装
  4. OpenSSL心脏滴血检测
  5. 用 js判断 一个数是否是素数(质数)_小学五年级下册数学公式打印版,孩子考试用的上!...
  6. JAV学习笔记基础运算符
  7. 在设置背景图片全屏时background-size: 100% 100%;和background-size: 100%;的区别,一个100%和两个100%的区别
  8. (转)我与我周旋久,宁做我!
  9. win7旗舰版下使用EasyBCD安装Ubuntu
  10. mysql索引原理及查询优化