<dl id="wqg5j"></dl>

    1. <menuitem id="wqg5j"></menuitem>

      <dl id="wqg5j"><font id="wqg5j"></font></dl>
    2. <dl id="wqg5j"><ins id="wqg5j"></ins></dl>
    3. <dl id="wqg5j"><ins id="wqg5j"><thead id="wqg5j"></thead></ins></dl>
      <li id="wqg5j"><ins id="wqg5j"></ins></li>
      安基網 首頁 安全 安全學院 查看內容

      滲透測試入門——命令執行漏洞詳解

      2018-10-8 00:10| 投稿: xiaotiger |來自: 互聯網


      免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

      摘要: 當應用需要調用一些外部程序去處理內容的情況下,就會用到一些執行系統命令的函數。如PHP中的system,exec,shell_exec等,當用戶可以控制命令執行函數中的參數時,將可注入惡意系統命令到正常命令中,造成命令執行 ...

      大家好我是襯衫(投稿),因為文筆比較水,所以請各位見諒(本文只針對命令執行,與代碼執行不相同)

      1. 命令執行漏洞介紹

      當應用需要調用一些外部程序去處理內容的情況下,就會用到一些執行系統命令的函數。如PHP中的system,exec,shell_exec等,當用戶可以控制命令執行函數中的參數時,將可注入惡意系統命令到正常命令中,造成命令執行攻擊。

      2. 命令執行漏洞:直接調用操作系統命令

      舉個例子貼出代碼

      這里發現con_fuction里面有exec,那么exec()這個函數是干嘛的呢?

      下面我給大家簡單介紹一下php中的可以導致命令執行的函數

      system函數----string system(string command, int [return_var]);

      實例代碼: $last_line = system(ls, $retval);

      exec函數----string exec(string command, string [array], int [return_var]);

      實例代碼 :echo exec("whoami");

      popen函數----int popen(string command, string mode);

      實例代碼

      $fp = popen( "/bin/ls", "r" );

      這里的函數還有很多因為我不寫php,所以上面的可能不太專業

      下面就是由于這個exec導致的問題了

      他用了exec也就說明他能執行系統命令,那么我們嘗試進行一次執行

      一般我們的poc都是calc,那么這就是最簡單的一個命令執行漏洞了

      那么我們下面為大家演示命令注入

      首先在學習命令注入前我們要理解的是

      1. linux管道符

      2. 簡單的幾個linux命令

      3. 繞過本地驗證

      那么下面我給大家介紹一下linux管道符號

      網上的內容五花八門

      個人覺得用處比較大的就是"&" "|"

      用法大家看一下

      如下時在windows執行

      命令為whoami&ipconfig如果我們換一個命令呢

      換成whoami|ipconfig

      這時候我們發現用"&"作為管道符的命令成功的執行了前后兩個然而"|"此命令只執行了后面的ipconfig所以管道符的使用也就浮出水面

      下面我們同樣在linux下執行一下

      我們的"&"符號是前后兩個命令依次執行

      而"|"符號是命令1 的正確輸出作為命令2的輸出對象.。

      我們開始命令注入的講解

      這里是一個靶場,介紹說的是"內部人員方便運維工作留下的ping命令的頁面"那么他是執行ping命令,我們就可以嘗試讓目標去通過管道符號去執行系統命令。

      如果他的命令式ping ip 那么我可以帶ping ip|任意命令,這樣就可以執行系統命令

      我們來嘗試一下

      這里js彈窗說ip格式不正確他有本地的js校驗

      我們看一下源代碼

      其中

      function f_check_IP()

      { var ip = document.getElementById(reg_ip).value;

      var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;

      if(re.test(ip))

      {

      if( RegExp.$1<256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256)

      return true;

      }

      alert("IP\\u683C\\u5F0F\\u4E0D\\u6B63\\u786E");

      return false;

      }

      這一段js代碼是為了檢查怎么的ip

      那么如何繞過js驗證

      我們可以用firefox一個插件noscript我這里不是用的noscript用的是js swith

      裝好插件之后我們直接點擊紅色js

      然后刷新頁面

      輸入127.0.0.1|whoami

      成功執行了系統命令

      我們獲取flag的方式無非是那幾樣我們先"ls"一下

      成功回顯了目標的目錄內文件

      我們正常的讀取文件都是cat xxxx

      那么我們現在嘗試cat key_22112201407597.php

      但是這里無回顯

      我們發現cat key_22112201407597.php

      中間存在空格,所以我斷定是空格導致的問題

      這里就要介紹一個Linux、里面 的空格{IFS}

      bashIFS是內部的域分隔符

      也就是空格的意思我們可以修改命令為cat{IFS}key_22112201407597.php

      但是沒有成功回顯,一開始這個靶機執行cat{IFS}key_22112201407597.php是正常回顯但是可能出了些問題,所以我們再來想辦法

      這里還有一個小技巧在Linux里我們執行cat

      和cat xxx是一樣的

      舉個例子

      這樣也是可以的

      那么我們嘗試

      cat

      成功返回了flag

      這就是一個命令注入的姿勢。

      3. 總結:我們在漏洞挖掘的實戰過程中啊,很少會碰見這樣額接口,相對于多的是某個框架和中間件的漏洞

      比如strust2 weblogic jboss 我們需要在github或者exploit-db尋找exp去進行測試

      最后感謝大家的閱讀,謝謝!!


      Tag標簽:

      小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

      本文出自:https://www.toutiao.com/a6584957712080044557/

      免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


      鮮花

      握手

      雷人

      路過

      雞蛋

      相關閱讀

      最新評論

       最新
      返回頂部
      玄机图
      <dl id="wqg5j"></dl>

        1. <menuitem id="wqg5j"></menuitem>

          <dl id="wqg5j"><font id="wqg5j"></font></dl>
        2. <dl id="wqg5j"><ins id="wqg5j"></ins></dl>
        3. <dl id="wqg5j"><ins id="wqg5j"><thead id="wqg5j"></thead></ins></dl>
          <li id="wqg5j"><ins id="wqg5j"></ins></li>
          <dl id="wqg5j"></dl>

            1. <menuitem id="wqg5j"></menuitem>

              <dl id="wqg5j"><font id="wqg5j"></font></dl>
            2. <dl id="wqg5j"><ins id="wqg5j"></ins></dl>
            3. <dl id="wqg5j"><ins id="wqg5j"><thead id="wqg5j"></thead></ins></dl>
              <li id="wqg5j"><ins id="wqg5j"></ins></li>