白帽子讲web扫描 读书笔记

白帽子讲web扫描 读书笔记

漏洞感知
漏洞分析
漏洞响应
漏洞沉淀
纵深防御

建立企业专属有效的扫描体系

第一章 扫描器基础

每个web漏洞都有自己的常见签名特征,可以通过对web应用发起http(s)请求的方式,通过其响应
结果进行判断。

线上监控:对于已有漏洞的反复监控
线上预警:对于0Day漏洞的快速检测

检测一个web漏洞主要思考两部分,即http(s)的请求,和对其响应结果的识别

pyQt
QtWebket
Ghost.py

第二章 爬虫基础

url产生的标签

标签 属性
a,link href
script,img src
form action
object archive,codebase,data,usemap

识别超链接

例子 解决办法
https://www.chaojilaji.cn/ 直接获取
//www.chaojilaji.cn/ 获取后添加协议
index.html 相对路径,获取’该页面’的前缀
#top 锚点,可不管

http认证方式:除常见的对参数进行验签,调用方添加Nonce随机值之外;还可以让被调用方生成nonce给
调用方。

爬虫在遇到set-cookie字段的时候需要处理cookie

爬虫策略

名称 算法表现 缺点
广度优先策略 逐层爬取 上一层的全部被爬取才能爬取下一层
深度优先策略 垂直爬取 递归爬取,速度慢
最佳优先策略 改进版逐层爬取 网页分析算法比较复杂,不好评价

页面跳转

类型 表现形式
客户端跳转 301跳转(代表永久移除),302跳转(临时性跳转)
服务端跳转 用户无感知

识别错误页面:400+,500+;错误页面一般返回的状态码为301/302/404等

区分url的意义,去重:使用布隆过滤器或哈希表去重。因为漏洞检测主要是针对链接和参数,参数的
取值是没有意义的,所以在有参数的情况下,可以抹去参数的值然后进行存储或者hash运算。

页面相似算法

算法名 实现细节 缺点
编辑距离 由一个串转成另一个串所需的最少编辑次数(支持替换插入删除) 暂无
simhash 为每个文档创建64位的字节指纹,算海明距离是不是小于3(即异或后算1的个数) 暂无

区别出静态资源文件:rar/zip/ttf/png/gif

第三章 爬虫进阶

对一个url进行拆分

名称 例子 备注
协议 http(s)
主机名 www.chaojilaji.cn
端口 8080
根域名 chaojilaji.com
文件名 index.html
扩展名 html
请求参数 a=1&b=2&c=3 标识的时候可以去掉取值

自动填表
建立常见表单字段与内容的对应关系,并生成表单知识库

url去似去含:协议,主机名,端口,资源路径,参数

识别404页面:建立404页面知识库,从状态码和页面内容两个维度进行准确识别

ajax中,一个页面有不同的状态,每个状态代表着不同的页面,需要爬取状态。
遍历当前页面中所有的状态,才能完整地获取当前页面中所有的Url。核心在于页面事件的触发和
页面状态的保持。

存在的难点 解决方案 备注
执行javascript代码 puppeteer google headless框架支持
页面dom树操作 对dom树解析,并进行动态的操作 遍历操作
页面事件触发 利用puppeteer对页面事件进行模拟触发 遍历
页面状态保持 记录页面状态
重复事件识别 记录和识别重复的事件,避免重复触发和爬取

页面事件触发:可能存在事件触发栈,即事件内部还需要有事件进行处理,也就是事件深度

按不同的标签进行模拟事件触发,逐层循环遍历a标签

第四章 应用指纹识别

指纹分类

类型 描述 备注
网络层指纹 网关、防火墙、VPN、CDN、DNS、路由器等基础设施指纹
主机层指纹 操作系统信息、软件防火墙、服务的指纹
服务层指纹 web服务、FTP服务、SSH服务等
应用层指纹 框架
语言层指纹 识别是那种开发语言

获取指纹的特征

类型 描述 备注
内容特征 在http响应的正文中 LNMP识别:利用对探针文件的内容特征进行匹配
页面特征 页面内容相对固定,根据页面内容的hash值来确定 利用thnkphp的Logo对其进行识别
headers特征 在响应的消息报头中增加自己的报头信息 使用nginx时,响应的header中的server会带有nginx字样

第五章 安全漏洞审计

告诉扫描器如何去检测和审计漏洞

审计漏洞的步骤

1、分析漏洞出现的场景
2、构造出可以覆盖所有漏洞场景的扫描载荷
3、将其转化为扫描器的检测脚本并生成最终的扫描签名

扫描器通过安全漏洞审计流程不断学习新的漏洞和丰富扫描知识库

安全漏洞分类

通用型漏洞
Nday/0day漏洞:前者已经发布补丁的漏洞,后者未发布补丁

sql注入漏洞
场景:通过精心设计的sql,改变原本sql的执行目的
检测方法

类型 方法 备注
页面比较法 构造“恒真”或“恒假”两种状态,比较两种状态的执行结果产生的页面的相似度
时间比较法 向数据库注入时间延迟函数,与政策请求的响应时间进行比较

通过存储的url,利用对参数构造检测载荷,发起请求,然后进行比较的方法,实现对sql注入漏洞的判定

xss跨站漏洞

类型 描述 备注 检测原理
反射型 恶意数据在链接里,需要受害者的参与 与存储型的区别就是,只生效一次 构造扫描载荷,检查输出的内容
存储型 将恶意数据注入服务端并存储起来 - 同上
DOM型 修改dom树结构

命令执行漏洞

符号 作用 备注
管道符号 串联执行,想象成数据流在这几个命令中串联流通
连接符号( 连接多个命令
逻辑与符号 多命令,只有第一个命令成功,才会执行第二个命令
逻辑或符号 多命令,只有第一个命令失败,才会执行第二个命令

文件包含漏洞
利用代码中的包含指令,例如:include、import等,对引入的文件进行篡改,替换我恶意构造的
具有攻击性的代码段,从而达到攻击的目的。

敏感文件泄漏
rar/zip/bak/swp/old等

检测原理

1、压缩、备份类文件检测
构造url,向目标请求该url,根据http响应中的状态码及文件类型进行判断
2、版本类文件检测

Nday/0day
需要强大的漏洞知识库做支撑

第六章 扫描器进阶

信息收集

IP信息:获取目标的IP或IP段信息,并收集这些IP段对外提供的端口,进而得到其服务
子域收集:即对子域名进行扫描
敏感信息:敏感文件,邮箱账号密码、数据库账号密码,服务器ip和私钥
指纹信息
url超链接信息

漏洞审计

漏洞测试:即利用扫描器进行扫描
漏洞验证:避免误报,提高准确率

你可能感兴趣的:(网络安全)