[Network] 10. 常見的駭客攻擊方式

 · 3 mins read

SQL Injection 1

  • 簡稱 SQL 攻擊或隱碼攻擊,是發生於應用程式與資料庫層的安全漏洞。
  • 在輸入的字串之中 夾帶 SQL 指令,在設計不良的程式當中忽略了字元檢查,那麼這些夾帶進去的惡意指令就會被資料庫伺服器誤認為是正常的 SQL 指令而執行,因此遭到破壞或是入侵。

三種較常見的 SQL injection 攻擊手法

1. Authorization Bypass:

SQL 語法上的漏洞,藉由特殊字元,改變語法上的邏輯,駭客就能取得資料庫的所有內容,當然也包含了會員的帳號,密碼。

  • 因為 /* 在 MySQL 語法中代表註解的意思,所以 /* 後面的字串通通沒有執行,而這句判斷式「1=1」永遠成立,駭客就能登入此網站成功。

      select * from members where account='$name' and password='$password'
      select * from members where account='' or 1=1 /*' and password=''
    
  • SQL 註解的語法有以下三種,不同的 SQL 版本,會吃不同的語法。

      「/*」 MySQL
      「--」 MsSQL
      「#」 MySQL  #對於browser來說是有意義的,那是錨點的意思,所有必須先透過Url Encode後的代碼%23來代替。
    


    1

1

2. Injecting SQL Sub-Statements into SQL Queries:

可透過網站的輸入欄位,上傳惡意的 SQL 代碼,使得 SQL 執行時發生管理員未預見的結果,而將資料庫的內容擷取出來。

  • 可以在注入惡意的 SQL 的語法去改變資料庫:
    • 在 URL 中在 productid=123 後面加上一個分號 ;,並加上 DROP TABLE Products 這個 sub command 會命令 SQL server 將 Products 這個 Table 刪除掉。

        http://www.mydomain.com/products/products.asp?productid=123; DROP TABLE Products
      
  • 探索其他 table 中的資料:
    • 其中 UNION 能將兩個 SELECT 的結果用一個結果集呈現出來,而第二個 SELECT 是將 USERS 這個 Table 的 Username 與 Password 呈現出來,以竊取資料庫中存放的所有使用者的帳號密碼。

        http://www.mydomain.com/products/products.asp?productid=123 UNION SELECT Username, Password FROM USERS
      

3. Exploiting Stored Procedures:

  • Stored Procedures(預存程序)是將又臭又長又常用的 SQL 語法寫成一組程序並儲存起來,以供後續呼叫相同程序時不必再將完整個 SQL 語法重打一次,攻擊者亦可透過呼叫這些 Stored Procedures 進而對 DataBase 進行攻擊:

      SomeAsp.asp?city=pune';EXEC master.dbo.xp_cmdshell' cmd.exe dir c:
    
    • 透過 EXEC 去執行 master.dbo.xp_cmdshell 這個預存程序,並帶一參數 cmd.exe dir c: 代表想讓預存程序執行的內容。

防護方式

  • 過瀘字串:過瀘「’ “ 」等字串(將單引號字元前加上跳脫字元)。
  • 使用 Regular expression:驗證過濾輸入值與參數中惡意代碼,將輸入值中的單引號置換為雙引號。
  • 檢查變數型態:「數字、字元、字串」。
  • 限制輸入:輸入字元格式並檢查輸入長度。
  • 密碼加密:會員的密碼最好是經過加密。
  • 資料庫權限:資料庫設定使用者帳號權限,限制某些管道使用者無法作資料庫存取。



XSS 攻擊 1

  • 全名是 Cross Site Scripting ,中文又可以稱為「跨網站指令碼攻擊」。
  • 利用惡意的程式碼,將這些程式碼輸入至網頁內容,常用的程式語言是 Javascript,只要使用 HTML 的 <script> 標籤,就可以在裡面撰寫一些 JavaScript 的程式,讓網頁具有動態、互動效果:

      <script> alert('You have been hacked'); </script>
    
  • 將網頁使用釣魚郵件或用社群網站等媒介散佈,在第三方的網站中植入有轉址的語法,使得使用者點擊連結,將被害人導至有毒的網頁,就會受到惡意程式碼的攻擊;文章內容包含 html 語法語法,會直接 將網頁導向有病毒的網址,凡是連到這個網頁的使用者,都有中毒的風險:

      <script>
          window.location.href="有病毒網址";
      </script>
          <a href="javascript:alert(1)" onclick="alert(1)">XSS</a>
          <img src="" onerror="alert(1);">
    

  • 將有害的程式,殖入第三方的網頁中,再讓受害人不知不覺的進入該網,當 End-user 點擊帶有惡意代碼的進結,Browser 將被導到駭客指定的網頁,並且在 Browser 中執行有害的程式,藉此竊取用戶密碼或個人隱私。 ​

  • 當瀏覽者看到此網頁時,特定的腳本就會以瀏覽者用戶的身份和權限來執行,通過 XSS 可以比較容易地修改用戶數據、竊取用戶資訊,以及造成其它類型的攻擊,例如 CSRF 攻擊。

防護方式

  • 限制 html 語法:禁示使用 html 語法。
  • 符號轉換:將 & < > “ 等等轉換 html 語法 &amp; &lt; &gt; &quot;。
  • Cookie:使用 HttpOnly 的設定。
  • 防止 cookie 被 Javascript 盜取,如果網站受到 XSS 攻擊,用戶的 Cookie 資料就會被 Javascript 的語法讀取,再回傳到駭客手中的機器。
  • 假設這個網站僅依賴 cookie 來驗證用戶身份,那麼攻擊者就可以假冒你的身份來做一些事情。
  • 瀏覽器都支援在 cookie 上打上 HttpOnly 的標記,代表 cookie 不能夠被 Javascript 存取,不過這個功能必需要瀏覽器支援才有效。



DDoS 攻擊 1

DoS Attack

  • 駭客短時間內傳送大量的網路封包,利用大量的 Request 連接網站,屬於一對一的攻擊,狀態堵塞網站的流量,當封包超過網站的負載量,網站的負荷量過大,這個網站將無法再工作而停止服務,而停此處理新進使用者的 Request。
  • 防護方式:只要一發現有大量的 Request 從同一個 IP 過來,就即時封鎖這個 IP 即可。 ​ 1

木馬病毒

  • 在電腦領域中指的是一種後門程式,是駭客用來盜取其他用戶的個人資訊,甚至是遠端控制對方的電腦,然後通過各種手段傳播或者騙取目標使用者執行該程式,以達到盜取密碼等各種資料資料等目的。
  • 木馬程式有很強的隱秘性,隨作業系統啟動而啟動。

DDoS Attack

  • 全名是 Distributed Denial of Service Attack (分散式阻斷服務方式)。
  • 先建立殭屍電腦(BotNet)網路:木馬病毒先攻擊大量的個人電腦,入侵大量主機後,取得權限,再安裝後門、木馬,再將 DDos 攻擊程式安裝至被害主機內,控制被害主機開始對發動目標攻擊,許多人常在不知情的狀況下成了 DDos 攻擊共犯。
  • 利用大量的電腦,其 IP 分佈在世界各地,並統一由同一台主機操控,當網站遭到 DDoS 攻擊,在同一時間內,操控每台電腦各送出大量的 Request ,衝爆網站的負荷,這個網站就會停止他的服務,所以的用戶將無法接收到網站的任何訊息,還會造成網站速度處理減慢,甚至當機。
  • DDoS 攻擊雖然無法取得任何網站資料,帳號密碼,但是卻會造成主機停止服務,使廠商損失大量的時間與金錢。 ​ 1



CSRF

  • 全名是 Cross Site Request Forgery Attack ,這也是跨站攻擊的一種。
  • 攻擊者通過一些技術手段 欺騙用戶的瀏覽器去存取一個自己曾經認證過的網站並執行一些操作,由於瀏覽器曾經認證過,所以被存取的網站會認為是真正的用戶操作而去執行。
  • 假設你已經登入 Yahoo 帳號,而這時你又不小心點擊了駭客的連結,進入駭客製作好的網頁 A,這頁面會要求 Browser 去 Yahoo 取得你的會員資料,因為 Browser 認定你已經登入 Yahoo ,所以不會再被導到登入頁面,網頁 A 就能輕易的取得你的個人資料。
  • 攻擊者通過各種方法偽造一個請求,模仿用戶提交表單的行為,從而達到修改用戶的數據,或者執行特定任務的目的。
  • 為了假冒用戶的身份,CSRF 攻擊常常和 XSS 攻擊配合起來做。 ​ 1

防護方式

  • 採用 POST 請求:增加攻擊的難度,用戶點擊一個鏈接就可以發起 GET 類型的請求,而 POST 請求相對比較難,攻擊者往往需要借助 javascript 才能實現。
  • 對請求進行認證:確保該請求確實是用戶本人填寫表單並提交的,而不是第三者偽造的,具體可以在會話中增加 token,確保看到資訊和提交資訊的是同一個人。
  • 檢查 Referer 欄位:HTTP 頭中有一個 Referer 欄位,這個欄位用以標明請求來源於哪個位址,在處理敏感資料請求時,通常來說,Referer 欄位應和請求的位址位於同一域名下。
  • 添加校驗 token:如果要求在存取敏感資料請求時,要求用戶瀏覽器提供不儲存在 cookie 中,並且攻擊者無法偽造的資料作為校驗,那麼攻擊者就無法再執行 CSRF 攻擊。



ref:

圖片來源: