日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

ssrf漏洞 php,DokuWiki fetch.php SSRF漏洞与tok安全验证绕过分析

發布時間:2024/7/19 php 165 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ssrf漏洞 php,DokuWiki fetch.php SSRF漏洞与tok安全验证绕过分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:baolongniu of Tencent Security Platform Department

關于DokuWiki

DokuWiki是一個開源wiki引擎程序,運行于PHP環境下。DokuWiki程序小巧而功能強大、靈活,適合中小團隊和個人網站知識庫的管理。

漏洞簡介

DokuWiki最新 2016-06-26a版本存在一個SSRF漏洞,當DokuWiki fetch.php允許下載外部資源時(fetchsize不為零),外部攻擊者可以通過猜解tok繞過安全驗證,請求服務器內網資源。

漏洞分析

DokuWiki fetch.php文件允許下載外部文件,外部文件地址傳遞給參數media,但是在請求時候有tok安全校驗,請求如下:

/dokuwiki/lib/exe/fetch.php?media=http://192.168.141.128:80/test.php?test.jpg&tok=0f35df

安全校驗在checkFileStatus()函數中,如圖:

由上圖中可見,tok安全校驗就是把$media、$width(不傳遞值為空)和$height(不傳遞值為空)三個變量在media_get_token()函數中計算一下,然后把結算結果和tok參數比對,只有比對一致才能通過校驗,繼續看media_get_token()函數,如圖:

由上圖中可見,media_get_token()函數把width和token變量)返回。繼續看auth_cookiesalt()函數,如圖:

由上圖中可見,auth_cookiesalt()的函數值是由DokuWiki _htcookiesalt2文件存儲的鹽值,再拼接session_id()函數構成的。

auth_cookiesalt()函數使用session_id()函數生成salt是不安全的,在最新php版本中session_id()函數存在一個bug(低版本php不存在),構造如下代碼:

session_name("niubl");

session_start();

var_dump(session_id());

直接請求test.php文件返回:

設置Cookie參數niubl值為http://192.168.141.128:80/test.php?test.jpg ,再次請求:

由上圖中可見,php發現Cookie參數niubl值中含有非法字符,但是php并沒有重新生成session_id,導致傳入的非法字符仍然可用,被var_dump()函數打印了出來。

auth_cookiesalt()函數使用session_id()函數生成salt,現在session_id()函數外部可控,且可以接收非法字符串,那么我們找一出使用依賴auth_cookiesalt()函數生成數值的代碼,就可以推測_htcookiesalt2了。

上圖中getSecurityToken()是用來產生CSRF token的函數,CSRF token廣泛出現在表單中,他的實現和media_get_token()函數類似,只是PassHash::hmac()函數第二個參數換成了session_id()加$INPUT->server->str('REMOTE_USER'),$INPUT->server->str('REMOTE_USER')變量在不傳遞參數的時候值為空,那么我們可以通過傳遞session_id()為fetch.php的media參數,這時getSecurityToken()函數就生成了我們進行SSRF攻擊時需要校驗的tok。getSecurityToken()函數廣泛用表單token中,測試:

上圖中,傳遞Cookie參數DokuWiki值http://192.168.141.128:80/test.php?test.jpg ,生成sectok值0f35dfabdb3fb00c4de06facec6c2d43 ,他的前6位0f35df就是我們進行SSRF攻擊時需要校驗的tok值,驗證:

漏洞修復

php的bug( https://bugs.php.net/bug.php?id=73860 )已經反饋給php官方開發團隊,開發人員認為這個bug導致的漏洞是因為webapp使用了sessiond_id 生成salt,依賴session_id生成salt是不合理的,目前該bug仍未被確認。

本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:https://paper.seebug.org/230/

總結

以上是生活随笔為你收集整理的ssrf漏洞 php,DokuWiki fetch.php SSRF漏洞与tok安全验证绕过分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。