当前位置: 首页 > backend >正文

提权相关记录

Windows
potato本地提权
常见potato提权:BadPotato、EfsPotato、SweetPotato、JuicyPotato0、PrintNotifyPotato、RottenPotato
提权前置条件:拥有SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege权限其中一个。
可以通过命令whoami /priv或whoami /all进行查询。
● SeImpersonatePrivilege权限是本地管理员账户、本地服务账户、由SCM启动的服务才拥有的。
● SeAssignPrimaryTokenPrivilege一般只有SYSTEM才有。
Windows服务的登录账户
● Local System(NT AUTHRITY \ System)本地系统
● Network Service(NT AUTHRITY \ Network Service)网络服务
● Local Service(NT AUTHRITY \ Local Service)本地服务
**提权原理:**目的是将当前权限提升至System权限。
一系列提权手段
Origin Potato

RottenPotato && JuicyPotato
这两者通过DCOM call来使服务向攻击者监听的端口发起连接并进行NTLM认证(Windows操作系统的认证方式)。

Linux
SUID
SetUID是一种Linux的安全机制,用户在执行具有SUID权限文件的时候,会使调用者暂时获得 该文件所有者的权限。
注意
● 只有可执行文件才能设定SUID权限,非二进制文件设置SUID没有意义
● 命令执行者需要对该文件具有执行权限(x)才能使用
● SUID权限只在该程序执行过程中有效
常用搜索suid可执行文件命令(-u=s和-4000都表示具有suid权限)
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ; #使用ls -ldb列出详细信息

利用vim提权
vim -c ‘:!/bin/sh’

ubuntu@VM-8-8-ubuntu:~$ vim -c ‘:!/bin/sh’

sh-5.0$ ls
thinclient_drives
sh-5.0$ pwd
/home/ubuntu
sh-5.0$ whoami
ubuntu

-c参数用于在启动vim时,自动执行指定的vim命令,这里就会自动执行:!/bin/sh,让vim执行一个外部命令/bin/sh,并开启一个新的shell。由于vim具有SUID权限(比如root),这个shell也会以拥有者(比如root)的权限执行。
或者
vim anyFile
然后在末行输入
:!/bin/sh或:set shell=‘/bin/sh’+‘:shell’
然后回车即可输入命令

nano以root权限修改文件
nano
Ctrl+R
CTrl+X
也可以和vim一样,以root权限修改文件内容

利用awk执行系统命令
awk ‘BEGIN{system(“/bin/bash”)}’

more/less执行系统命令
当该命令具有SUID权限时
more /etc/passwd #需要查看一个比较大的文件,否则不能分页
在末行输入 !/bin/sh 即可执行命令

利用systemctl提权

利用nmap提权(过时)
适合早期的nmap版本nmap2.02至5.21
nmap --interactive 进入交互模式

在交互模式提权

nmap> !sh
sh-3.2# whoami
root

Mysql
UDF提权
UDF(User Defined Funtion,用户自定义函数),通过添加新的函数,对mysql服务器进行功能扩充。
这里以linux为例,windows类似。
提权前置条件:
● 所拥有的账户具有可写入的权限,即secure_file_priv的值为空。
○ 可以通过命令:show global variables like ‘%secure%’;进行查看,如果secure_file_priv字段为空则表示没有限制,如果为NULL则表示不允许,如果返回路径则表示在该路径下允许;
漏洞原理:
攻击者可以利用 MySQL 的 SELECT … INTO OUTFILE 语句将恶意的 .so 文件(或其他文件类型的动态链接库)写入服务器文件系统的任意位置。然后,攻击者可以通过 CREATE FUNCTION 语句将该恶意文件作为 UDF 插件加载到 MySQL 中。

UDF提权留下痕迹位置:
1、异常的.so文件:在进行 UDF提权时,攻击者通常会将恶意共享库文件(.so文件)放在 MySQL 插件目录中。这个目录的默认路径通常是 /usr/lib/mysql/plugin/,但具体路径取决于 MySQL 的安装和配置。(一般来说就是这个目录,没人闲着会去移动)
select @@plugin_dir – 可以通过这个命令查看插件目录地址
使用该目录原因:
● usr/lib/mysql/plugin/ 是 MySQL 的默认插件目录,MySQL 有权限加载和执行该目录中的共享库文件。
● 插件必须放置在 MySQL 的插件目录中,才能被 MySQL 识别和加载。攻击者需要将恶意 .so 文件放入该目录,实现提权。
● 由于 MySQL 服务运行时需要访问插件目录,通常该目录的权限设置相对宽松,允许 MySQL 服务有读写权限。
2、Mysql日志文件:检查如 mysql.log 或 error.log中是否有异常的文件操作记录或 CREATE FUNCTION 语句。
3、Mysql函数表:检查 mysql.func 表中是否有异常的 UDF 函数,SELECT * FROM mysql.func;

典型UDF提权攻击流程:
1、编写恶意插件:编写一个.so文件,其中包含恶意代码。
2、上传恶意插件:利用Mysql的文件上传功能,将写好的插件上传到服务器某个位置(通常是/usr/lib/mysql/plugin)。
select ‘’ into outfile ‘/path/to/your/udf.so’;
3、创建UDF函数:使用 CREATE FUNCTION 命令将这个共享库文件加载为 MySQL 的 UDF 函数。
CREATE FUNCTION do_system RETURNS INTEGER SONAME ‘udf.so’;
4、命令执行:调用这个 UDF 函数执行系统命令。
SELECT do_system(‘id’);

检查和防护措施
1、检查是否存在异常的UDF函数
SELECT * FROM mysql.func;
2、限制secure_file_priv的路径,即限制Mysql的文件操作范围:将secure_file_priv设定为特定的路径。
3、移除掉可疑的UDF函数
DROP FUNCTION IF EXISTS do_system;
4、权限控制:严格控制数据库用户的权限,避免赋予不必要的权限,特别是文件操作和创建函数的权限。
5、日志监控:定期检查 MySQL 日志文件,关注异常的文件操作和函数创建活动。

http://www.xdnf.cn/news/5702.html

相关文章:

  • Dsp38335利用Bootloader实现在线升级的技术原理
  • Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
  • 旋转图像算法讲解
  • Hive原理
  • python打包成exe
  • LiveData:Android响应式编程的核心利器
  • 大规模容器集群怎么规划
  • 段错误(Segmentation Fault)总结
  • 病毒传播模拟:多智能体系统与时空可视化引擎
  • 02_线性模型(回归分类模型)
  • JAVA实战开源项目:医院挂号就诊系统 (Vue+SpringBoot) 附源码
  • web:InfiniteScroll 无限滚动
  • vue-i18n 优化
  • 软件安全(三)实现后门程序
  • hive两个表不同数据类型字段关联引发的数据倾斜
  • vim中的查找
  • Edge Remover v18.7 绿色版:轻松卸载 Edge 浏览器,彻底清理残留数据
  • Kotlin跨平台Compose Multiplatform实战指南
  • linux服务器免密脚本分享
  • 深入理解 Webpack 核心机制与编译流程
  • Ubuntu网络部署LNMP环境
  • Linux文件编程——write函数
  • FastMCP v2:构建MCP服务器和客户端的Python利器
  • bootstrap table 添加跳转到指定页的功能(仅自己可见)
  • nestjs[一文学懂如何在nestjs中对npm功能包封装]
  • Spring AI系列——使用大模型对文本进行内容总结归纳分析
  • Android中ConstraintLayout布局定位使用详解
  • Cabot:开源免费的 PagerDuty 替代品,让系统监控更简单高效
  • K8S已经成为了Ai应用运行的平台工具
  • 架构思维:通用架构模式_系统监控的设计