[投稿]Web渗透中的反弹Shell与端口转发的奇淫技巧

0x00 前言

在做渗透测试时,遇到linux服务器,直观想到反弹shell到本地进行溢出等提权尝试,⽽而其中涉及到的反弹/转发/代理的种种方式,就在此文做一简单小结.

0x01 反弹shell

1) Bash
部分linux发行版中的Bash可以直接反弹一个shell到指定ip端口

1

2) NetCat
Netcat反弹shell也是常用兵器,经典命令参数-e

2

但某些版本的nc没有-e参数(非传统版),则可使用以下方式解决

3

或者本地监听两个端口,通过管道,一处输入,一处输出

4

其他方式基本沿用以上思路,如将nc更换为telnet等

3) PHP
PHP环境下反弹shell,过去我们通常用phpspy等shell自带反弹即可,这里将其反弹部分代码提取出来,访问即可反弹到指定IP端口一个普通交互shell

访问,成功返回

5

但需要注意php需未禁用exec函数.另外,Metasploit的payload也提供各种反弹脚本,如

生成文件内容像这样

6

将文件传入shell中,在msf中开一个handler

此时访问re.php,即可反弹到本地一个shell

7

当然,用nc直接监听端口也是可以的
其他可以考虑使用msf编码变形等,github也有这样一个脚本 https://github.com/keshy/cwg_tools/blob/master/php-reverse-shell.php 可供参考

4) JSP
JSP类似,使用msf生成一个反弹shell

然后在msf中开一个handler

类似方法即可反弹回shell

5) Python
一个Python反弹shell的代码demo

8

整洁规范的Python写法应该像是这样,更易懂些:

其他脚本像这样子

msf的payload给出这样的解法

生成编码后文件:

Base64解码后:

此处补充上phith0n同学的正向连接bind_shell

关于交互式正向连接shell,⼏几点需要注意的地⽅方
1.不管在linux还是windows下,想要做到交互式,只能开启⼀一个shell.不能够每次接收到命令就再开启⼀一个shell进程,然后执⾏行.
2.windows下cmd.exe /K参数是保持cmd不结束,/c参数是执⾏行完后就结束,注意区别.
最终Win版本:

Linux版本:

执行后主动连接即可

9
6) Perl

首先给一个原理类似的脚本

然后是一个不依赖调用/bin/bash的方法

一个完整的反弹pl脚本

ASP环境下调用perlscript执行方式

#表明ASP脚本使⽤用语⾔言为Perlscript

7) Ruby
惯例,首先一个调用/bin/sh的

 

一个不依赖于/bin/sh的反弹shell:

Windows环境使用

此外MSF中也有相应模块可以调用,就不多提
8) Java
给出一个调用/bin/bash的脚本

MSF中也有相应模块可以调用

9) Lua

类似不做解释

 

0x02 端口转发

上面总结反弹shell的各种已知主流或非主流方式,下面扯一下端口转发. 已知的大众方式如:
lcx老牌工具
htran/fport/fpipe等
antifw修改3389端口为80
reduh提供了借助http/https隧道连接3389的另一种方式
tunna给出了比reduh更稳定快速的解决方法
在Linux环境下,则可考虑借助脚本实现,如Perl/Python等. 知道创宇Knownsec曾给出一个rtcp.py脚本做转发之用,不过测试发现只支持单点连接,推荐使用此
脚本,支持多client同时连接

使用方式如

至于Perl脚本,网络中也有相关资料,大家可自行修改使用.
此外,推荐可结合msf加以免杀使用的tunna :) 具体使用方式细节不再介绍.

0x03 开放代理

如果对目标服务器已获得较高权限,可添加vpn或socks代理,ringzero@557.im写的 一个可用socks.py脚本可以更易的完成socks代理添加 使用方式如:

只有Webshell的情况下,又需要对内网某web服务进行访问测试,但没有充足的精力手工借助webshell进行请求,需要将这一过程自动化,xsjswt给出这样一种
思路.
将如下脚本以shell权限丢至服务器

另搭建一nginx服务器,添加如下配置

重新加载nginx配置,本地浏览器http代理设置为nginx服务器ip及监听端口,即可实现初步的代理请求.

 

0x04 小结

仅总结常见手法/工具/脚本并加以测试,如各位实战中有奇葩的环境/更有趣的思路/手法,望不吝赐教.

0x05 参考资料

[1] http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
[2] http://www.leavesongs.com/PYTHON/python-shell-backdoor.html
[3] http://www.waitalone.cn/linux-shell-rebound-under-way.html
[4] http://tool.p1ng.pw/getshell.html
[5] 互联网其他相关资料

赏金发放情况:本文获得150RMB,已于6.13日发放到作者账号。

征稿启事:91RI 一直相信“你不与人分享,谁与你分享”, 分享的确是件非常有意义的事情。为了让优秀的同学有 地方分享自己的独到见解,也为了让更多同学从分享中受益,同时我们也希望给那些愿意分享的小伙伴们一点点心意作为感谢,所以我们隆重了推出“有奖征文”活动!本次活动的详情可以围观《征稿启事