《網絡攻防實踐》第五週做業

1、《Python黑帽子》第四章

GitHub地址:Black_Hat_Python_Chapter4php

2、《網絡攻防技術》十一、12章

第11章 Web應用程序安全攻防

微博、社交網絡、雲計算託管服務等一系列新型的互聯網應用與Web技術緊密的交織在一塊兒,這些新的Web技術爲人們的生活帶來大量便利的同時,卻也帶來了史無前例的巨大安全風險。本章從Web技術的服務端和瀏覽器端來分析Web安全攻防技術的輪廓,以及其中最爲基礎和重要的攻擊技術與防範措施。python

1、Web應用程序體系結構及其安全威脅

一、Web應用體系結構
mysql

二、Web應用安全威脅linux

  • 針對瀏覽器和終端用戶的web瀏覽安全威脅
  • 針對傳輸網絡的網絡協議安全威脅
  • 系統層安全威脅
  • web服務器軟件安全威脅
  • web應用程序安全威脅
  • web數據安全威脅

2、Web應用安全攻防技術概述

一、Web應用的信息收集git

  • 手工審查web應用程序結構和源代碼
    • 靜態和動態生成的頁面
    • 目錄結構
    • 輔助性文件
    • 輸入表單
    • 查詢參數字符串
  • 自動下載與鏡像web站點頁面
  • 使用google hacking技術審查與探測web應用程序
  • web應用程序安全評估與漏洞探測

二、攻擊Web服務器軟件github

  • 數據驅動的遠程代碼執行安全漏洞
  • 服務器功能擴展模塊漏洞
  • 樣本文件安全漏洞
  • 源代碼泄露
  • 資源解析攻擊

三、攻擊Web應用程序
在2004年發佈的《WASC Web安全威脅分類 v1.0》將Web應用程序安全威脅從攻擊技術角度分爲以下6類:web

  • 針對認證機制的攻擊
  • 受權機制的攻擊
  • 客戶端攻擊
  • 命令執行攻擊
  • 信息暴露
  • 邏輯攻擊

OWASP組織公佈的Top 10 Web應用程序安全威脅類型:

sql

四、攻擊Web數據內容shell

  • 安全敏感數據泄露
  • 網站篡改
  • 不良信息內容上傳

五、Web應用安全防範措施數據庫

  • web站點網絡傳輸安全防禦措施
    • 儘可能使用https協議,至少對登錄過程進行加密保護
    • 經過加密的鏈接通道來管理web站點
    • 對關鍵的web服務器設置靜態綁定MAC-IP映射,在服務網段內進行ARP等各種欺騙攻擊的檢測與MAC封禁機制,在網關位置部署防火牆與入侵監測系統對web服務器實施保護與安全檢測,採用冗餘等機制來應對拒絕服務攻擊
  • web站點操做系統及服務安全設防措施
    • 對web站點的操做系統與服務器軟件進行及時的補丁更新。
    • 對服務器的操做系統及開放服務進行遠程安全漏洞掃描
    • 採用提高系統與服務安全性的通常性設防措施
  • web應用程序安全設防措施
    • 謹慎考慮是否採用動態頁面技術、是否支持客戶端執行代碼、是否容許接收用戶輸入。
    • 儘可能使用具備良好安全聲譽及穩定技術支持力量的web應用軟件包,並按期更新、掃描漏洞。
    • 只在必要是自主或外包開發web應用程序
    • 使用日誌功能
  • web站點數據安全設防措施
    • 提升網站內容維護人員的數據安全意識
    • 對維護網站的數據安全實施平常監測和防禦

3、SQL注入

代碼注入根據攻擊目標的不一樣又分爲:

  • 惡意讀取、修改與操縱數據庫的SQL注入攻擊;
  • 在Web服務器端安裝、執行Webshell等惡意腳本的PHP注入或ASP注入攻擊;
  • 在Web服務器惡意執行操做系統命令的Shell注入攻擊;
  • 其餘多種多樣的注入攻擊,如LDAP注入、郵件命令注入、空字節注入、SSI注入、XPath注入、XML注入、XQuery注入等。
    在這多種類型的代碼注入攻擊中,SQL注入是目前最多見的,也是較爲直觀的一種攻擊技術。

一、SQL注入攻擊原理
SQL注入是利用Web應用程序數據層存在的輸入驗證不完善型安全漏洞實施的一類代碼注入攻擊技術。這類被攻擊的漏洞被稱爲SQL注入漏洞,是因爲用於輸入沒有被正確地過濾以消除SQL語言中的字符串轉義字符,如引號(')、雙引號(")、反引號(`)、分號(;)、百分號(%)、井號(#)、雙減號(--)、雙下畫線(__)等,或者沒有進行嚴格的類型判斷,如未判斷輸入參數是否合法整數類型等,從而使得用戶能夠輸入並執行一些非預期的SQL指令代碼。
SQL注入攻擊的原理是向Web應用程序提供的用戶輸入接口輸入一段精心構造的SQL查詢命令,攻擊和利用不完善的輸入驗證機制,使得注入代碼得以執行完成非預期的攻擊操做行爲。

二、SQL注入攻擊步驟和過程

  • 發現sql注入點
  • 判斷後臺數據庫類型
  • 後臺數據庫管理員用戶口令字猜解
  • 上傳ASP後門,獲得默認帳戶權限
  • 本地權限提高
  • 利用數據庫擴展存儲過程執行shell命令

三、SQL注入攻擊工具

  • 國外工具
    • wposion
    • wieliekoek.pl
    • SPIKE Proxy
    • SPI Toolkit
  • 國內工具
    • CSC
    • NBSI
    • HDSI
    • 阿D注入工具
    • WED
    • Domain
    • Pangolin

四、SQL注入攻擊防範措施

  • 使用類型安全的參數編碼機制
  • 凡是來自外部的用戶輸入,必須進行完備檢查
  • 將動態SQL語句替換爲存儲過程、預編譯SQL或ADO命令對象
  • 增強SQL數據庫服務器的配置與鏈接

4、XSS跨站腳本攻擊

XSS跨站腳本漏洞存在於Web應用程序中,使得攻擊者能夠在web頁面中插入惡意的HTML或JavaScript代碼,當用戶瀏覽該網頁時,客戶端瀏覽器就會解析和執行這些插入的代碼,從而形成獲取用戶敏感信息、客戶端滲透攻擊等危害後果。

一、XSS攻擊技術原理
XSS攻擊的根源一樣是Web應用程序對用戶輸入內容的安全驗證與過濾不夠完善,在許多流行的Web論壇、博客、留言本及其餘容許用戶交互的Web應用程序中,用戶提交內容中能夠包含HTML、JavaScript及其餘腳本代碼,而一旦Web應用程序沒有對這些輸入的合法性進行有效檢查與過濾,就頗有可能讓這些惡意代碼邏輯包含在服務器動態產生或更新的網頁中。
而與代碼注入不一樣的是,XSS攻擊的最終目標並不是Web服務器,Web服務器上的應用程序在XSS攻擊場景中發揮的角色是「幫兇」,而非「受害者」,真正的「受害者」則是訪問這些Web服務器的其餘用戶。攻擊者能夠利用Web應用程序中的安全漏洞,在服務器端網頁中插入一些惡意的客戶端腳本代碼,在Web服務器上產生一些惡意攻擊頁面。

二、XSS攻擊類型

  • 持久性XSS攻擊
  • 非持久性XSS攻擊
  • 攻擊者構造出一個包含惡意腳本的bank.com登陸請求連接,並經過Email/HTTP等方式將該攻擊連接發送給其餘bank.com網站用戶;
  • 受害用戶點擊攻擊連接後,將會把惡意連接中包含的惡意腳本當作用戶名參數提交給bank.com的登陸處理網頁;
  • 因爲bank.com登陸處理頁面存在XSS漏洞,將會在反饋的歡迎頁面中包含惡意客戶端腳本;
  • 攻擊者的惡意客戶端腳本在受害用戶瀏覽器中執行,一般會驅動瀏覽器向攻擊者發送會話令牌,如會話ID、Cookie信息等;
  • 攻擊者得到用戶會話令牌以後,就能夠劫持用戶會話,或者僞造用戶登陸bank.com,並可實施進一步攻擊。

三、XSS攻擊防範措施

  • 服務器端防範措施
    • 輸入驗證
    • 輸出淨化
    • 消除危險的輸入點
  • 客戶端防範措施
    • 提升瀏覽器訪問非受信網站時的安全等級
    • 關閉Cookie功能或設置Cookie只讀
    • 使用安全瀏覽器

第12章 Web瀏覽器安全攻防

1、Web瀏覽器的技術發展與安全威脅

一、Web瀏覽器戰爭與技術發展

二、Web瀏覽的安全問題與威脅

2、Web瀏覽端的滲透攻擊威脅---網頁木馬

網頁木馬的定義特徵
經過對網頁木馬起源背景和存在技術基礎的分析,咱們能夠認知到網頁木馬從本質特徵上利用了現代Web瀏覽器軟件中所支持的客戶端腳本執行能力,針對Web瀏覽端軟件安全漏洞實施客戶端滲透攻擊,從而取得在客戶端主機的遠程代碼執行權限來植入惡意程序。

網頁掛馬機制

  • 內嵌HTML標籤
  • 惡意Script叫腳本
  • 內嵌對象連接
  • ARP欺騙掛馬

混淆機制
除了引入中間跳轉節點進行嵌套連接,並集成多種滲透攻擊代碼以外,網頁木馬攻擊網絡中每每採用了大量的混淆技術,來對抗反病毒軟件的檢測,並提升反病毒工程師的分析難度,從而使得網頁木馬攻擊網絡更難被檢測和摧毀,這些混淆技術也被稱爲「免殺」。

網頁木馬的檢測與分析技術

  • 基於特徵碼匹配的傳統檢測方法
  • 基於統計與機器學習的靜態分析方法
  • 基於動態行爲結果斷定的檢測分析方法
  • 基於模擬瀏覽器環境的動態分析檢測方法

網頁木馬防範措施

  • 操做系統自己提供和第三方軟件提供的在線更新
  • 安裝並實時更新一款反病毒軟件
  • 養成良好的上網瀏覽習慣
  • 使用Mac OS/Linux系統,使用Chrome、Safari、Opera等瀏覽器上網

3、教材實踐練習

SEED SQL注入實驗

環境及準備

攻擊環境使用SEEDUbuntu-Aug-2010。在SEED中須要用到:FireFox、Apache服務器、phpBB2(本地服務器的攻擊測試頁面,SEED中已經安裝)。
phpBB2環境本地目錄位於/var/www/SQL/SQLLabMysqlPhpbb/。

  • 首先啓動SEED自帶的Apache服務器

  • PHP提供了對抗SQL注入的機制Magic Quote,咱們須要把這個機制關閉:
    • Go to/etc/php5/apache2/php.ini.
    • Find the line:magicquotesgpc = On.
    • Change it to this:magicquotesgpc = Off.
    • Restart the apache server by running"sudo service apache2 restart".

任務一:Select語句攻擊

進入http://www.sqllabmysqlphpbb.com訪問phpBB2。

在進入phpBB以前系統會要求你登錄。這個登錄認證由服務器上的login.php實現,須要用戶輸入用戶名和密碼來經過認證。
用戶鍵入用戶名和密碼後,login.php會將它們與mysql數據庫中的username和user_password字段進行比較,若是匹配就登錄成功。和其餘大多數web應用程序同樣,PHP程序使用SQL語言與背後的數據庫交互。咱們進入phpBB2環境目錄,查看login.php,找到關於checkpassword的源代碼:

username是一個變量,用於保存在Usernametextbox中鍵入的字符串, password是一個變量,用於保存在thePasswordtextbox中鍵入的字符串。 用戶在這兩個文本框中的輸入直接放在SQL查詢字符串中。
sql注入原理就在於此,經過字符串的直接插入,靈活運用單引號'和註釋符號#能夠作到必定程度上修改sql查詢。
咱們返回phpBB2的主頁,點擊Memberlist,查看當前的註冊用戶,咱們選擇bob進行實驗:

在用戶名處輸入bob’ #,#是mysql中的註釋符號,他把上面源碼中AND後面檢查密碼的條件給註釋掉使其不執行,實現不用輸入密碼便可登錄此用戶,實現SQL注入操做。實現效果以下:

任務二:Update語句注入

在不知道他/她的密碼的狀況下更改其餘用戶的我的資料。 例如,若是以bob身份登陸,則目標是使用此漏洞修改Ted的我的資料信息,包括Ted的密碼。 攻擊發生後,應該可以登陸Ted的賬戶。

  • 在profile頁面修改我的信息,想辦法形成一個sql語法錯誤,如在某位置輸入:a',會返回sqldebug信息。

    看到當前我使用bob的帳戶登入,在報錯處user_id爲4,再返回memberlist看到ted的編號是5,推測ted的user_id爲6,因此構造a' where user_id = 6#來修改ted的密碼。但須要知道bob目前帳戶的密碼。

SEED XSS攻擊實驗

環境及準備

同上

任務一:發佈惡意消息以顯示警報窗口

發佈包含JavaScript的惡意消息以顯示警報窗口,應在消息中提供JavaScript以及用戶註釋。 如下JavaScript將顯示一個警告窗口:<script>alert('XSS'); </ script>。若是在留言板中發佈此JavaScript以及評論,那麼查看此評論的任何用戶都將看到警報窗口。

任務二:發佈惡意消息以顯示Cookie

在包含JavaScript代碼的留言板上發佈惡意消息,這樣每當用戶查看此消息時,將打印出用戶的cookie。使用如下包含JavaScript代碼的消息。

<script>alert(document.cookie);</script>

彈出cookie信息:

4、Kali Security

數據庫評估

一、BBQSql
BBQSQL是用Python編寫的一個盲目的SQL注入框架(盲注SQL)。在攻擊棘手的SQL注入漏洞時很是有用。BBQSQL也是一種半自動化工具,可讓那些難以觸發SQL注入發現的用戶進行至關多的定製。該工具的創建是數據庫不可知的,很是通用。它還有一個直觀的UI,使設置攻擊更容易。Python gevent也被實現,使得BBQSQL很是快。

二、DBPwAudit
DBPwAudit是一個Java數據庫密碼審計工具,是一個能夠執行在線審計密碼質量的數據庫引擎。該應用程序能夠經過複製新的JDBC驅動程序到JDBC目錄來添加額外的數據庫驅動程序。使用方法以下:

三、HexorBase
圖形化的密碼破解與鏈接工具,開源。該工具是少有的圖形界面工具,它支持MySQL、Oracle、PostgreSQL、SQLite和SQL Server五大主流數據庫。它容許安全人員指定用戶字典和密碼字典,而後實施字典攻擊。同時,它還提供對應的圖形界面客戶端,容許安全人員使用破解出的用戶名和密碼,對數據庫進行遠程管理。

四、Jsql Injection
jsql是一款輕量級安全測試工具,能夠檢測SQL注入漏洞。它跨平臺(Windows,Linux,Mac OS X,Solaris)、開源且免費。將存在注入漏洞的URL貼進來便可進行相應的漏洞利用。圖形化界面比較親民,可是使用效果有待改善。

五、MDBTools
包括MDB-Export(Export data in an MDB databse table to CSV format),以及MDB-Dump,MDB-Parsecsv,MDB-SQL,MDB-tables等子工具,具體環境具體使用。

六、Oracle Scanner
Oscanner是一個用Java開發的Oracle評估工具。

七、SIDGusser
一樣是針對Oracle的SID進行暴力枚舉的工具。SID爲Oracle實例名,Oracle鏈接字符串,經過實例名+用戶+密碼鏈接。

八、SQLDict
是一個用戶名密碼枚舉工具,本是一個Windows下程序,經過Wine在linux中模擬運行。

九、tnscmd10g
容許向Oracle數據庫中注入命令。

十、sqlsus
sqlsus是一個開放源碼的MySQL注入和接管工具,sqlsus使用perl編寫,基於命令行界面。sqlsus能夠獲取數據庫結構,注入你本身的SQL語句,從服務器下載文件,爬行web站點可寫目錄,上傳和控制後門,克隆數據庫等等。最好用的兩點就是注射獲取數據速度很是快,另一個最大的特色就是自動搜索可寫目錄。

十一、sqlninja
sqlninja是一款perl編寫的一個專門針對Microsoft SQL Server的sql注入工具。和其餘注入工具不一樣,sqlninja沒有將精力用在跑數據庫上,而是側重於得到一個shell。

十二、sqlmap
是sql注入界的神器。SQLMAP是一個開源的滲透測試工具,它主要用於自動化地偵測和實施SQL注入攻擊以及滲透數據庫服務器。SQLMAP配有強大的偵測引擎,適用於高級滲透測試用戶,不只能夠得到不一樣數據庫的指紋信息,還能夠從數據庫中提取數據,此外還可以處理潛在的文件系統以及經過帶外數據鏈接執行系統命令等。

Web應用代理

一、BurpSuite
用於攻擊web應用程序集成平臺。

二、OwaspZAP
OWASP Zed攻擊代理(ZAP)是世界上最受歡迎的免費安全審計工具之一,由數百名國際志願者積極維護。它能夠幫助你在開發和測試應用程序時自動查找Web應用程序中的安全漏洞。OWASP-ZAP主要擁有如下重要功能:本地代理、主動掃描、被動掃描、Fuzzy、暴力破解。

三、paros proxy
是一個對Web 應用程序的web漏洞評估的代理程序,即一個基於Java 的web 代理程序,能夠評估Web 應用程序的漏洞。它支持動態地編輯/查看HTTP/HTTPS,從而改變cookies和表單字段等項目。

四、Webscarab
一款代理軟件,包括HTTP代理,網絡爬行、網絡蜘蛛,會話ID分析,自動腳本接口,模糊測試工具, WEB格式的編碼/解碼,WEB服務描述語言和SOAP解析器等功能模塊。WebScarab基於GNU協議,使用Java編寫,是WebGoat中所使用的工具之一。

五、Vega
是一個開放源代碼的web應用程序安全測試平臺,Vega可以幫助你驗證SQL注入、跨站腳本(XSS)、敏感信息泄露和其它一些安全漏洞。 Vega使用Java編寫,有GUI,能夠在Linux、OS X和windows下運行。

BurpSuite

打開瀏覽器,點擊Preferences->Privacy->Advanced->Network->Settings,默認狀況下,設置本地服務器,設置HTTP代理127.0.0.1和端口8080。

下面在burp suite窗口中檢查本地服務運行狀況,在burp suite窗口中,點擊選項卡中的'proxy',而後點擊下一級的‘Options’。在上面的Proxy Listeners欄中看到本地的127.0.0.1和8080端口的選項,左側的running中已經選定,就能夠開始使用Burp Suite捕獲流量了。

BurpSuite具備如下模塊:

  • Target:包含了SiteMap,用你的目標應用程序的詳細信息。它可讓你定義哪些對象在範圍上爲你目前的工做,也可讓你手動測試漏洞的過程,Target分爲site map和scope兩個選項卡。
  • Proxy:Proxy至關於BurpSuite的心臟,經過攔截,查看和修改全部的請求和響應您的瀏覽器與目標Web服務器之間傳遞。
  • Spider:經過跟蹤 HTML 和 JavaScript以及提交的表單中的超連接來映射目標應用程序,它還使用了一些其餘的線索,如目錄列表,資源類型的註釋,以及robots.txt文件。結果會在站點地圖中以樹和表的形式顯示出來,提供了一個清楚並不是常詳細的目標應用程序視圖。Burp Spider 能使你清楚地瞭解到一個 web 應用程序是怎樣工做的,讓你避免進行大量的手動任務而浪費時間,在跟蹤連接,提交表單,精簡 HTNL 源代碼。能夠快速地確人應用程序的潛在的脆弱功能,還容許你指定特定的漏洞,如 SQL 注入,路徑遍歷。
  • Scanner:是一個進行自動發現web應用程序的安全漏洞的工具。它是爲滲透測試人員設計的,而且它和你現有的手動執行進行的 web 應用程序半自動滲透測試的技術方法很類似。
  • intruder:是burp 套件的優點,他提供一組特別有用的功能。它能夠自動實施各類定製攻擊,包括資源枚舉、數據提取、模糊測試等常見漏洞等。在各類有效的掃描工具中,它可以以最細化、最簡單的方式訪問它生產的請求與響應,容許組合利用我的智能與該工具的控制優勢。
  • sequencer: 對會話令牌,會話標識符或其餘出於安全緣由須要隨機產生的鍵值的可預測性進行分析。
  • Decoder: 轉化成規範的形式編碼數據,或轉化成各類形式編碼和散列的原始數據。它可以智能識別多種編碼格式,使用啓發式技術。
  • Compare: 是一個簡單的工具,執行比較數據之間的任何兩個項目(一個可視化的「差別」)。在攻擊一個Web 應用程序的狀況下,這一要求一般會出現當你想快速識別兩個應用程序的響應之間的差別(例如,入侵者攻擊的過程當中收到的兩種反應之間之間,或登陸失敗的反應使用有效的和無效的用戶名)之間,或兩個應用程序請求(例如,肯定不一樣的行爲引發不一樣的請求參數)

Fuzz工具

模糊測試(Fuzz testing)是一種自動化軟件測試技術,涉及提供無效,意外或隨機數據做爲計算機程序的輸入。 而後監視程序是否存在異常,例如崩潰,內置代碼斷言失敗或潛在的內存泄漏。 一般,模糊器用於測試採用結構化輸入的程序。
模糊測試的執行過程很簡單,大體以下:
一、準備好隨機或者半隨機方式生成的數據;
二、將準備好的數據導入被測試的系統;
三、用程序打開文件觀察被測試系統的狀態;
四、根據狀態判斷是否存在漏洞。

Fuzz經常使用的工具備:Bed、ohrwurm、PowerFuzzer、Wfuzz、XSSer。

一、Bed
是一個純文本協議的Fuzz工具,可以檢查常見的漏洞,如緩衝區溢出,格式串漏洞,整數溢出等。BED經過加載插件,向目標主機發送攻擊數據。若是發現目標沒法響應,說明目標可能存在溢出區漏洞。通過屢次測試驗證,就能夠判斷漏洞出現的位置。而後經過手工執行驗證,代碼審覈、反編譯等方式,就能夠找出漏洞具體觸發機制,從而加以利用。

二、ohrwurm
一個迷你的對RTP的fuzz工具,主要針對SIP通訊的fuzz。

三、PowerFuzzer
Kali Linux自帶的一款Web模糊測試工具。該工具基於各類開源模糊測試工具構建,集成了大量安全信息。該工具高度智能化,它能根據用戶輸入的網址進行自動識別XSS、SQL注入、CRLF、HTTP500等漏洞。同時,用戶能夠指定用戶和密碼等身份驗證信息,也能夠指定Cookie信息。同時,用戶能夠直接指定該工具是否使用代理。因爲該工具開發較早,對非ASCII編碼(如包含中文的網站)網站支持很差,分析中文網站容易出現異常錯誤。

四、Wfuzz
wfuzz不只僅是一個web掃描器,Wfuzz是一個爲暴力破解Web應用程序而設計的工具,它能夠用於查找未連接的資源(目錄,servlet,腳本等),暴力GET和POST參數以檢查不一樣類型的注入(SQL,XSS,LDAP等),強力表單參數(用戶/密碼),Fuzzing等。

五、XSSer
XSSer專門針對XSS漏洞,主要是對一個頁面或點進行xss測試,判斷是否有XSS的漏洞。

相關文章
相關標籤/搜索