当前位置:   article > 正文

通杀漏洞CVE-2021-4034提权原理和应用_cve-4034 py

cve-4034 py

免责声明:本文章仅供安全从业人员,了解CVE-2021-4034的原理,技术讨论,不允许将其用于非法用途。

什么是CVE

CVE的英文全称是Common Vulnerabilities & Exposures(公共漏洞和暴露)。

危害等级

高危

liunx权限

基本权限 UGO

属主------->u 属组------->g 其他人------>o

 

文件的权限分为三种即 r w x ,
r: Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
w Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行
x execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

图片出处:xiaosha

SUID、SGID、SBIT详解

  1. 读(read):r ---->4
  2. 写(write):w ---->2
  3. 执行: x(exec) ----->1
  • SUID的基本权限位有x权限,标识符为s,代表数字为4,生效对象为用户位
  • SGID的基本权限位有x权限,标识符为s,代表数字为2,生肖对象为用户组位
  • SBIT的基本权限位有x权限,标识符为t,代表数字为1,生效对象为其他用户
  • 因此 4+2+1=7 chmod 777 就是ugo都有读写执行权力
  1. r w x rw- r--
  2. 属主权限 属组权限 其他人权限

SUID

suid通过s字符标识判定,当s出现在文件所有者的x权限时,如上图/usr/bin/passwd文件,状态位:-rwsr-xr-x,此时就可以判定为时suid。

  1. suid权限仅对二进制程序有效
  2. 该权限仅在执行该程序的过程中有效
  3. 执行者将拥有该程序拥有者的权限

SUID的目的:为了让本来没有相应权限的用户运行这个程序,可以短暂的享有该程序拥有者的权限。就比如上方图例,/usr/bin/passwd该二进制程序是用来修改密码的,但是linux系统中用户众多,有root、普通用户等等,这些用户都需要在特殊情况修改密码,比如在忘记登录密码时。

具体流程:

因为passwd的权限对任何用户都是可执行的,所以系统中不管什么用户都可执行passwd文件的拥有者是属于root当普通用户在执行passwd命令时,会在执行期间短暂拥有root权限普通用户借助root权限修改了/etc/shadow文件最后把密码修改成功这时候,在攻击者的角度,就可以利用此类拥有者为root的二进制程序,提权成功.

当在渗透过程中获取了shell,可以使用find命令查询系统上所有的s权限位文件,命令:
find / -perm -4000 -type f -ls

sgid

  •  sgid和suid差不多,先查看s是否在所属用户组的x位置上,如果在,那就是sgid
  • sgid获得该程序所属用户组的权限
  • sgid仅对二进制程序有用
  • sgid主要用在目录上

注:sgid,如果用户在此目录下具有w,写的权限的话,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同。

SBIT权限位

  • sbit主要针对other来设置的,和suid,sgid大同小异,只是功能上不同而已
  • sbit只对目录有效,当用户在该目录下新建文件或目录时,仅自己和root才有权利删除
  • 最具代表的就是/tmp目录,之前在渗透项目中,获得了webshell,都要先进到/tmp目录下进行一系列下载之类的操作,因为/tmp目录,任何人都可以增加、修改文件(权限为rwx)

注:SBIT对文件不起作用
 

提权实例

这toto命令具有SUID权限,

  1. echo "/bin/bash" > /tmp/id
  2. chmod 777 /tmp/id
  3. export PATH=/tmp:$PATH
  4. ./toto

将命令/bin/bash写入文件/tmp/id中,然后设置文件的执行权限为777(允许任何人执行)。接着将/tmp加入环境变量PATH中,这将导致系统在查找应用程序时首先搜索/tmp目录。最后,运行文件toto,因为toto不存在于$PATH中,所以这个命令将在/tmp目录中查找toto文件并执行它。

 获得john权限

接下里在john用户下执行sudo -l列出当前用户可以在目标系统上运行的所有 sudo 命令

  •  Matching Defaults entries 显示当前用户的默认特权,
  •  env_reset 表示环境变量是受保护的
  • mail_badpass 表示用户输入错误密码时会向管理员发送邮件,
  • secure_path 表示用户在使用 sudo 命令时要使用的特定路径。
  • 接着,这里列出了 john 用户可以以 root 身份运行的仅一个命令,即 /usr/bin/python3 /home/john/file.py。这表明 john 用户可以使用 sudo 访问该命令,而无需提供 root 用户的密码。
  • 在这种情况下,john 可以以 root 身份在目标系统上运行 /usr/bin/python3 /home/john/file.py 这个命令。
  1. echo "import pty;pty.spawn('/bin/bash')" > file.py
  2. sudo python3 /home/john/file.py

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/1000158
推荐阅读
相关标签
  

闽ICP备14008679号