????? 渗透测试过程中,拿到Webshell之后,常规都会去看一下系统是啥权限。这里主要讨论Linux系统的一些思路。
????? 常规思路不用说了,先查看Linux内核版本,然后直接去搜一下是否有关于该版本的提权exp放出来,如果有的话,直接编译运行提权即可,简单粗暴。
????? 如果没有相关内核的提权exp放出来,那就需要考虑其他思路了。这篇老外的文章,介绍了常规的三种提权思路,第一种就是内核exp提权,最开始我也说了。后续两种有点意思。根据老外的那篇文章,在实验环境里面过一遍。
????? 常规思路:
????? 1、检查漏洞系统的操作系统发行版
????? 2、查看内核版本
????? 3、检查可用的用户及当前用户的权限
????? 4、列出SUID文件(常见的Linux错误配置)
????? 5、查看安装的包、程序、运行的服务。过时的版本可能存在漏洞。
????? Lab1:VulnOS 2
????? 查看一下系统相关情况:
????? 查看一下操作系统的发行版本:
????? 针对列出来的内核版本,exploit-db上的overlayfs可以用来提权。
????? 已经提权成功了。还有几个比较新的关于这个Exp的版本,甚至可以用于更新版本内核的提权。
????? 1、Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - 'overlayfs' Privilege Escalation
????? 2、Linux Kernel 4.3.3 (Ubuntu 14.04/15.10) - 'overlayfs' Privilege Escalation
????? 3、Linux Kernel 4.3.3 - 'overlayfs' Privilege Escalation
????? Lab 2:Mr.Robot
????? 这个实验主要用的是SUID文件,这之前我对这块并不了解。关于SUID文件的介绍可以查看这里。我的理解就是如果设置了SUID这个标志位,普通权限的程序在执行的时候,可以暂时拥有root权限。
????? 在这里插入一个,关于如何获取Mr.Robot靶机shell的思路也比较常规,可以参考这里。其实就是利用wordpress 后台插件上传来获取webshell。不过获取的webshell因为是在metasploit生成的,所以在meterpreter进行后续的操作。获取系统普通shell之后,来看下如何提权。获取的shell如下:
????? 当前用户是daemon,来看如何提权为root。在这里所有内核提权漏洞提权都失败了。我就不尝试了,来看下主角,利用SUID来进行提权。
????? 输入命令:find / -perm -u=s -type f 2>/dev/null
????? 先来解释一下find -perm命令。find –perm mode是根据文件的权限来查找文件。看下查到的结果。
????? 发现nmap拥有SUID标识。先来看一下nmap的版本信息。
????? 这是一个过期的版本。但是这个版本支持interactive模式。(PS:BackBox中的Nmap 7.0.1已结不支持这个选项了)很多时候,安全人员利用这个方式来操作nmap,这样操作记录就不会留在history中。
????? 然后,“!sh”会弹出一个shell。因为nmap拥有SUID标志,这个shell会是一个root shell。如下所示:
????? Lab3:PwnLab-Init
????? 对于如何拿下PwnLab-Init的shell,写的蛮好的。如何权限提升写的也蛮好的。直接看这里就好了。
????? 除此之外,对于提权思路,还可以参照linux系统运行了一些什么进程,然后去找相应的组件,看是否可以进行系统权限的提升。在这里罗列了几个常规的组件提权方式,其实也是套路。就是利用漏洞或者运维人员的疏忽,导致内核权限的提升。
????? redis提权,我之前写了一篇如何拿下redis非授权访问获得webshell,因为redis一般是root运行,所以你懂的。
????? rsync默认允许匿名访问,若未添加用户口令则可以进行匿名登录。rsync进程默认是以root权限启动,利用rsync同步文件的同时,可以保持原来文件的权限的特性,可以使用rsync进行提权。可以参考这篇文章。
????? tomcat本地提权漏洞CVE-2016-1240。可以参考这篇文章。
????? nginx本地提权漏洞CVE-2016-1247。可以参考这篇文章。
????? 参考文献: