通過本篇文章,您可以了解一個web安全從業人員所具備的大致知識面,同時我也制定了一個循序漸進的學習計劃,用以幫您找準自己的定位,并可以自己制定適合自己的學習計劃,具體的會在下一篇文章里面進行講解,如果覺得有幫助的話,可以關注一下我,感謝,
1. Web請求流程概覽

2. Web中間件
中間件 (Middleware) 是一種連接軟體組件和應用的計算機軟體,它包括一切服務,一邊運行在一臺或多臺機器上的軟體通過網路進行互動,該技術所提供的互操作性推動了一致分布式體系架構的演進,該架構通常用于支持簡化那些復雜的分布式程式,它包括Web服務器、事物監控器和訊息佇列軟體,中間件是基礎軟體的一大類,屬于可復用軟體的范疇,顧名思義,中間件處于作業系統軟體和用戶的應用軟體的中間,
Web中間件上運行著由Web腳本語言撰寫的系統,

3. Web編程語言
Web編程語言,根據解釋執行的位置可以分為前端語言和后端語言,Web前段語言是指在瀏覽器上解釋執行的Web編程語言,包括HTML和JavaScript等,Web后端語言是指在Web服務器上解釋執行的Web編程語言,包括JSP、PHP、ASP、ASP.Net等,

3.1. PHP簡介
PHP是“PHP Hypertext Preprocessor”的縮寫,它是一門用來使得服務器產生動態輸出的語言,輸出的結果根據每次瀏覽器請求頁面回應的結果而不同,通常,PHP檔案的擴展名為.php,當Web服務器在請求的檔案中遇到這個擴展名時,他將自動地將該檔案傳遞給PHP處理器,當然,Web服務器是可以驚醒高配置的,一些Web開發者選擇把檔案強制命名為.htm或者.html,但還交給PHP處理器進行決議,通常這樣做的目的是為了隱藏開發者正在使用PHP語言這一事實,
為了觸發PHP命令,需要一個新的標記,這個標記由 <?php和?> 組成,前者開始一段PHP代碼,代碼內容放置在兩個標記中間,最后由后者結束標記,整個PHP代碼結束,這個標記的使用方法很靈活,一些開發者把標記的開始部分放在檔案的開始點,在整個檔案結束處放置結束標記,直接由PHP命令輸出HTML結果;但是,還有一些人只是在需要動態叫本事將最少的PHP片段放入標記之間,剩下的檔案保留在標準的HTML中,
3.2. JavaScript簡介
JavaScript是完全在網頁瀏覽器上運行的客戶端腳本,它的用途是為了實作以腳本的方式來訪問HTML檔案中的所有元素,換句話說,JavaScript提供了一種和用戶動態互動的途徑,結合CSS,JavaScript能夠改變眼前動態網頁的樣式,而不是讓服務器回傳一個新的頁面,要把JavaScript代碼放在以<script>開頭和</script>結尾的HTML標記之間才能呼叫它;除了在HTML檔案中直接撰寫JavaScript代碼之外,還可以包含自己網站或因特網上的任何JavaScript代碼檔案,其語法為:
<script type=“text/javascript” src=https://www.cnblogs.com/hack4396/p/“script.js”></script>
或從因特網上獲取檔案:
<script type=“text/javascript” src=https://www.cnblogs.com/hack4396/p/“http://someserver.com/script.js”></script>
4. MySQL資料庫的特點
MySQL是一個可以通過強大和快速的類英語命令管理資料并支持大型資料庫的開源資料庫管理系統,它采用標準的SQL資料庫語言形式,可以運行在到各系統上并支持多種語言,一個MySQL資料庫包含一個或多個表,每個表又包含多條記錄(行),在這些行中有多種包括資料本身的屬性(列),
5. 常見的資料庫和編程語言組合

6. B/S機制和C/S機制介紹
B/S結構(Browser/Server)即瀏覽器和服務器結構,他是隨著因特網技術的興起,對C/S結構的一種變化或者改進的結構,在這種結構下,用戶界面時通過www瀏覽器來實作的,極少部分是無邏輯在前端(瀏覽器)實作,但是主要食物邏輯在服務端實作,形成所謂的三層結構,
C/S結構(Client/Server)中,服務器通常采用高性能的PC、作業站或小型機,并采用大型資料庫系統,如Oracle、Sybase、Informix或SQL Server,客戶端需要用戶安裝專門的客戶端軟體,
7. HTTP介紹
HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用于萬維網服務器傳輸文本到本地瀏覽器的傳送協議,HTTP是一個基于TCP/IP通信協議來傳遞資料的,它屬于應用層的面向物件協議,適用于分布式超媒體資訊系統,HTTP于1990年被踢出,經過幾年的發展和使用得到不斷的完善和擴展,B/S架構的系統使用協議為HTTP協議,瀏覽器作為HTTP客戶端通過URL向HTTP服務器即Web服務器發送所有請求;Web服務器根據接收到的請求,向客戶端發送回應訊息,HTTP常用的埠號包括80、8080、3128、8081、9080等,

HTTP具備簡單快捷、靈活、無連接、無狀態等特點,并支持B/S和C/S模式,其中,HTTP的無狀態特點是指,與FTP或者telnet不同,HTTP協議無法記憶客戶端的當前狀態,這種特性被稱為HTTP的無狀態性,因此,狀態的記憶需要憑借回應(HTML)中的hidden引數,
URL全稱Uniform Resource Location,即統一資源定位符,是互聯網上用來表示某一處資源的地址,其基本結構格式如下所示:

[注]需要區分URL和URI,
URL中描述了協議,該URL用于檢索資源和資源名稱,如果資源是Web型別資源,則URL在開頭包含http / https,同樣,如果資源是檔案,則以ftp開頭,如果資源是電子郵件地址,則以mailto開頭,
URI(統一資源識別符號)是標識邏輯或物理資源的字符序列,與URL類似,也是一串字符,通過使用位置,名稱或兩者來標識Internet上的資源;它允許統一識別資源,

URL主要用于鏈接網頁,網頁組件或網頁上的程式,借助訪問方法(http,ftp,mailto等協議)來檢索位置資源;URI用于定義專案的標識,此處單詞識別符號表示無論使用的方法是什么(URL或URN),都要將一個資源與其他資源區分開來,另外,URL指定要使用的協議型別,而URI不涉及協議規范,
8. HTTP請求
用戶和Web服務器之間的基本通信會話通過用戶瀏覽器發送HTTP和接收HTTP回應實作的,下圖反映了完整的HTTP請求程序

8.1. HTTP請求訊息
在瀏覽器發送給Web服務器的請求訊息中,請求訊息的第一行(示例如下所示)被稱作請求行,相當于瀏覽器下打給服務器的指令,請求行由請求方法 (GET)、URL (/31/31-001.PHP)和版本協議 (HTTP/1.1)組成,他們之間以空格相隔:
GET /31/31-001.PHP HTTP/1.1
請求方法除了GET(獲取)以外,還有POST和HEAD等,GET和POST于HTML中form元素的method屬性指定的值相同,
HTTP請求的第二行及以后的內容被稱作請求頭資訊(Header),其格式為名稱與值以冒號相隔,請求頭資訊,但其中只有HOST是必須的,HOST是表示接受資訊的主機名(FQDN)和埠號(80時可以省略),請求頭部之后是請求資料,二者通過一個空行隔開,
8.2. HTTP請求方法

GET方法使用的是URL后緊跟查詢字串的形式來傳遞引數的,但由于瀏覽器和服務器能夠處理的URL長度有限,所以當傳遞的資訊量很大時,使用POST方法哼安全;另外,敏感資訊應該使用POST發送,這是因為POST有下列風險:
URL中指定的引數經由Refer泄露;
URL中指定的引數殘留在訪問日志中,
因此,傳遞請求中包含資料更新等請求時、發送敏感資訊時以及發送資訊量很多時,都應使用POST方法而不使用GET方法,
8.3. HTTP回應訊息
一般情況下,服務器接受并處理客戶端發過來的請求后會回傳一個HTTP的回應訊息,HTTP回應也應由四個部分組成,即狀態行,訊息報頭/回應頭資訊、空行和回應正文,狀態行的內容是請求訊息經過服務器處理以后的狀態,其包括(示例如下所示)協議版本(HTTP/1.1)、狀態碼(200)和狀態描述(OK)組成,
HTTP/1.1 200 OK
回應訊息的第二行及以后的內容為回應訊息,內容一直到出現空行(只含有換行符的行)為止,以下為典型的回應頭資訊:
Content-Length:現實回應正文的位元組數
Content-Type:指定為MIME型別,MIME即為Multiple Internet Mail Extensions訊息內容型別的因特網標準,HTML檔案的情況下MIME型別為text/html,
常見的MIME型別如下表所
8.4. HTTP狀態碼
常見的HTTP狀態碼和其含義如下表所示:

[注]
重定向是指通過各種方法將網路請求重新設定方向轉到其他位置,如網頁重定向、域名重定向、陸游的選擇變化等,現實中重定向的原因可能是網站調整(如改變網頁目錄結構)、網頁被移到新地址、網頁擴展名改變,如果不做重定向,那么用戶瀏覽器頁面則可能出現404錯誤,
9. Web應用主要安全威脅
9.1. OWASP Top 10
開放式Web應用程式安全專案 (OWASP, Open Web Application Security Project) 是一個組織,它提供有關計算機和互聯網應用程式的公正、實際、有成本效益的資訊,其目的是協助個人、企業和機構來發現和使用可信賴軟體,OWASP每隔四年就會發布一版十大最嚴重的Web應用安全威脅,即OWASP Top 10,它被視為web應用安全領域的權威參考,美國聯邦貿易委員會(FTC)強烈建議所有企業需遵循OWASP十大WEB弱點防護守則,

(13版本的A4和A7合并為17版本A5;13版本A8和A10因為威脅的范圍較小因而在17版本中被去除)
9.2. 注入類威脅
9.2.1. 簡介
注入類威脅的產生原因是Web應用程式沒有將程式代碼和用戶提交的資料嚴格區分開來,將惡意用戶提交的資料當做了一部分代碼決議執行,注入類威脅輕則泄露各種敏感資訊,嚴重的將直接導致整個網站服務器被控制,
9.2.1. SQL注入
原理:惡意用戶提交的資料被Web用用程式當成資料庫查詢代碼決議執行
威脅:用戶敏感資訊,如賬號密碼,家庭住址,聯系方式等資訊泄露
9.2.2. XSS漏洞
原理:惡意用戶提交的資料被Web應用程式當作HTML標簽和JavaScript代碼回傳給瀏覽器決議執行,XSS又叫CSS (Cross Site Script),跨站腳本攻擊,
威脅:竊取cookie,網站釣魚,網站掛馬
9.2.3. 檔案上傳漏洞
原理:惡意用戶上傳的檔案被Web應用程式當作腳本代碼決議執行
威脅:植入Webshell,控制整個網站
9.2.4. 檔案包含漏洞
原理:Web應用程式執行的程序中,往往需要呼叫多個檔案,惡意用戶提交的資料被Web應用程式當作正常的需要呼叫的檔案,從而造成檔案包含漏洞
威脅:植入Webshell,控制整個網站,竊取網站敏感資訊
9.2.5. 任意檔案下載漏洞
原理:Web應用程式往往會提供檔案下載的功能,如果被下載的檔案是黑客可以任意修改的,那么就會造成任意檔案下載漏洞
威脅:竊取網站敏感資訊,進一步發現網站更多漏洞
9.2.6. OS命令注入漏洞
原理:Web應用程式會提供一些執行系統命令的介面,如果網站對用戶提交的引數過濾不嚴格,那么就會把惡意用戶提交的引數當成系統命令執行,從而造成命令執行漏洞,
威脅:執行系統命令,網站被控制
9.3. 資訊泄露類威脅
9.3.1. 簡介
資訊泄露類漏洞主要是由于Web應用組件(Web服務器,Web中間件,Web應用程式)配置錯誤或者設計缺陷造成的,通過此類問題,惡意攻擊者能夠獲取目標服務器的各種敏感資訊,進而為下一步攻擊埋下伏筆,
9.3.2. 目錄資訊泄露
原理:Web應用中間件配置錯誤時,如果用戶訪問不存在的索引檔案 (index.html, index.php等)的目錄,就會直接顯示該目錄下所有檔案及其子目錄,
威脅:泄露網站路徑,檔案名等敏感資訊
9.3.3. 敏感檔案泄露
原理:發布網站時,管理員往往會忘記洗掉網站開發時留下的包含網站敏感資訊的各種檔案,如網站原始碼壓縮檔案,.git,.bak,.svn等檔案
威脅:泄露網站源代碼等敏感資訊
9.3.4. 弱口令泄露
原理:弱口令簡單說就是容易被黑客猜解出來的口令,網站后臺的登錄口令如果過于簡單,就會被黑客猜解出來,從而造成弱口令漏洞
威脅:網站敏感資訊泄露,某些情況寫可以導致Web服務器被控制
9.3.5. 未授權訪問泄露
原理:Web應用系統對管理后臺,敏感API等沒有進行有效的權限控制,從而造成未授權用戶能夠任意訪問
威脅:造成網站敏感資訊泄露
9.3.6. 敏感路徑泄露
原理:Web應用系統的管理后臺、編輯器后臺等敏感路徑設定的過于簡單,就會被黑客猜解出來從而造成敏感路徑泄露漏洞
威脅:網站敏感資訊泄露
9.4. 業務邏輯類威脅
9.4.1. 簡介
業務邏輯漏洞本質上屬于業務設計缺陷,表現為設計者或開發者在思考程序中作出的業務流程存在明顯或隱含的錯誤,惡意攻擊者利用這些業務設計缺陷,通過篡改業務流程和資料,往往能達到設計人員‘意料之外’的效果
9.4.2. 訂單金額任意修改
原理:網站商品的訂單處理的業務邏輯,信任了前端傳入的金額引數,沒有在服務端進行驗證,導致惡意用戶可以任意修改訂單的金額
威脅:網站商品的訂單處理的業務邏輯,信任了前端傳入的金額引數,沒有在服務端進行驗證,導致惡意用戶可以任意修改訂單的金額
9.4.3. 驗證碼判斷缺陷
原理:用戶在找回密碼、認證注冊時,網站發送的驗證碼可以被惡意攻擊者直接獲取或者重復提交
威脅:跳過驗證碼、任意修改密碼
9.4.4. 介面無限制列舉
原理:網站敏感介面,如登錄介面、驗證碼介面、優惠劵校驗或其他防止列舉的機制容易遭受列舉攻擊,
威脅:暴力破解密碼,暴力列舉驗證碼
9.4.5. cookie設計缺陷
原理:Web應用在設計用戶登錄cookie時,沒有嚴格遵循隨機化機制,而是采用可預測的亂數或者直接使用賬號、昵稱等資訊作為cookie,從而造成惡意用戶可以偽造任意用戶cookie
威脅:登錄任意賬號、泄露用戶敏感資訊
9.4.6. 密碼找回設計缺陷
原理:Web 應用系統在設計密碼找回功能時存在設計缺陷,比如沒有采用安全的亂數作為密碼找回憑證,導致該憑證可以被任意惡意用戶預測,從而造成任意密碼重復
威脅:任意修改密碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/452864.html
標籤:其他
上一篇:一起來打靶 03
下一篇:Java基礎——Map集合


