Mark Ku's Blog
在 ChatGPT 開啟在 Claude 開啟

防範 WebShell Attack 需移除不必要的 ASPX 腳本引擎,並審查 IIS 目錄權限,禁止繼承 D 槽權限,僅保留讀取權限。定期進行 Windows 更新,可參考 Windows 更新導覽網站查詢重大資安漏洞。

資安問題處理

在調查某次資安的事件中,發現駭客在伺服器留下了後門腳本,網站的js也被竄改過,導到假的flash 網站,經調查,我懷疑遭到Web shell attack。

什麼是Web shell attack

Web shell攻擊者上傳與執行惡意腳本的流程圖
Web shell攻擊者上傳與執行惡意腳本的流程圖

接著參考封面上圖,這些駭客可能透過,

微軟產品的漏洞(Windows 、IIS 、Net Framework)或是員工電腦中毒被當跳版等等方式,

及Web server 寫入權限過大,

將寫好的後門腳本,

放到我們的網頁服務器中,

因為網頁腳本認得這個腳本,

一旦打開了網站就會被執行了。

疑問

站在開發人員角度思考,腦袋跑出很多疑惑 ?

為什麼有程式權限修改我們程式?

為什麼這個腳本為什麼還能伺服器運行?

現在公司不是都是MVC 怎麼還有aspx 引擎?

模擬情境

接下來參考了很多資料,我做了一個Poc腳本(Aspx),去模擬當時的情境, 因為無法模擬怎麼丟進去的,透過手動上傳方式來模擬,發現確實可以用程式任意寫入一個檔案。

<%@ Page Language="C#" %>
<%@ Import Namespace="System"%>
<%@ Import Namespace="System.IO"%>
<%@ Import Namespace="System.Text"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">


        protected void Page_Load(object sender, EventArgs e)
        {
			
			  string currentdir =  HttpContext.Current.Server.MapPath("~")
              string path = currentdir + "/HackTest.txt";


            
                // Create the file, or overwrite if the file exists.
                using (FileStream fs = File.Create(path))
                {
                    byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
                    // Add some information to the file.
                    fs.Write(info, 0, info.Length);
                }

                // Open the stream and read it back.
                using (StreamReader sr = File.OpenText(path))
                {
                    string s = "";
                    while ((s = sr.ReadLine()) != null)
                    {
                        Console.WriteLine(s);
                    }
                }
			
		}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>

</body>
</html>

☆★最後參考保哥 blog 文章發現,IIS預設目錄是安全的,但我們移到X糟,就繼承了X糟額外的權限,最後我們IIS的目錄發現確實是能夠寫入及修改檔案的。

最後我的解決方案

  1. 從Web config 移除不必要的網頁腳本 (ASPX 、ASP .... )
  2. Review IIS目錄權限,並禁止繼承D磁碟糟權限,限制User只有看的權限,不能夠執行腳本及寫入
  3. Review IIS Request Filtering 設定
  4. Windows update 每半年至少做一次更新,有微軟網站公佈的重大資安漏洞,就得提前做。可以由Windows 更新導覽網站去查詢有沒有重大資安漏。

參考資料

IIS 執行的身份識別與 Windows 權限控管不是你想的那樣
How to Secure a Site in IIS
政府組態基準(GCB)IIS 8.5
政府組態基準導入與檢測 工具
.NET Security Application/Web Development - Overview
.NET Security Application/Web Development - Overview - 2
.NET Security Application/Web Development - Overview - 3
.NET Security Application/Web Development - Overview - 3

作者

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··640

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··549

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··329

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··264

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··230

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··220

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

讀者也在看