提权是将服务器的普通用户提升为管理员用户的一种操作,提权常常用于辅助旁注攻击。有时旁注攻击成功的关键就是看服务器提权成功与否。
溢出提权是指攻击者利用系统本身或系统中软件的漏洞来获取权限,其中溢出提权又分为远程溢出与本地溢出。
攻击者在攻击目标服务器时,使用远程溢出这种攻击手段是比较少的,服务器通常都打了漏洞补丁。这样就的溢出程序一般不会再起作用,而新的溢出漏洞少之又少,可以说远程溢出已经“日落西山”。
远程溢出的另一种表现则是针对服务器已经安装好的组件溢出,比如服务器安装了office,攻击者也可能会通过哦Office进行远程溢出操作。
本地溢出相对于远程溢出来说,成功率更高,也是主流的一种提权方式。本地溢出提权时,攻击者首先需要有服务器一个用户,且需要有执行权限的用户才可能发起提权。攻击者通常会向服务器上传本地溢出程序,在服务器端执行,如果系统存在漏洞,那么将会溢出root权限。
一、Linux
1.查看Linux版本
执行"uname -a"命令获取Linux版本Linux平台与Windows平台的本地溢出大同小异,都有一个共同的特点:通过执行溢出程序来获取root权限。
二、windows
1.探测脚本信息
在windows下进行本地提权时,重点还是看用户是否可执行溢出程序,也就是执行权限。在ASP中依靠“wscript.shell”命令执行组件,而ASP.NET脚本语言中依靠的是“.NET Framework”,在JSP中却是依靠“JVM”来调用系统命令。
ASP.NET在多数情况下都可以调用系统命令。如果服务器支持JSP脚本,一般都可以直接调用系统命令,很多时候JSP是以administrator权限来运行的。
2.执行简单的系统命令
在ASP脚本语言中,一般必须支持“wscript.shell”组件才可以执行系统命令,通过Shell可以查看服务器是否存在此组件。
大多数服务器都会禁止调用“cmd.exe”,不过没关系,需要执行的是本地溢出程序。
Exp所在目录必须有可执行权限,第三方软件的日志目录一般都可能拥有可写、可执行权限。
管理员禁止了“wscript.shell”组件,攻击者此时往往会上传“.aspx”的Shell来执行命令。
虽然可以执行系统命令,但多数情况下不能调用类似“net user 1 1/add”这样的命令,否则也没有提权之说。拥有执行权限,重要的是执行本地溢出程序。
备注:提权常用的windows命令
net user temp$ 123456 /add
net localgroup administrators temp$ /add