敏 感 信 息 掃 描 工 具 使 用 對 比

0x00 前 言

滲 透 測 試 過 程 中 , 經 常 需 要 對 網 站 進 行 全 面 的 信 息 收 集 , 掃 描 網 站 是 否 存 在 敏 感 信 息 文 件 如 phpinfo 、 日 志 文 件 泄 漏 會 極 大的 方 便我 們 進 一 步 的 滲 透 測 試 , 特 別 是 對 於 一 些 403 網 站 , 通 過 爆 破 web 目 錄 和 文 件 的 方 式 , 對 於 測 試 網 站 有 極 大的 幫 助 。 php

近 期 在 使 用 敏 感 信 息 掃描 工 具 BBScan 、 dirsearch 、 opendoor 等 批 量 掃 描 網 站 時 遇 到 幾 個 問 題 , 在 此 記 錄 下 , 並 對 如 何 降 低 掃 描 工 具 的 誤 報 率 作 了 初 步 分 析 。python

0x01 批 量 掃 描 時 遇 到 的 問 題

BBScan

BBScan 是 一 個 迷 你 的 信 息 泄 漏 批 量 掃 描 腳 本 。 規 則 字 典 非 常 小 , 但 盡 量 保 證 準 確 和 可 利 用 性 。特 性web

  • 小 字 典
  • 能夠 自 動 掃 描 Target/Mask 網 絡 中 所 有 的 主 機
  • 誤 報 率 小

在 測 試 中 發 現 有 許 多 域 名 被 BBScan 判 斷 爲 無 效 域 名 , 但 實 際 上 這 些 網 站 是 完 全 能 夠 ping通 並 訪 問 的 。 sql

BBScan 中 引 入 了 dnspython 模 塊 , 用 於 域 名 的 DNS 解 析 。 判 斷 域 名 無 效 的 函 數 如 下 。 dom

進 一 步 測 試 發 現 是 由 dns 解 析 超 時 導 致的 。 jsp

考 慮 到 目 前 很 多 網 站 採 用 了 cdn 的 形 式 , BBScan 的 IP 掃 描 準 確 率 不 高 , 我 去 掉 了 domain_lookup 函 數 。 學習

dirsearch

dirsearch 基 於 python3, 擁 有 可 保 持 連 接 、 啓 發 式 檢 測 無 效 的 網 頁 、 請 求 延 遲 、 遞 歸 的 暴 力 掃 描 等 特 點 ui

批 量 掃 描 時 , 程 序 出 現 異 常 中 斷 。 問 題 出 現 在thirdparty/sqlmap/DynamicContentParser.py文 件 removeDynamicContent 函 數 , 在 使 用 re.sub 正 則 表 達 式 處 理 時 出 現 問 題 , 詳 情 : 」TypeError: a bytes-like object is required,not ‘str’ 「 。 我 對 處 理 正 則 表 達 式 時 添 加 了 異 常 處 理 , 以 便 程 序 出 現 異 常 情 況 時 能 繼 續 完 成 批 量 掃 描 , 如 下 所 示 。url


Dirsearch 的 誤 報 率 較高 , 返 回 字 節 數 相 同 且 有 多 個 敏 感 文 件 的 都 是 爲 誤 報 , 可 以 根 據 這 個 判 斷 條 件 降 低 誤 報 率 。 spa

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.當 命 中 規 則 時 會 再 一 次 進 行 返 回 包 長 度 的 檢 驗。

開了一個新羣,期待感興趣的小夥伴加入進來,一塊兒學習交流解決問題,吹水廣告勿擾
感興趣的小夥伴也能夠在評論去留言

相關文章
相關標籤/搜索