iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0

Input (中篇)

接續上篇,今天來介紹 "處理來自不明來源的 Input":
https://ithelp.ithome.com.tw/upload/images/20230917/201071977O0yD2o9di.png

處理來自不明來源的 Input

針對不明來源 (潛在攻擊者) 的處理:

  • 可能採取的手段 - 1:

    • 在 lower-level (ex. linux) 封鎖特定 IP,會比在後端程式碼中額外設定還要有效、快速 (優先過濾掉惡意IP)。

    • 要採用 block IP 之前,我們需要思考需求:

      假設今天是想要針對持有特定 static IP address (他們無法改變它) 的使用者,我們採取 block IP 的策略或許會是一個有效的方式。

      但是,對於有心的 hacker ,他們有可能用很多不同的 IP 來進行攻擊,所以在這種情況下, block IP 並非是百分之百有效率的一種防禦方式。

    • (針對 Linux) 如何在 linux 阻止來自特定 remote host 的傳入的 connection流量 ?

      使用 iptables 來管理要流入/流出資料的 IP:

      • 此處範例展示如何 block 住特定的 IP:

        iptables -A INPUT -s xxx.xx.xx.xx -j DROP
        iptables -A OUTPUT -d xxx.xx.xx.xx -j DROP
        
      • 若你想要寫一個黑名單,並且封鎖他們,可以參考以下範例:

        1. 建立一個黑名單文字檔
          # vi /root/ip.blocked
          
        2. 加入你想要封鎖的 IP
          202.54.20.22
          202.54.20.1/24
          
        3. 寫一個 script 讓你針對所有黑名單 IP 執行 block 的動作
          BLOCKDB="/root/ip.blocked"
          IPS=$(grep -Ev "^#" $BLOCKDB)
          for i in $IPS
          do
          iptables -A INPUT -s $i -j DROP
          iptables -A OUTPUT -d $i -j DROP
          done
          

        (參考資料: https://www.cyberciti.biz/tips/howto-block-ipaddress-with-iptables-firewall.html)

  • 可能採取的手段 - 2:

    • 設計一個安全的流程,來辨識是否為真的用戶:
      • 設定密碼輸入錯誤上限

      • MFA

        何謂 MFA ?

        MFA 是一種身份驗證系統,需要多個不同的身份驗證因素才能成功進行身份驗證。多因素身份驗證可以使用多因素身份驗證器或通過提供不同因素的身份驗證器的組合來執行。

        其中目前主要的 MFA 身份驗證類型為:

        • 知識:
          ex. 使用者名稱、密碼
        • 持有的物件:
          ex. 獨立裝置、安全 token、ID 卡 (身分證)、提款卡等
        • 生物特徵:
          ex. 指紋辨識、虹膜辨識等生物特徵辨識

        使用 MFA 需要注意的攻擊:

        • Session 劫持 (Session hijacking)
          根據 OWASP 對於 Session hijacking 的定義:

          The Session Hijacking attack compromises the session token by stealing or predicting a valid session token to gain unauthorized access to the Web Server.

          Session hijacking 是一種透過 "偷取 session token" 或 "預測 session token" 而來拿到未獲得原用戶授權的登入門票的一種方式。

          而攻擊方獲得 Session 的方式可能會是:

          • 預測 Session ID (Session Prediction)
          • 劫持 Session ID (Session Hijacking)
          • 固定 Session ID (Session Fixation)
        • MFA 疲勞攻擊 (MFA fatigue attack) (或稱作 MFA 轟炸 或是 MFA 垃圾郵件)

          MFA 是一種社交工程的網絡攻擊策略,攻擊者會反復向目標受害者的電子郵件、電話或註冊設備推送 雙因素驗證(2FA) 的請求。

          • 目標:

            強迫受害者通過通知確認其身份,從而驗證攻擊者嘗試進入其帳戶或設備的身份。

          • 要達成攻擊目標前的準備:

            若要達成目標,需要先啟動 MFA 推送通知,為了啟動通知,攻擊者必須首先以目標用戶身份登錄

            要啟動 MFA 推送通知,攻擊者必須首先以目標用戶身份登錄。接著,透過不斷登入來推送 "非常多" 的 MFA 推播通知,直到用戶崩潰並按下允許登入為止。

      • 良好的 Session 管控

        延續先前的 MFA 多重因子驗證,我們可以發現,儘管 MFA 為登入增加了一道安全門鎖,若攻擊者獲得 Session,我們仍有可能會讓 MFA 被略過,而讓攻擊者有機可趁。

        若要良好地進行 Session 控管,我們需要考慮以下幾點:

        1. 避免 Session 被存放在不安全的地方

          • 不要透過 Get/Post variables 來傳送你的 session ID

            在查詢字符串或 POST 請求中傳遞 Session ID 是有風險的,
            因為它不僅可以製作惡意 URL,也可以通過以下方式洩露 Session ID:

            • 如果用戶點擊出站鏈接(Referer 標頭將描述用戶瀏覽的位置)。
            • 在瀏覽器歷史記錄和 bookmarks 中。
            • 在您的 Web 服務器和任何代理服務器上的 log 中。

            比較好的做法:
            Session ID 比較好的傳送方式是透過 HTTP cookies

        2. 在驗證時,重新產生你的 Session ID:

          Session fixation attacks 可以通過簡單地在用戶登錄時重新生成 Session ID 來防範。

        3. 確保您的 Web Server 只接受服務器生成的 Session ID。

          不過,需要注意:
          就其本身而言,這並不能解決 Session Fixation 漏洞。 Hacker 可以輕鬆獲得服務器生成的新 ID,並通過精心設計的 URL 將其傳遞給受害者。

        4. 定期更換 Session ID 作為第二層防禦,以防它們被洩露。

        5. 網站上的 logout 功能應將 Session ID 標記為 Expired。

        6. 考慮強制您的用戶重新登錄,如果他們從單獨的網站(例如 email)訪問您的網站。


今日小心得

感覺文章越寫越要探究的就越多~收穫滿滿!!


Reference


上一篇
初探 input !
下一篇
Input (下篇)
系列文
從自建漏洞中學習 - 一起填坑吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言