渗透(4)

前言

通过后门进入到目标主机之后用getsystem是不能直接拿到系统的system权限的,第一次会超时,第二次会报错,那么需要怎么使用MSF拿到系统权限呢?
图片

UAC

基础概念

UAC:用户账户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。
图片

利用方法

绕过UAC进行提权-需要弹窗提问

在默认情况下,UAC是开启的,当程序需要更多的权限时,需要弹窗确认。

这里使用msf中的local/ask模块:
图片
随后使用run命令开始攻击,目标主机进行弹窗提问:
图片
当目标主机点击了“是”则会成功提权:
图片

绕过UAC进行提权-不用弹窗提问

利用local/bypassuac
图片

利用系统漏洞直接提权

此local_exploit模块可以列出所有的可以进行提权的Payload

1
2
#列出可以使用的exp有哪些
use post/multi/recon/local_exploit_suggester

可以看到列出了很多漏洞其中Yes的都是可以利用的漏洞:
图片
经过测试下来有一半左右是可用的,拿到webshell以后,再反弹shell给msf,然后结合msf做内网渗透。

Linux提权合集

https://github.com/SecWiki/linux-kernel-exploits
在kali的msf中可以用自带的模块进行提权

1
search suggester#直接使用MSF自带的exp模块进行提权

Linux Suid提权

基本概念

suid:在Linux系统中,suid(set user ID upon execution)是一个特殊的权限位,它允许一个程序在执行时临时地以文件所有者的权限运行,而不是以执行该程序的用户权限运行。

https://gtfobins.github.io GTFOBins是 Unix 二进制文件的精选列表,可用于绕过配置错误的系统中的本地安全限制。

注意:
1.只有可以执行的二进制程序文件设定SUID权限才可利用,非二进制文件设置SUI权限没任何意义
2.命令执行者要对该程序文件拥有执行(x)权限
3.SUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

具体操作

如何设置Suid:

1
2
chmod u+s filename #设置suid
chmod u‐s filename #取消suid

查找具有Suid权限的文件:

1
2
3
4
5
6
find / ‐perm ‐u=s ‐type f 2>/dev/null
#‐perm ‐u=s:查找具有suid权限的文件。
#‐type f:限制查找的类型为文件(不包括目录)。
find / ‐user root ‐perm ‐4000 ‐print 2>/dev/null #查找属于Root用户的具有Suid权限的文件
#‐user root:查找属于root用户的文件。
#‐perm ‐4000:查找具有suid、sgid或sticky位的文件。

Find命令实现Suid提权:

1
2
3
find / ‐user root ‐perm ‐4000 ‐exec ls ‐ldb {} \; #Find可以用来执行系统命令如果为find添加上suid特殊权限位,即可实现提权。
chmod u+s /usr/bin/find #加上权限
ls ‐al /usr/bin/find #查看find命令的权限

图片
接下来给find命令权限(此处需要root才能,所以意义不大还是要拿到root):
图片

1
find google ‐exec mkdir /opt/test \; #google可以是任何存在的文件,成功创建目录

图片

Linux Sudo提权

由于root账户密码的敏感性和root账号的无限制权限,一般会通过useradd创建一些普通用户, 只让他们拥有不完全的权限; 如有必要,再来申请执行一些root权限的指令。

sudo命令的执行流程是: 当前用户转换到root, 然后以root身份执行命令, 执行完成后, 直接退回到当前用户。

注意: 执行sudo时输入的密码, 是当前用户的密码, 并非root密码。

ubuntu桌面版默认禁止root账号,自然也不会开启root账号的远程登录(ssh登录)。

如果需要切换到root账号, 可以使用命令sudo ‐i, 然后输入自己的用户密码来从而切换成root身份。但如果使用命令su ‐ root来切换root身份就行不通,因为你输入的密码压根就不是root的密码。当然,你可以通过sudo passwd root修改root用户的密码从而解锁root用户,但这种方式并不被推荐。

Linux脏牛提权

脏牛漏洞(CVE‐2016–5195),又叫Dirty COW,存在Linux内核中已经有长达9年
的时间,在2007年发布的Linux内核版本中就已经存在此漏洞,在2016年10月18后
才得以修复,因此影响范围很大。

漏洞具体是由于get_user_page内核函数在处理Copy‐on‐Write的过程中,可能
产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区
域的机会。

修改su或者passwd程序就可以达到root的目的。

漏洞危害

低权限用户利用脏牛漏洞可以在众多Linux系统上实现本地提权

影响范围

内核版本低于以下版本也存在:
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

漏洞实操

首先需要一个低版本的Ubuntu:
图片
首先在kali上面扫描网段里面存活的主机,这里发现192.168.56.137:
图片
接下来扫描主机开启的服务,发现了三个端口,逐一查看:
图片
进入1898端口发现了可渗透界面:
图片
可以看到msf中已经有了很多的drupal漏洞:
图片
利用msf进行攻击:
图片
首先下载好脏牛漏洞的exp:
Exp项目地址:

这里利用upload上传exp到目标主机,然后利用python开启虚拟终端的环境:

1
python -c "import pty;pty.spawn('/bin/bash')" #pty是伪终端工具

利用脏牛漏洞成功进入root:
图片


渗透(4)
https://lan041221.github.io/7/
作者
l1nk
发布于
2024年9月8日
许可协议