[渗透测试] 系统提权

提权是将服务器的普通用户提升为管理员用户的一种操作,提权常常用于辅助旁注攻击。有时旁注攻击成功的关键就是看服务器提权成功与否。
溢出提权是指攻击者利用系统本身或系统中软件的漏洞来获取权限,其中溢出提权又分为远程溢出与本地溢出。
攻击者在攻击目标服务器时,使用远程溢出这种攻击手段是比较少的,服务器通常都打了漏洞补丁。这样就的溢出程序一般不会再起作用,而新的溢出漏洞少之又少,可以说远程溢出已经“日落西山”。
远程溢出的另一种表现则是针对服务器已经安装好的组件溢出,比如服务器安装了office,攻击者也可能会通过哦Office进行远程溢出操作。
本地溢出相对于远程溢出来说,成功率更高,也是主流的一种提权方式。本地溢出提权时,攻击者首先需要有服务器一个用户,且需要有执行权限的用户才可能发起提权。攻击者通常会向服务器上传本地溢出程序,在服务器端执行,如果系统存在漏洞,那么将会溢出root权限。

一、Linux

1.查看Linux版本

执行"uname -a"命令获取Linux版本
比如可能会返回“Linux java.pumo.com.tw2.6.9-11.ELsmp #1 SMP Fri May 20 18:26:27 EDT 2005 i686 i686 i386 GNU/Linux”
2.查看操作系统
执行"cat /etc/issue"命令查看操作系统的版本信息
可能返回的结果为“Red Hat Enterprise Linux AS release 4 (Nahant Update 1)”
备注:/etc/issue中的内容可以手工更改,因此反馈的信息不一定准确。
3.本地接收服务器端数据
使用NC监听本地端口“8888”,等待服务器端反向连接。
nc -l -n -v -p 8888
注:攻击者的计算机IP必须是外网,否则需要端口转发。
4.服务器端Shell(执行命令通道)反弹
可以使用脚本木马自带的反弹脚本
5.提权
查找相应的溢出程序来获得root权限(一般都是C代码),大多数都是本地提权,将代码下载到机器上,执行即可。

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

你可能感兴趣的:(渗透测试)