今天讲到的方法是suid和内核漏洞
两个信息收集:LinEnum、linuxprivchecker
两个漏洞探针:linux-exploit-suggester、linux-exploit-suggester2
信息收集有什么用?
信息收集就能判断能否进行suid和内核漏洞的提取,
漏洞探针主要应用在内核上面的差异,判断出在这个操作系统上面可能存在的漏洞,帮你尝试用这个漏洞去提权。
演示四个脚本的解释,
信息收集
https://github.com/rebootuser/LinEnum
https://github.com/sleventyeleven/linuxprivchecker
漏洞探针
https://github.com/mzet-/linux-exploit-suggester
https://github.com/jondonas/linux-exploit-suggester-2
————————————————
版权声明:本文为CSDN博主「貌美不及玲珑心,贤妻扶我青云志」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_61553520/article/details/130974974
把脚本上传到tmp目录,因为tmp是个临时目录,在服务器重启之后会清空,一般这个目录是可以写入的,别的目录可能会因为权限不够无法写入的情况,或者执行不了脚本,
将下载好的脚本上传到tmo目录下
如果不能运行就用chomd +x 脚本名字 赋予一个可执行的权限
内核和发行版详细信息
系统信息:
主机名
网络详情
当前IP
默认路由详情
DNS 服务器信息
用户信息:
当前用户详细信息
最后登录的用户
显示登录到主机的用户
列出所有用户,包括 uid/gid 信息
列出 root 帐户
提取密码策略和哈希存储方法信息
检查 umask 值
检查密码哈希是否存储在 /etc/passwd
提取“默认”uid 的完整详细信息,例如 0、1000、1001 等
尝试读取受限文件,即 /etc/shadow
列出当前用户历史文件(即 .bash_history、.nano_history 等)
SSH 基础检查
特权访问:
哪些用户最近使用过 sudo
确定 /etc/sudoers 是否可访问
确定当前用户是否在没有密码的情况下具有 Sudo 访问权限
是否可以通过 Sudo(即 nmap、vim 等)获得已知的“good”突破二进制文件
是否可以访问 root 的主目录
列出 /home/ 的权限
环境:
显示当前 $PATH
显示环境信息
工作/任务:
列出所有 cron 作业
找到所有全局可写的 cron 作业
找到系统其他用户拥有的 cron 作业
列出活动和非活动的 systemd 计时器
服务:
列出网络连接 (TCP & UDP)
列出正在运行的进程
查找和列出进程二进制文件和相关权限
列出 inetd.conf/xined.conf 内容和相关的二进制文件权限
列出 init.d 二进制权限
版本信息(以下):
Sudo
MYSQL
Postgres
Apache
检查用户配置
显示启用的模块
检查 htpasswd 文件
查看 www 目录
默认/弱凭据:
检查默认/弱 Postgres 帐户
检查默认/弱 MYSQL 帐户
搜索:
找到所有 SUID/GUID 文件
找到所有全局可写的 SUID/GUID 文件
找到 root 拥有的所有 SUID/GUID 文件
找到“有趣”的 SUID/GUID 文件(即 nmap、vim 等)
使用 POSIX 功能定位文件
列出所有全局可写文件
查找/列出所有可访问的 *.plan 文件并显示内容
查找/列出所有可访问的 *.rhosts 文件并显示内容
显示 NFS 服务器详细信息
找到包含在脚本运行时提供的关键字的 *.conf 和 *.log 文件
列出所有位于 /etc 的 *.conf 文件
.bak 文件搜索
查找邮件
平台/软件特定测试:
检查以确定是否在 Docker 容器中
检查主机是否安装了 Docker
检查以确定是否在 LXC 容器中
主要就是查看这个suid的信息,通过这些信息判断suid是否存在提权的可能性
如果目标主机上没有python脚本运行不了,
用python运行,如果没有运行权限,chmod +x 脚本名字 加上运行权限即可
收集出来的信息也是差不多的
添加上运行的权限
漏洞相应的下载地址和漏洞利用的poc都会给出,
用perl去运行这个文件
他这个就比较简介,直接告诉我们可能存在的漏洞,以及下载的地址。
suid 全称 set user id
通过设置这个东西,能给用户操作的权限
漏洞成因:chmod u+s基于了suid,u-s删除了suid
没有赋予suid之前,查看文件的权限都是这样的
脚本名字也被标红了,标红的意思就是他在运行的会调用的用户的权限,
suid提权原理;一个文件在被运行的时候会被root用户去调用执行它,我们是普通用户去调用这个脚本,但是会以root权限去运行他,
过程,先探针目标上是否有suid(脚本或者手动),再利用特定的suid进行提权
参考:SUID Executables – Penetration Testing LabSUID (Set User ID) is a type of permission which is given to a file and allows users to execute the file with the permissions of its owner. There are plenty of reasons why a Linux binary can have this type of permission set. For example the ping utility require root privileges in order to…https://pentestlab.blog/2017/09/25/suid-executables/
已知的可用来提权的程序如下:nmap、vim、find、bash、more、less、nano、cp(看这些命令有没有配置root权限)
在这个目录就有find,打出find目录就会默认的在目录下调用find文件,这里添加上了suid,就算是普通用户去运行find,也会以root用户去运行他。存不存在提权就是检测上面那几个文件
这里用冰蝎作为测试后门,使用冰蝎的反弹shell功能
根据冰蝎的提示设置好payload和监听ip和端口就行了
之后点给我连就行
查看当前权限
正常的通过冰蝎或者命令upload 上传的文件路径 目标主机的要上传路径以及命令
正常留下执行信息收集的sh脚本
对比有没有
map、vim、find、bash、more、less、nano、cp 这些关键字
这里看到了一个find,看到了就存在suid提权,
find就是调用这个命令,调用这个命令就会被root执行,-exec就会用root命令去执行后面的命令,后面是反弹shell的命令。
操作过程就是,先touch 一个文件,创建一个文件就是
之后在用find 文件执行whoami的命令看一下权限
为什么find后面要跟个文件是因为要让find命令调用起来查找一些东西,才能调用出root权限
find pentestlab -exec whoami \;
看返回的权限就是root
之后在借助命令执行反弹shell
自己再去链接那个端口就拿下root权限了
这个是本地提权,因为webshell提不了内核的漏洞
打开墨者的靶场
提权过程,先进性普通用户建立一个连接,获取到可以利用的漏洞,去下载exp,也可以在在会话上下载,exp大部分都用c语言开发的,linux的内核也是c,借助上面的编译去编译exp,给予执行的权限,
打开靶场
上传上去检测内核漏洞的脚本,执行脚本
给出了四个漏洞,
在github搜索漏洞编号,找到了45010c,利用脚本,下载下来
上传上去之后,对他进行编译
编译和之后赋予执行权限
发现是root权限 作者:沙漠里的鲸 https://www.bilibili.com/read/cv16845884/
执行脚本,直接就变成了root权限
vulnhub过程,下载出来靶机之后,要先判定出来自己的目标,自己去扫描,找到存活的ip地址,然后在目标上面找漏洞,利用漏洞成功拿到webshell权限,再利用脚本探针内核提权漏洞,然后利用内核提权成功,拿到root权限。
打开靶机是没有密码的,靶机的ip和我是同一个ip端,直接扫描就行、
扫描结果有80端口
打开网站啥都没有,继续扫描指定ip的开发端口
在看这个1898
这就是一个web界面
这个图标一眼就认出来那个cms,在msf上试试能不能直接用
配置好攻击信息直接拿下
上传漏洞验证脚本
这个漏洞就是我们熟悉的脏牛漏洞,可以直接借助webshell权限提升,
这就可以直接利用url后面的链接下载地址,直接下载到靶机上
但是这样下载到靶机命名不好,不是.c文件,还是建议exp,上传到靶机上去
脏牛漏洞原理
这个漏洞的exp已经出现了二版,二版更简单一些,下载地址gbonacini/CVE-2016-5195:CVE-2016-5195 漏洞利用示例。 (github.com)
这个二版是用make编译的,所以在命令上有一些差异
上传到靶机的tmp文件夹
编译exp(将40847.cpp文件编译为dcow)并且查看:
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
成功编译
这个漏洞再利用的时候,必须要开一个模拟终端,不然就利用不了。
这个终端是什么,现在我们是个shell会话,开一个终端就是交互式的shell,什么是交互式终端,比如在创建用户的会弹窗让输出密码,在命令里面是会给一个提出输入密码才可以继续执行,一条命令输出去如果没有交互式就会一直卡在那里,有些命令执行还要交互式再问一下是否继续,所以这个就利用到交互式,这个提权就必须弄一个交互式才能正常成功。
这里就用python做一个伪终端
python -c 'import pty; pty.spawn("/bin/bash")'
伪终端就出来了
直接切换用户拿下root权限
这个直接反弹shell
直接到已经找到脏牛漏洞,然后上传exp利用
执行之后等待他返回结果
失败了。
fa
cai