欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

将普通shell升级为全交互式终端

来源:本站整理 作者:佚名 时间:2017-07-19 TAG: 我要投稿

相信每一个渗透测试人员都明白那种美妙的感觉——netcat接收到反弹回来的反向shell,一行行让人满足的的详细的netcat信息被打印出来。
如果其他的渗透测试人员也像我一样,他们肯定也知道那种可怕的感觉——当他们的shell因为他们运行了一个错误的命令而被挂起时,本以为敲击“Ctrl-C”会搞定这个状况,但是没想到却断开了整个连接。

除了不正确的处理技术,这些“愚蠢”的shell还有其他的缺点:
1.一些命令,比如“su”和“ssh”需要适当的终端才能运行
2.标准错误信息(STDERR)经常不会被显示出来
3.不能正确使用文本编辑器如VIM
4.没有命令补全功能
5.“上”按键没有历史纪录功能
6.没有任务管理功能
7.等等。。。
长话短说,虽然这些shell相对来说很容易实施和捕获,但我更希望在一个完全互动的终端(TTY)中进行操作。
我发现了一些很好的资源,其中包括一些非常有用的技术和技巧,可以用来“升级”这些shell,希望在一篇文章中展示和分享。 在Pentest Monkey网站上, 根据Phineas Fisher发布的视频和他非法活动的writeups,我学会了这些技巧。
1.Pentest Monkey - Post Exploitation Without a TTY
2.Phineas Fisher Hacks Catalan Police Union Website
3.Phineas Fisher - Hackingteam Writeup
先简单说一下思路,在后面的截图和命令中,我会向一个有漏洞的Web服务器(受害者)注入命令,然后在我的kali虚拟机上接收反弹回来的shell。
1.受害者 IP: 10.0.3.7
2.我的KALI IP: 10.0.3.4
Generating reverse shell commands
相信每一个人都十分熟悉利用netcat获取反向shell的传统方法:

接收:

但问题是并不是每一个服务器会安装netcat,而且也并不是每一个版本的netcat有“-e”参数。
Pentest Monkey上有一个很大的备忘单,列出了好些不同的方法,但是我最喜欢用的方法是利用Metasploit的msfvenom来为我生成一套命令。
在Metasploit 的"cmd/unix"目录下,有一些payload可以用来生成一套bind shell或者是反向shell。

这些payload中的任何一个都可以配合msfvenom使用生成我们所需要的原始命令(需要指定LHOST, LPORT or RPORT)。比如,以下是一个netcat命令,其并不需要“-e”参数:

还有一个Perl oneliner可以处理netcat没有被安装的情况:

这些都可以通过使用netcat和监听端口(4444)来捕获。
Method 1: Python pty 模块
在捕获了一个“愚蠢”的shell之后很长一段时间内,我使用的核心命令是用Python来加载pty模块。Pty模块可以为你生成一个伪终端,这可以欺骗一些命令如“su”,让他们以为他们是在合适的终端中执行的。要想升级“愚蠢”的shell,让他们具有如上的功能,只需简单的运行如下命令:

然后你就可照常运行“su”等命令,如下

不幸的是,该方法并不能解决上面提到的其他一些问题。组合键(Ctrl-C)仍将关闭netcat,也没有命令不全功能或历史记录功能。但这个快速但不完美的解决方法,帮助了我无数次。
Method 2: 使用 socat
Socat就像netcat一样是一个非常强大的网络瑞士军刀。通过TCP连接,我们可以用socat建立完整的TTY。如果在受害者服务器上安装了socat,你就可以用它来反弹一个反向shell。而你必须捕获与socat的连接,以便获得全部的功能。
下面的命令会生成一个完全交互的TTY反向shell:
On Kali (listen):

On Victim (launch):

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载