0x00 前 言
渗 透 测 试 过 程 中 , 经 常 需 要 对 网 站 进 行 全 面 的 信 息 收 集 , 扫 描 网 站 是 否 存 在 敏 感 信 息 文 件 如 phpinfo 、 日 志 文 件 泄 漏 会 极 大的 方 便我 们 进 一 步 的 渗 透 测 试 , 特 别 是 对 于 一 些 403 网 站 , 通 过 爆 破 web 目 录 和 文 件 的 方 式 , 对 于 测 试 网 站 有 极 大的 帮 助 。
近 期 在 使 用 敏 感 信 息 扫描 工 具 BBScan 、 dirsearch 、 opendoor 等 批 量 扫 描 网 站 时 遇 到 几 个 问 题 , 在 此 记 录 下 , 并 对 如 何 降 低 扫 描 工 具 的 误 报 率 做 了 初 步 分 析 。
0x01 批 量 扫 描 时 遇 到 的 问 题
BBScan
BBScan 是 一 个 迷 你 的 信 息 泄 漏 批 量 扫 描 脚 本 。 规 则 字 典 非 常 小 , 但 尽 量 保 证 准 确 和 可 利 用 性 。特 性
-
小 字 典
-
可以 自 动 扫 描 Target/Mask 网 络 中 所 有 的 主 机
-
误 报 率 小
在 测 试 中 发 现 有 许 多 域 名 被 BBScan 判 断 为 无 效 域 名 , 但 实 际 上 这 些 网 站 是 完 全 能 够 ping通 并 访 问 的 。
BBScan 中 引 入 了 dnspython 模 块 , 用 于 域 名 的 DNS 解 析 。 判 断 域 名 无 效 的 函 数 如 下 。
进 一 步 测 试 发 现 是 由 dns 解 析 超 时 导 致的 。
考 虑 到 目 前 很 多 网 站 采 用 了 cdn 的 形 式 , BBScan 的 IP 扫 描 准 确 率 不 高 , 我 去 掉 了 domain_lookup 函 数 。
dirsearch
dirsearch 基 于 python3, 拥 有 可 保 持 连 接 、 启 发 式 检 测 无 效 的 网 页 、 请 求 延 迟 、 递 归 的 暴 力 扫 描 等 特 点
批 量 扫 描 时 , 程 序 出 现 异 常 中 断 。 问 题 出 现 在thirdparty/sqlmap/DynamicContentParser.py文 件 removeDynamicContent 函 数 , 在 使 用 re.sub 正 则 表 达 式 处 理 时 出 现 问 题 , 详 情 : ”TypeError: a bytes-like object is required,not ‘str’ “ 。 我 对 处 理 正 则 表 达 式 时 添 加 了 异 常 处 理 , 以 便 程 序 出 现 异 常 情 况 时 能 继 续 完 成 批 量 扫 描 , 如 下 所 示 。
Dirsearch 的 误 报 率 较高 , 返 回 字 节 数 相 同 且 有 多 个 敏 感 文 件 的 都 是 为 误 报 , 可 以 根 据 这 个 判 断 条 件 降 低 误 报 率 。0x02 敏 感 文 件 扫 描 思 路
很 多 web 扫 描 器 的 开 始都 是 对 url 进 行 网 站 目 录 和 文 件 扫 描 , 然 后 再 结 合 爬 虫 一 起 爬 一 下 。 目 前 敏 感 信 息 扫 描 工 具 的 一 般 逻 辑 是 :
取一个不可能存在的url,判断是不是存在404的状态码。存在的404话,下面的判断只要根据状态码来判断是否存在就好了。不存在的话走下面2的逻辑。获取该不存在url的相应内容,作为一个404不存在的页面标示,接下去的扫描如果获取到页面不和这个404表示一样的就认为是200的存在页面。
这 个思 路 在 大 部 分 情 况 下 面 用 。 但 是 有 些 站 点 , 你 会 发 现 扫 到 一 堆 200 的 误 报 。 分 析 为 什 么 : 在 逻 辑 1 中 , 404 的 判 断 取 一 个 不 存 在 的 url 是 不够 的 , 你 需 要 取 多 个 , 因 为 有 的 站 点 xxxx.php 是 404 , 而 xxxx.jsp 就 变 成 200 了 。 在 逻 辑 2 中 , 有 种 情 况 是 这 个 404 的 页 面 是 会 不 断 变 化的 , 比 如 淘 宝 的 404 页 面 中 , 下 面 会 出 现 不 同 的 链 接 商 品 推 荐 。 这 样 就 会 产 生 一 大 堆 的 误 报 。
BBScan
BBScan 提 供 了 “-nn, –no-check404 No HTTP 404 existence check” 不 检 测 网 站 404 页 面 选 项 , 默 认 是 会 先 检 测 404 页 面 的 , 正 如 上 面 所 说 , 访 问 一 个 不 存 在 的 链 接 “BBScan-404-existence-check”。
不 检 测 404 页 面 时 , 通 过 返 回 状 态 码 404 作 为 404 页 面 判 断 。 awvs 的 网 站 目 录 和 文 件 扫 描 思 路 awvs 的 目 录 和 文 件 扫 描 姿 势 : ( Backup_File.script, Sensitive_Files.script, Possible_Sensitive_Directories,Possible_Sensitive_Files )在 Backup_File 和 Sensitive_Files 中 看到 能 用 正 则 匹 配 的 , 先 用 规 则 来 匹 配 , 这 个 比 较 准 确 , 误 报 低 。 Backup_File 中 我 们 发 现 , awvs 的 再 解 决 逻 辑 2 中 出 现 的 问 题 时 候 , 用 了一 个 小 的 tip: 在 发 现 页 面 内 容 和 404 标 示 不 一 样 的 时 候 , 再 去取 了 一 个 不 存 在 的 url2 获 取 新 的 404 标 示 , 然 后 判 断 两 个 标 示 是 不 是 一 样 ,一 样 的 话 说 明 这 个 200 扫 描 没 用 问 题 , 从 而 去 掉 这 个 误 报 。 在 Possible_Sensitive_Directories ,Possible_Sensitive_Files 中 , 我 们 发现 awvs 去 掉 了 逻 辑 2 。 只 对 存 在 404 的 url 进 行 目 录 和 文 件 扫 描 。 而 目 录 扫 描 和 文 件 扫 描 的 逻 辑 不 一 样 的 , 我 们 发 现 当 一 个 文 件 存 在 时 候返 回 时 200 , 但 是 当 一 个 目 录 存 在 的 时 候 确 是 302 跳 转 , 我 们 需 要 匹 配 http 头 的 Location 进 行 判 断 。 开 源 扫 描 工 具 大 多 数 使 用 了 python的 requests 库 , 这 个 库 默 认 是 会 进 行 url 跟 随 跳 转 的 。 所 以 他 们 没 有 必 要 区 分 扫 描 目 录 和 文 件 扫 描 。 如 果 你 把 requests 中 设 置 了 allow_redirects =False , 那 你 就 要 去 自 己 匹 配 http 头 的 Location 关 键 字 。
0x03 降 低 误 报 率 的 一 些 方 法
1.对 多 个 返 回 数 据 包 大 小 一 样 的 并 超 过 一定 数 量 , 舍 弃 这 些 数 据 ;
2.当 命 中 规 则 时 会 再 一 次 进 行 返 回 包 长 度 的 检 验。
开了一个新群,期待感兴趣的小伙伴加入进来,一起学习交流解决问题,吹水广告勿扰