linux反弹shell原理

一直知道Linux反弹shell。但是不知道其原理所以今天学习了一波。

什么是反弹shell?

假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,ssh,telnet等等,都是正向连接。
那么什么情况下正向连接不太好用了呢?
1.某客户机中了你的网马,但是它在局域网内,你直接连接不了。它的ip会动态改变,你不能持续控制。
2.由于防火墙等限制,对方机器只能发送请求,不能接收请求。
3.对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。那么反弹就很好理解了, 攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。

文件描述符

首先我们要明白文件描述符是什么?

文件描述符定义:文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。
linux默认启动时,会启用三个文件描述符。

0标准输入(standard input)--------->默认设备键盘
1标准输出(standard output-------->默认设备显示器
2标准错误(standard error-------->默认设备显示器

在linux系统中打开文件就会获得文件描述符,它是个很小的非负整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。

注意:

  • 以后再打开文件,文件描述符将会增加
  • 一条shell命令,都会继承其父进程的文件描述符,因此所有的shell命令,都会默认有三个文件描述符
  • 所有linux下打开的文件都是由文件描述符控制的(Linux一切皆文件,就连键盘显示器设备都是文件,因此他们的输入输出也是由文件描述符控制)

对于任何一条linux 命令执行,它会是这样一个过程:
在这里插入图片描述
一个命令执行了:

先有一个输入:输入可以从键盘,也可以从文件得到

命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕

命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕

重定向

重定向字面意思是:数据本该定向到A的,结果中途将其转定向为B.
重定向主要分为两种:
输入重定向 用 <<<
输出重定向 用 >>>

注意:
< 是对标准输入 0 重定向 ,> 是对标准输出 1 重定向

当使用一个>是将文件内容覆盖
当使用两个>>是在原文件末尾补充

  • 输入重定向

说明:这里是将文件描述符0以只读的形式打开

cat < file
hacker
cat 0< file
hacker

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

说明:当linux解析到重定向符号时就会解析重定向,将标准输入重定向到file,之后cat再从标准输入读取指令。

  • 输出重定向

echo hello 1> file
cat file
hello
在这里插入图片描述
说明:这里的意思是输出hello并将其重新定向到 file文件中

文件描述符的复制
说明:文件描述符可以
n <& m n >& m
将文件描述符 n 复制到 m ,两者的区别是,前者是以只读的形式打开,后者是以写的形式打开
因此 0<&1 和 0>&1 是完全等价的(读/写方式打开对其没有任何影响)

exec 绑定重定向
在这里插入图片描述
说明:将file读入到fd3中,将file中的内容作为标准写出,Ls将不会有显示,直接写入fd3中了,就上面的file中。

总结:反弹shell中最核心的部分就是重定向

参考链接:
https://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html
https://xz.aliyun.com/t/2548#toc-10
https://www.zhihu.com/question/24503813/answer/102253018

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值