台灣資安事件攻防 - Bowen

 

台灣資安事件攻防-Bowen

 

一、綱要

  SQL Injection (曾國峻)

  • 成因
  • 實作
  • 防禦

  XSS(李孟霈)

  • 成因
  • 實作
  • 防禦

  CSRF (朱慧)

  • 成因
  • 防禦

  Business Logic Vulnerability (朱慧)

  • 成因
  • 影响
  • 解决的方法

 

二、SQL Injection

A. 成因:

 

SQL Injection 是指 SQL 語法上的漏洞,攻擊者藉由特殊字元,改變語法上的邏輯,竊取資料庫的資料。

 2015-12-22 下午9.31.00.png

B. 實作:

1. 實作資源:

首先下載 OWASP Broken Web Applications Project

接著打開虛擬機後,會出現一個IP位址,利用瀏覽器來開啟

找到Damn Vulnerable Web Application

接著輸入(username: admin password: admin)

就可以進行實作練習了。

 

2. 步驟教學:

第一步:插單引號測試是否有SQL Injection弱點

  SELECT???,……,???FROM???WHERE???='3'

 1_1.png

 1.png

 

第二步:計算欄位數量

SELECT???,……,???FROM???WHERE???='3' order by 2#'

(SQL 其他註解方式:   MySQL: /*   MsSQL: --)

 

 2_1.png

 3_1.png

2.png

 

第三步測試顯示結果

SELECT  aaa,bbb FROM???WHERE???='3' union select user(),version()#'

 4.png

 

第四步:盜取資料庫名稱、資料表名稱、欄位名稱

SELECT aaa,bbb FROM???WHERE???='3' UNION SELECT table_schema, table_name FROM information_schema.tables  WHERE table_schema != 'mysql' AND table_schema != 'information_schema' #'

 5.png

第五步:盜取想要的資料

 

C.防禦:

 

PHP 過瀘 SQL Injection 的語法:

 

$name = preg_replace("/[\'\"]+/" , '' ,$name);

 

此例為過濾 ' 及 "。

 

 

二、XSS(Cross-Site scripting)

A. 成因:

 2015-12-22 下午9.42.32.png

 

B. 實作 :

1.實作資源:

http://bowen.tw/xss/xss.php

2.實作關卡:

第一關:XSS這關得輸入什麼都沒有擋,所以我們只要寫個普通的<script>就能撈出cookie

1_0.png

參考答案: <script>alert(document.cookie)</script>

2_0.png

第二關:取代這關它會將所有<script>的文字拿掉取代成>

所以我們只要在<script>中在包一個<script就行了

3_0.png

參考答案:<sc<scriptript>alert(document.cookie)</script>

4_0.png

 

第三關:JavaScript 在這關當中它使使用HTML encode會令所有<script>的值失效,所以我們不能使用關於<script>的指令,但還是能透過其他方法來達成我們要的alert目的。

第一種方法:使用href連結,利用herf連結讓連結有alert功能

 5_0.png參考答案:<a href='javascript:alert(document.cookie)'>aaa</a>

 6.png

第二種方法:

我們可以利用圖片src的方式,插入一個錯誤連結,使得連結錯誤時程式碼變會執行另一段code來達到我們要的目的。

參考答案: <img src='a' onerror='alert(document.cookie)'>

7.png

C. 防禦: 

 

1.對cookie資料進行加密

 

 

 

2.對所有用戶提交內容進行可靠的輸入驗證,包括對 URL、查詢關鍵字、HTTP頭、POST數據等,僅接受指定長度範圍內、採用適當格式、採用所預期的字符的內容提交,對其他的一律過濾。

 

 

 

3.實現Session標記(session tokens)或者HTTP引用頭檢查,以防功能被第三方網站所執行。

 

 

 

4.使用Http Only,HTTPS

 

 

 

 

三、CSRF(Cross-Site Request Forgery)

A.CSRF是什么?
  CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。
B.CSRF可以做什么?
攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。
C.CSRF的原因
 開發者未檢查request是否為使用者本身發出的動作,導致供給者可以冒用一般使用者的身份執行特定的操作。
D.CSRF的原理
  下图简单阐述了CSRF攻击的思想:
  
  从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:
  1.登录受信任网站A,并在本地生成Cookie。
  2.在不登出A的情况下,访问危险网站B。
  看到这里,你也许会说:“如果我不满足以上两个条件中的一个,我就不会受到CSRF的攻击”。是的,确实如此,但你不能保证以下情况不会发生:
  1.你不能保证你登录了一个网站后,不再打开一个tab页面并访问另外的网站。
  2.你不能保证你关闭浏览器了后,你本地的Cookie立刻过期,你上次的会话已经结束。(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了......)
  3.上图中所谓的攻击网站,可能是一个存在其他漏洞的可信任的经常被人访问的网站。

E.CSRF的防御

 CSRF的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的CSRF防御也都在服务端进行。
 
  服务端进行CSRF防御
  服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。
  (1).Cookie Hashing(所有表单都包含同一个伪随机值):
  这可能是最简单的解决方案了,因为攻击者不能获得第三方的Cookie(理论上),所以表单中的数据也就构造失败了:>
  <?php
    //构造加密的Cookie信息
    $value = “DefenseSCRF”;
    setcookie(”cookie”, $value, time()+3600);
  ?>
  在表单里增加Hash值,以认证这确实是用户发送的请求。
<?php
    $hash = md5($_COOKIE['cookie']);
  ?>
  <form method=”POST” action=”transfer.php”>
    <input type=”text” name=”toBankId”>
    <input type=”text” name=”money”>
    <input type=”hidden” name=”hash” value=”<?=$hash;?>”>
    <input type=”submit” name=”submit” value=”Submit”>
  </form>
 
  然后在服务器端进行Hash值验证
 
      <?php
        if(isset($_POST['check'])) {
             $hash = md5($_COOKIE['cookie']);
             if($_POST['check'] == $hash) {
                  doJob();
             } else {
        //...
             }
        } else {
      //...
        }
      ?>
 

 

四、Business Logic Vulnerablility

A.成因:開發者未檢查使用者是否有權限對特定資料進行查詢、修改、刪除,導致使用者可任意操作該資料。

 

B.攻擊結果

(1)  交易金額遭到竄改

(2)  訂單明細、個資外洩

(3)  管理者帳號遭到竄改

 

C.影響:大量個資外洩、使用者帳號被竊取

D.解決的方法

1.避免將用戶的帳號和密碼留在網絡上

2.在密碼錯誤次數太多被封鎖時,可以加上輸入圖片上數字的CAPTCHA 系統,以避免機器人暴力拆解密碼的可能性。

3.企業可做到資產追蹤、安全度量以及符合開發框架等,也都是有效解決商業邏輯漏洞的方式。

 部分资料来源: http://www.ithome.com.tw/node/45744