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

1.将

linux-exploit-suggester.sh下载到要检测的主机上,主要使用以下两条指令:

chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh

在执行上述命令之前,首先查看Linux内核版本。

查看脚本执行结果,可以使用脏牛来进行加壳。

2.使用searchsploit搜索dirty,使用40839.c,将漏洞借助代码上传到目标机器。

Linux提权漏洞_linux passwd_dirty提权利用

3.接出来编译并执行。

gcc -pthread 40839.c -o c -lcrypt
./c

dirty提权利用_Linux提权漏洞_linux passwd

dirty提权利用_linux passwd_Linux提权漏洞

4.该漏洞借助代码会加入一个uid为0的用户,切换到firefart用户,获取root权限。

定时任务漏洞介绍

dirty提权利用_Linux提权漏洞_linux passwd

若果未正确配置Cron,则可以借助它获得root特权。

cron作业中是否有可写的脚本或二补码文件?我们可以覆盖cron文件本身吗?cron.d目录可写吗?

Cron一般以root特权运行。假如我们可以成功更改cron中的任何脚本或二补码文件手机linux操作系统,这么我们可以使用root权限执行任意代码。

漏洞复现

接出来使用pspy来窃听进程。

pspy是一种命令行工具,无需root权限即可窃听进程。可以查看其他用户执行的命令、cron作业等。

该工具的下载地址:

https://github.com/DominicBreuker/pspy

首先将pspy上传到目标机器:

1)chmod+xpspy64s

2)./pspy64

观察一段时间,发觉test.py为root权限执行。

dirty提权利用_linux passwd_Linux提权漏洞

查看test.py权限为普通用户可写,之后执行如下命令,将/etc/passwd设置为所有用户可写。

echo 'import os,stat ;os.chmod("/etc/passwd", stat.S_IRWXU|stat.S_IRWXG|stat.S_IRWXO)' >> test.py

linux passwd_Linux提权漏洞_dirty提权利用

Linux提权漏洞_linux passwd_dirty提权利用

Linux操作系统下的passwd文件假如具备可写入权限情况下,可以新建UID为0的用户,或则替换root密码,则可以获取到root权限。

Suid加壳漏洞介绍

SUID代表设置的用户ID,是一种Linux功能,容许用户在指定用户的许可下执行文件。诸如linux vps,Linuxping命令一般须要root权限能够打开原始网路套接字。通过将ping程序标记为SUID(所有者为root),只要低特权用户执行ping程序,便会以root特权执行ping。

-rwsr-xr-x–用's'字符取代'x'表示SUID位被设置。

SUID是一项功能,假如使用得当,它实际上可以提高Linux的安全性。问题在于,管理员在安装第三方应用程序或进行逻辑配置修改时可能会在不知不觉中引入危险的SUID配置。

许多系统管理员不晓得应当在哪些情况设置SUID位linux passwd,SUID位不应当设置在文件编辑器上,由于功击者可以更改系统上存在的任何文件。

漏洞复现

使用LinEnum.sh来搜集要加壳的机器上的信息,该脚本主要拿来搜集Linux上的信息。

该脚本的下载地址:

https://github.com/rebootuser/LinEnum

执行LinEnum以后,发觉/bin/screen-4.5.0这个应用有SUID权限,之后去搜索一下,发觉screen4.5版本存在本地加壳漏洞。

Linux提权漏洞_linux passwd_dirty提权利用

该EXP下载地址如下:

https://www.exploit-db.com/exploits/41154

使用如下命令进行编译:

gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
gcc -o /tmp/rootshell /tmp/rootshell.c

dirty提权利用_Linux提权漏洞_linux passwd

将编译好的EXP上传到目标机器,并按以下步骤执行。

cd /etc
umask 000
/bin/screen-4.5.0 -D -m -L ld.so.preload echo -ne "x0a/tmp/libhax.so"
/bin/screen-4.5.0 -ls
/tmp/rootshell

执行以后成功获取root权限。

Sudo配置错误漏洞介绍

假如功击者未能通过其他任何方法直接获得root用户访问权限,则他可能会尝试损害具有SUDO访问权限的任何用户。一旦他可以访问任何sudo用户,他就可以基本上以root特权执行任何命令。

管理员可能只容许用户通过SUDO运行一些命令,可能在没有察觉的情况下中引入漏洞,这可能引起权限提高。

一个典型的事例是将SUDO权限分配给find命令,便于其他用户可以在系统中搜索特定的文件相关文件。虽然管理员可能不晓得'find'命令包含用于执行命令的参数,但功击者可以以root特权执行命令。

漏洞复现

领到普通用户权限以后,使用sudo–l查看下,查看当前是否存在当前用户可以调用sudo的命令,如右图,当前用户可以执行find命令,之后通过find命令获取root权限。

/usr/bin/find /home –exec sh –i ;

linux passwd_dirty提权利用_Linux提权漏洞

NFS加壳漏洞介绍

网路文件系统:网路文件系统容许顾客端计算机上的用户通过网路挂载共享文件或目录。NFS使用远程过程调用(RPC)在顾客端和服务器之间路由恳求。

RootSquashing参数制止对联接到NFS卷的远程root用户具有root访问权限。远程root用户在联接时会分配一个用户“nfsnobody”,该用户具有最小的本地权限。假如no_root_squash选项开启的话的话”,并为远程用户授予root用户对所联接系统的访问权限。

如右图所示,该共享可以被远程root联接并读写,而且具有root权限,所以可以添加bash文件并赋于SUID权限,在目标机器的普通用户权限下可以执行bash文件,获取root权限。

dirty提权利用_linux passwd_Linux提权漏洞

漏洞复现

如右图所示,该机器开启了/home目录的共享。

使用本地root权限将远程共享挂载到本地,将/bin/sh上传到目标机器,并赋于SUID权限。

linux passwd_Linux提权漏洞_dirty提权利用

使用普通用户执行./sh–p可以获取root权限。

第三方组件加壳漏洞介绍

个别程序使用root权限启动,假如第三方服务或则程序存在漏洞或则配置问题,可以被利拿来获得root权限。

漏洞复现

如右图以tmux为例,通过查看进程,发觉tmux以root权限启动。

(tmux是一个终端多路复用器:它使从单个屏幕创建,访问和控制多个终端成为可能。)

linux passwd_Linux提权漏洞_dirty提权利用

由于现今运行的这个tmux是root权限,只要联接到当前这个tmux,就可以获取到root权限。

通过查看历史命令记录可以发觉,tmux通过了-S参数指定了socket的路径。

dirty提权利用_Linux提权漏洞_linux passwd

dirty提权利用_linux passwd_Linux提权漏洞

使用相同的方法联接SOCKET就可以获取root权限。

tmux -S /.devs/dev_sess

Linux提权漏洞_linux passwd_dirty提权利用

技术小结

在测试项目中,测试人员一般会设法获取shell,之后再进行下一步的操作,本文借以给你们提供一些从普通权限到root权限的思路,基本总结如下:

1.通过查看内核版本,找寻是否存在可以借助的加壳EXP。

2.通过信息搜集,查看定时任务,sudo配置,suid权限的文件linux passwd,查看是否可以借助。

3.通过查看系统的应用,或则第三方应用,查找服务本身是否存在问题,或则是否配置存在问题,如你们常见的mysqludf加壳。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复