OWASP A8 Software and Data Integrity Failures(软件和数据完整性故障)
Software and Data Integrity Failures(軟件和數(shù)據(jù)完整性故障)
這是在 2021 年中,增加的新的類別.
在之前 2017 年版本中,是不安全的反序列化,但在 2021 年版本中包含在其中了.
本文來講講序列化吧
就以 PHP 為例吧,實(shí)際上大部分面向?qū)ο笳Z言的序列化思路也是如此
序列化,說簡單點(diǎn)就是把對象變成可以傳輸?shù)淖址?/p>
下面是一段 PHP 代碼.可以達(dá)到簡單的序列化
class Demo{public $test="Hello,World!" }$s=new Demo(); $se=serialize($s);print_r($se)這時候就會有這種結(jié)果
O:4:“Demo”:1:{s:4:“test”;s:12:“Hello,World!”;
從左到右依次分析
/* O:代表object 4:是對象名稱長度 Demo:對象名稱 1:代表對象里面有一個變量 s:數(shù)據(jù)類型 4:變量名稱長度 test:變量名稱 s:數(shù)據(jù)類型 12:變量長度 Hello,World!:變量值 */反序列化也是很好理解的
class Demo{public $test="Hello,World!" }$classtest = 'O:4:"Demo":1:{s:4:"test";s:12:"Hello,World!";'$unclasstest = unserialize($classtest);//當(dāng)使用 __wakeup() 成員函數(shù)當(dāng)然還有很多魔法函數(shù)
__wakeup() //使用unserialize時觸發(fā) __sleep() //使用serialize時觸發(fā) __destruct() //對象被銷毀時觸發(fā) __call() //在對象上下文中調(diào)用不可訪問的方法時觸發(fā) __callStatic() //在靜態(tài)上下文中調(diào)用不可訪問的方法時觸發(fā) __construct() //當(dāng)對象創(chuàng)建(new)時會自動調(diào)用。但在unserialize()時是不會自動調(diào)用的。 __get() //用于從不可訪問的屬性讀取數(shù)據(jù) __set() //用于將數(shù)據(jù)寫入不可訪問的屬性 __isset() //在不可訪問的屬性上調(diào)用isset()或empty()觸發(fā) __unset() //在不可訪問的屬性上使用unset()時觸發(fā) __toString() //把類當(dāng)作字符串使用時觸發(fā) __invoke() //當(dāng)腳本嘗試將對象調(diào)用為函數(shù)時觸發(fā)如果想要實(shí)現(xiàn)反序列化漏洞,那么應(yīng)該有這么幾個條件
來個簡單的樣例
遠(yuǎn)程代碼執(zhí)行
<?php class person{var $name;function __construct($name){$this->name = $name;}function __destruct(){echo eval($this->name);} } $str = $_GET["obj"]; $p1 = unserialize($str); ?>我向網(wǎng)站后面只需要加入這么幾句
?obj=O:6:“person”:1:{s:4:“name”;s:10:“phpinfo();”;}
正常情況應(yīng)該會顯示這么界面
遠(yuǎn)程文件刪除
<?phpclass person{var $name;function __construct($name){$this->name = $name;}function __destruct(){unlink(dirname(__FILE__)."/".$this->name);}}$str = $_GET["obj"];$p1 = unserialize($str); ?>這是目前文件結(jié)構(gòu)
我向網(wǎng)站輸入這么一句話
?obj=O:6:“person”:1:{s:4:“name”;s:5:“1.txt”;}
會報(bào)錯沒有此文件夾
在刪之前看一下文件夾有哪些
?obj=O:6:“person”:1:{s:4:“name”;s:8:“test.txt”;}
返回空白界面
再看眼文件夾,確實(shí)被刪除
這就是序列化的基本思路
距離過年還差5天
OWASP TOP10 也快要迎來完結(jié)了
但是學(xué)習(xí)之路是不會停止的
讓我們一起加油吧
總結(jié)
以上是生活随笔為你收集整理的OWASP A8 Software and Data Integrity Failures(软件和数据完整性故障)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决QTCF.Dll丢失问题
- 下一篇: 商务风个人职业生涯规划管理PPT模板