The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

機會教育:從中華民國總統府網站被發現 XSS 漏洞講起 (2)

今天才正苦惱不知道要寫什麼文章才好,想不到就有位仁兄寫了篇文章專章批判我的 [機會教育:從中華民國總統府網站被發現 XSS 漏洞講起] 文章寫的不夠專業且混淆視聽。我之前就說了這是場「機會教育」,所以我決定另寫一篇文章專門用來回覆此人的種種觀點以及謬誤之處,歡迎各位批評指教,這是場對專業技術的辯論,不涉及人身攻擊,對於該文章所用的情緒性字眼我將不予理會。

批判一:自打嘴巴

批判一:自打嘴巴

回應:

  • Tag Injection 是一種攻擊手法,並非可插入 <script> 才叫做 Tag Injection,只要可以被插入 Tag 都算是 Tag Injection 的攻擊範圍。
  • 這種不用入侵資料庫就可以達到 XSS 的弱點,「危險的程度」因人而異,我做個簡單的假設,我們以總統府方的立場來看,如果網站被利用來當作攻擊其他網站的跳版,還罪證確鑿的被媒體抓到的話,我看搞不好有人要下台,對要下台的那個人來說應該算「嚴重」吧。

批判二:危言聳聽

批判二:危言聳聽

回應:

  • 此次算不算「偽XSS」見仁見智,在我眼裡這件事沒有什麼偽不偽的,XSS 就是 XSS!
  • 這次的確是「純粹屬於網友自High的行為」而且「XSS碼的確未進到系統的資料庫」。
  • 但是「何來有連上去點擊新聞時可能會連到惡意網站之說」,這是邏輯問題,我都能夠插入任意標籤了,還有什麼做不到?
  • Clickjacking 正是利用 Tag Injection 的弱點進行攻擊,只要能插入 IFRAME 自然能利用 Clickjacking 發動攻擊,不瞭解 Clickjacking 建議可到 Google 搜尋 Clickjacking 查詢相關資料瞭解一下,也可以看看這一則示範攻擊的影片

批判三:胡扯之說

批判三:胡扯之說

回應:

  • 這三點是相關的,我一並回應。
  • 模擬攻擊情境 ( 這是模擬的,請勿當真,不懂的人請當我在自 High ):
    • 假設總統府的網站維護人員正在維護網站,防火牆也正好因為正在維護而暫時關閉,並且已登入後台維護網站相關資料。
    • 假設駭客知道總統府內部人員或網站維護人員的 E-mail,駭客利用原有的 XSS 漏洞設計一組可嵌入惡意網址與惡意 Script 的連結,隱藏在 HTML 格式的郵件中,並透過匿名郵件 (以高階主管或總統府承辦人員的身份) 發送給網站維護人員告知總統府網站被入侵,請儘速處理。 (社交工程)
    • 網站維護人員收到這封釣魚郵件(Phishing)不疑有他的趕緊進行處理,並點擊郵件中的連結,由於是 HTML 格式的郵件,所以郵件上顯示的網址點擊的網址並不相同,沒有資安概念的人通常不會詳細檢查。 (釣魚式攻擊)
    • 網站維護人員進入「總統府網站」,而且網站畫面也並無二致,感覺無任何異狀,而且從網址列乍看之下並不會發現網址已遭竄改,但事實上駭客可能已取得該管理者的 Cookie 並可立即發動攻擊。 (Cookie hijacking 或 Session hijacking)
      中華民國總統府網站 - 新聞稿查詢
  • 鄭重申明:此乃情境模擬,並非說總統府的維護人員就是這樣維護網站,請勿延伸解讀我的文章。

批判四:對 OWASP Top 10 不夠瞭解

A1 - Cross Site Scripting (XSS)

回應:

  • 資料並未進到資料庫 以及 網站也未被傷害,不能說這就是「偽XSS」,這次的事件「就是清清楚楚的 XSS」沒有什麼「真偽」可言,弱點就是弱點,資安人員(技術人員)不能強詞奪理,非技術人員例外。 ^^

A2 - Injection Flaws  ( SQL Injection )

回應:

  • 我要是攻進去就等著被抓了,還可以在這裡分享文章嗎? XD

A4 - Insecure Direct Object Reference

回應:

  • 讓駭客知道資料庫表格名稱在我的標準來看算是個嚴重的漏洞,每個人標準不同,資安也沒有標準答案,事在人為,看主管或業主怎麼要求罷了。

A5 - Cross Site Request Forgery (CSRF)

回應:

  • 可以插入 iframe 還可以執行 onload 事件,這樣還不算?
  • 雖然 CSRF 不容易做到 HTTP POST 的攻擊,但可以透過 HTTP GET 到其他網站的資料就算是 CSRF 攻擊了,不熟悉的人還是應該多瞭解何謂 CSRF
  • 模擬攻擊情境
    • 假設駭客掌握全世界 5000 個有 XSS / CSRF 弱點的網站網址清單,並且擁有 500 萬筆正確的 E-mail 資料。
    • 駭客受了客戶委託,準備進行發動 DDoS 攻擊特定網站
    • 駭客設計一組可攻擊特定網站的惡意網址,並可透過 JavaScript 執行一個可不斷點擊特定網站的程式。
    • 接著駭客開始發送大量垃圾郵件給 500 萬個 E-mail,只要有人點擊該網址進去此網頁,就會以 User 的資源 (Browser + 頻寬) 發出大量 HTTP Request
    • 由於這些 HTTP Request 對於特定網站來說都是「正常的 Request 行為」,以致於幾乎無法阻擋此類攻擊,而這就是標準的 DDoS 攻擊手法。

A6 - Information Leakage and Improper Error Handling

回應:

  • 網站提供的線索越多,攻擊成功的機率越大,這是「機率」問題,並非「可不可以入侵」的問題

A10 - Failure to Restrict URL Access

回應:

  • 我文章中敘述的都是「假設情境」,也沒有講的很肯定,我都是用「預設」、「一般來說」、「只要」,硬要說我「羅織罪名」說不過去吧。

OWASP Top 10 在總統府就包辦 6 項,這真是一場給 Web 開發人員絕佳的機會教育阿!

回覆:

  • 希望你可以學到一些,大家教學相長。

批判五:!#!#%$#^^%&*)*(

依我個人的經驗判斷,該總統府網站 [可能] 有以下特點:

回應:

  • 就說是「可能」了,網站又不是我做的,我怎會瞭解他們的架構。
  • 但 PHP 的版本是當時他們的 Server 告訴我的,我剛查看一下,他們現在已經將 PHP 版本資訊移除了,值得嘉獎!
  • 我個人是在想,如果該網站有在監控,就不會有這個弱點了吧?會有人半夜去解決這個問題,也是因為有人在網路傳遞這類 Kuso 消息才讓他們警覺需立即處理吧,真正的攻擊行為一定是異常低調的。

 從網址列判斷這裡的 PHP 應該是以 CGI 的方式運作,非常吃系統資源,要是被 DoS 一下網站應該就會關了。

回應:

  • PHP 可以用 CGI 的方式運作,這問懂的人就知道了。
  • 況且他們用的不見得是 Linux,如果用 AIX 或 Solaris 的話,早期的 PHP 版本根本沒出 For Apache 的 PHP Module,只能以 CGI 的方式運作。
  • DoS 的全名是 Deny of Service
  • DDoS 的全名是 Distributed Deny of Service,而且你拼錯字了,不是 DDS 喔!

採用 AIX 或 Linux 或 FreeBSD 或 Solaris 平台,以 PHP 的版本研判,OS 版本也不會多新才對。

回應:

  • 不好意思,我真的說不出來耶,需要的人 (駭客) 自然會上網查,而且有些弱點他們還背的起來。

採用 Apache 網站伺服器 ( 版本號已被隱藏,這點值得鼓勵 )

回應:

  • Apache 的版本資訊預設是開啟的,你是用哪個版本的 Apache 呢?
  • PHP 舊版跟 XSS 沒關係,我也沒說有關,那是你說的。但 PHP 版本舊的確有其他的弱點可攻擊,細節我沒在研究。
  • 我只用過 MySQL, PostgresSQL, SQL Server, Oracle, Informix, DB2,但映象中只有 MySQL 有支援 LIMIT 語法,若有錯誤的地方請指正,謝謝。

給 總統府網站相關人員:

回應:

  • 如果情節重大,我個人「建議」還是要關站先。
  • 與其認錯關站,總比失誤被利用來的好吧。
  • 現在願意認錯的人越來越少了,政治正確技術精進沒有幫助,各位開發人員想想吧。

第三步:修正網站「未知」的弱點,透過「原始碼檢測軟體」找出所有弱點並一次修復對知名網站來說,這是最經濟實惠的策略!相信總統府的網站一定有防火牆設備,但請不要花大錢再買更高階的防火牆了,程式碼安全更重要。

回應:

  • 我這一段也沒說到 DDS (誤),因此不予回應。

第四步:找到對的廠商將網站改版總統府網站應該不複雜,重新製作一遍不用幾個月就完成了。

回應:

  • 我用「應該」,不是「肯定句」。
  • 現在網站有在重新招標嗎?你查到的標案編號多少?我要去標!

改版不代表「安全」,先有安全的常識與觀念才會有安全的網站。建議汰換現有的所有軟硬體,連作業系統也要升級。

回應:

  • 我也蠻想升級的,如果有一天不用看書、不用做研究就可以寫文章那該有多好。

隱藏所有軟體版本資訊 ( Linux, Apahce, MySQL, PHP, … )

回應:

  • 至少我列出的東西 (LAMP) 都是可以被隱藏的。
  • 我講的肯定是因為這些東西我都親自設定過。

這篇文章原本昨天晚上就寫好了,想說等等看今天早上問題會不會修復,不然若文章發出去可能就有一堆人想 try 總統府網站,那我就是罪人了。

回應:

  • 口水戰不予回應。