介绍
在渗透测试或则漏洞评估的过程中,加壳是十分重要的一步,在这一步,黑客和安全研究人员经常通过exploit,bug,错误配置来提高权限。本文的事例都是在虚拟机里测试的,不同的虚拟机可以从Vulnhub下载。
实验一:借助Linux内核漏洞加壳
VulnOSversion2是VulHub上的一个Linux加壳练习,当打开虚拟机后,可以看见
获取到低权限SHELL后我们一般做下边几件事
1.测量操作系统的发行版本
2.查看内核版本
3.检查当前用户权限
4.列出Suid文件
5.查看早已安装的包,程序,运行的服务linux是什么系统,过期版本的有可能有漏洞
$ lsb_release -a
查看系统的发行版本
每次在加壳的时侯,我们就会一次又一次的测试,我们将搜索所有可能的加壳技术,并依次应用,直至成功。我们将测试不同的内核exploit,也会暴力破解帐号。这个事例我们晓得操作系统采用的是Ubuntu14.04.4LTS,内核版本是3.13.0-24-generic,首先我们尝试借助overlayfs,这个exploit会工作在Ubuntu12.04/14.04/14.10/15.04的linux内核3.19之前和3.13.0以后,我们测试一下。
我们首先联通到/tmp目录,之后新建一个文件,粘贴exploit代码进去
依次运行:
$ cd /tmp
$ touch exploit.c
$ vim exploit.c
vim保存推出后,我们编译代码
$ gcc exploit.c -o exploit
如今执行,假如提示没有权限,还需chomd777./exploit
$ ./exploit
通过截图可以看见我们早已获取到了root权限,接出来获取交互式的shell
$ python -c ‘import pty; pty.spawn(“/bin/bash”)’
假如加壳失败了,我个人建议你测试几个其他的exploit,新的内核版本也可以试试:
LinuxKernel3.13.0<3.19(Ubuntu12.04/14.04/14.10/15.04)–‘overlayfs’LocalRootShell
LinuxKernel4.3.3(Ubuntu14.04/15.10)–‘overlayfs’LocalRootExploit
LinuxKernel4.3.3–‘overlayfs’LocalPrivilegeEscalation
最后核心提示:内核exploit加壳有风险,有可能会崩溃系统。
实验2:借助低权限用户目录下可被Root权限用户调用的脚本加壳
Mr.Robot是另一个boot到root的挑战虚拟机qq for linux,我拿这个事例来告诉你为何suid程序在加壳的过程中是重要的,假如你曾经对suid没有了解,可以参考
我们首先查看下当前用户
通过截图可以获知,当前用户为”daemon”,我们接出来加壳”daemon”到”root”
这台Ubuntu14.04运行linux内核3.13.0-55-generic,我尝试已有的exploit都失败了。
此次我们通过找寻系统里可以用的SUID文件来加壳。运行:
$ find / -perm -u=s -type f 2>/dev/null
得到如下列表:
通过截图,我们发觉nmap竟然有SUID标志位,来瞧瞧nmap版本
一个特别老的nmap版本,然而这个版本的nmap怎么帮我们加壳呢?
nmap支持“interactive.”选项,用户还能通过该选项执行shell命令,一般,安全人员会使用该命令来防止她们使用nmap命令被记录在history文件中
由于nmap有SUID位linux内核调用应用程序,所以通过“!sh”我们会获取到一个root权限的shell
在你的渗透过程,假如发觉Nmap3.48有SUID位,可以根据本文的事例做下测试。
实验3:借助环境变量绑架高权限程序加壳
PwnLad是笔者最喜欢的挑战,一个功击者有几个帐号,并且都不是root权限。
我们当前登入的是”Kane”账号linux内核调用应用程序,当前没有有效的内核exploit,也没有其他可以借助的suid文件
只有在Kane的home目录下有一个“msgmike.”文件
使用file命令查看下这个文件
从截图可以看见,这是一个ELF32位LSB执行文件,并且当我们执行文件的时侯,报错了
通过报错信息我们可以看见msgmike调用cat命令读取/home/mike/msg.txt文件。
针对这些情况,我们可以通过设置bash的$path环境变量来利用,一般的$PATH包含
但是当我们调用cat命令的时侯,cat会从以上目录来找寻,假如我们添加.到$PATH环境变量,则会先从当前目录来找寻cat指令
新建cat,添加执行权限
这样当我们再度运行./msgmike命令的时侯,才会触发当前目录下的cat(/bin/sh),因而加壳。完整的exploit如下