【Linux】常用提权总结-下篇

admin 2022年7月1日09:13:14评论231 views字数 3194阅读10分38秒阅读模式

接上一篇:【Linux】常用提权总结-上篇


7、NFS

原理:

nfs类似于windows共享,默认是开启2049端口,用来挂载某个目录来进行共享

利用:

当nfs配置不当时,我们可以用来提权,首先需要有一台机器当客户端,我们把目标机器的nfs共享,挂载过来,然后复制一个bash进去,并给suid权限,然后目标机器里就有一个suid权限的bash了,这时候我们用目标机的普通用户执行bash就是root权限了:

挂载nfs:

mount -t nfs 192.168.1.1:/home/test

然后cd进入该目录,拷贝bash进去

cp /bin/bash .

给suid权限

chmod +s bash

然后使用普通用户去目标机执行即可获取ROOT权限。这里还要注意,我们执行bash的时候需要加上-p参数。

p参数说明:不提供的情况下,打开bash权限是当前实际用户,提供的情况下,会打开特权模式,像上继承euid,因为bash有suid权限,所以这里是root。



8、PATH

原理:

Linux中的PATH是一个环境变量,它指定了可执行程序所在的目录,例如bin和sbin目录,当我们在终端运行一个命令时,系统就会根据PATH来查找相关的可执行文件。

利用:

可以执行env命令列出所有的环境变量,然后找到PATH,或者grep进行结果筛选,或者echo出$PATH值,命令如下。

【Linux】常用提权总结-下篇



ps结合PATH提权

首先编译以下c代码,功能为调用ps命令。

#include<unistd.h>void main(){        setuid(0);        setgid(0);        system("ps");}

【Linux】常用提权总结-下篇

随后以root身份赋予777权限,然后再赋予一个suid权限。

【Linux】常用提权总结-下篇

此时普通用户执行这个shell文件,可以看到就是执行的ps命令。

【Linux】常用提权总结-下篇

利用:到tmp目录下,把bash写到一个ps文件中,然后修改PATH变量添加tmp目录,再去执行shell,就会获得一个root权限。

【Linux】常用提权总结-下篇

过程:root给一个可执行文件赋予了suid,而此文件又调用了ps命令,这时修改PATH把tmp添加到头的位置,系统再执行就会先去tmp目录下找,tmp目录下放的是恶意程序,从而导致恶意程序以root权限运行。

情况:这种情况适用于,给普通用户分配了个可执行程序,且该程序有suid权限,我们又知道该程序会调用哪些命令,那么就可以结合PATH来进行提权。



cp结合PATH提权

除了把bash写到ps文件中以外,还可以把类似于sh的可执行程序复制过来。

【Linux】常用提权总结-下篇



符号连接结合PATH提权

还可以通过ln命令来设置一个连接,连接到sh,但条件是当前可执行程序所在目录要有相关权限,我这里就直接sudo创建了。

【Linux】常用提权总结-下篇

如果在tmp下创建连接,这里测试并不会调用。

【Linux】常用提权总结-下篇

上面以ps为例,其它命令都可以,例如id、whoami、cat、vim等等,方法都一样,只是改下tmp目录下的文件名。



 9、LD_PRELOAD

原理:    

    LD_PRELOAD是Linux下的一个环境变量,程序运行时都会加载一些so文件,类似于windows下程序加载dll,而LD_PRELOAD可以指定程序运行前加载的动态连接库。



10、Cron

原理:

cron jobs是一个计划任务,不止可以用来权限维持,还可以用来提权

利用:

这个就很简单了,就看是否有计划任务在跑,把脚本内容改成赋予权限命令即可,只需要添上一句

os.system('chmod u+s /bin/bash')

等待计划任务运行,直接就有权限了,直接/bin/bash -p来继承上级权限,除此之外还可以修改sudoers或者添加passwd。



11、Lxd

原理: 

Linux Container(LXC)通常被认为是一种轻量级虚拟化技术,它介于Chroot和完整开发的虚拟机之间,LXC可以创建一个跟正常Linux操作系统十分接近的环境,但是不需要使用到单独的内核资源。

Linux Daemon(LXD)是一个轻量级容器管理程序,而LXD是基于LXC容器技术实现的,而这种技术之前Docker也使用过。LXD使用了稳定的LXC API来完成所有的后台容器管理工作,并且增加了REST API支持,更进一步地提升了用户体验度。

利用链接:https://www.freebuf.com/articles/network/216803.html



12、Capability

原理: 

capability可分割root权限,把root特权分割成不同的权限,然后给与普通用户不同的权限:

- CAP_CHOWN:修改文件属主的权限- CAP_DAC_OVERRIDE:忽略文件的DAC访问限制- CAP_DAC_READ_SEARCH:忽略文件读及目录搜索的DAC访问限制- CAP_FOWNER:忽略文件属主ID必须和进程用户ID相匹配的限制- CAP_FSETID:允许设置文件的setuid位- CAP_KILL:允许对不属于自己的进程发送信号- CAP_SETGID:允许改变进程的组ID- CAP_SETUID:允许改变进程的用户ID- CAP_SETPCAP:允许向其他进程转移能力以及删除其他进程的能力- CAP_LINUX_IMMUTABLE:允许修改文件的IMMUTABLE和APPEND属性标志- CAP_NET_BIND_SERVICE:允许绑定到小于1024的端口- CAP_NET_BROADCAST:允许网络广播和多播访问- CAP_NET_ADMIN:允许执行网络管理任务- CAP_NET_RAW:允许使用原始套接字- CAP_IPC_LOCK:允许锁定共享内存片段- CAP_IPC_OWNER:忽略IPC所有权检查- CAP_SYS_MODULE:允许插入和删除内核模块- CAP_SYS_RAWIO:允许直接访问/devport,/dev/mem,/dev/kmem及原始块设备- CAP_SYS_CHROOT:允许使用chroot()系统调用- CAP_SYS_PTRACE:允许跟踪任何进程- CAP_SYS_PACCT:允许执行进程的BSD式审计- CAP_SYS_ADMIN:允许执行系统管理任务,如加载或卸载文件系统、设置磁盘配额等- CAP_SYS_BOOT:允许重新启动系统- CAP_SYS_NICE:允许提升优先级及设置其他进程的优先级- CAP_SYS_RESOURCE:忽略资源限制- CAP_SYS_TIME:允许改变系统时钟- CAP_SYS_TTY_CONFIG:允许配置TTY设备- CAP_MKNOD:允许使用mknod()系统调用- CAP_LEASE:允许修改文件锁的FL_LEASE标志

capability和suid的区别在于:suid是针对某个用户给权限,而capability针对的是某个程序。在设置程序能力时,有三个选项可选:

1,inheritable,简称i,表示是否可继承。2,permitted,简称p,表示是否允许使用。3,effective,简称e,表示特权是否有效。

setcap命令用来设置能力,例如setcap cap_setuid+ep /home/demo/python3,就表示home/demo/python3这个程序添加了setuid能力,即改变进程uid的能力,+ep就表示能力有效,且允许使用。

都需要特定的环境,用的时候百度吧,懒得做笔记了


【Linux】常用提权总结-下篇






往期精彩:

【Linux】常用提权总结-上篇

  Bypass一些命令注入限制的姿势

【审计学习】PHP审计的危险函数概括

【超详细 | 附EXP】Weblogic 新的RCE漏洞CVE-2021-2394

【入侵检测】Linux机器中马排查思路

【入侵检测】Windows机器中马排查思路

【代码审计】对一套钓鱼网站的代码审计

  Web安全——登录页面渗透测试思路整理


【Linux】常用提权总结-下篇

点个在看你最好看


【Linux】常用提权总结-下篇

原文始发于微信公众号(澜图安全):【Linux】常用提权总结-下篇

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月1日09:13:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【Linux】常用提权总结-下篇https://cn-sec.com/archives/1127900.html

发表评论

匿名网友 填写信息