world wide web 萬維網javascript
web1.0 我的網站、門戶站點 靜態頁面php
web2.0 微博、博客交互式頁面css
隨之而來有一些安全問題:html
用戶經過瀏覽器訪問網站,瀏覽器對服務器請求資源前端
URL統一資源定位符java
http 超文本傳輸協議,web通訊使用的協議,web基礎mysql
http請求方式:web
get請求不會返回數據體sql
postshell
語法,html dom
js動態效果,css圖片
html不區分大小寫
dom 文檔對象模型 將文檔轉換爲樹形結構 更直觀地瞭解頁面元素,經過js能夠對頁面進行任意操做
dom 鏈接web和編程語言 js+dom訪問和操做html文檔的標準方法
bom 鏈接瀏覽器和編程語言
http://phpstudy.net/phpstudy/phpStudy.zip
下載安裝windows下的集成環境,這裏用Apache
Apache服務
URL:協議、服務器名稱、路徑、文件
經過記事本打開:C:\Windows\System32\drivers\etc\hosts
添加 test.123.com(192.168.58.1)
web服務器環境搭建,經過上面的文件夾能夠自定義服務器域名
在搜索欄經過手動輸入就能夠打開
網站根目錄,將html存放在 test.123.com 下,就能夠訪問到了
SQL對大小寫不敏感
數據表介紹:
打開mysql命令行 其餘選項菜單--mysql工具--mysql命令行
密碼默認爲root
create database websecurity;(建立一個名爲websecuity的數據庫)
show databases;(顯示已有的數據庫)
use websecurity; (使用數據庫時就要切換到此處)
create table teacher(
-> id int(4) not null primary key auto_increment,
-> name char(20) not null,
-> sex char(10) not null,
-> addr char(20) not null
-> ); (建立一個名爲teacher的標籤)
show tables;
select * from teacher; (查詢表中的數據)
INSERT INTO teacher(name,sex,addr) VALUES("Lee","male","beijing"); (插入數據,id爲自增的,不用咱們添加)
UPDATE TEACHER SET name = 'Amily' WHERE id = 1; (更新數據,將id爲1的那行name值更改)
DELETE FROM teacher WHERE name='Amily';(刪除其中一行)
對數據進行篩選:
select 你要的信息 from 數據表(或多個)where 知足的條件(條件判斷)
select * from teacher where addr='beijing' and sex='male';
select name teacher where addr='beijing' and sex='male';
'*'表明全部符合數據
第二行語句顯示出來的就只是name的那一行
where也可用於update或delete中
對數據進行排序:
select * from teacher order by name;(對name列進行排序 ASC(升)/DESC(降)默認升序排列)
select * from teacher order by 2; 結果同上,2表示對第二列進行操做
將兩個表中的數據合併:
select 你想要的信息 from 數據表1 union select 你要的信息 from 數據表2
select name from teacher union select name from student
如有兩個相同項,只顯示一個
想要所有顯示,用union all
註釋:
單行:#... (...表示註釋的內容)
--(此處一個空格)...
多行 :/*...*/
常見的內置函數
database();
current_user;
load_file() 文件要再次加反斜槓,由於會忽略了轉義
version()
into+outfile 寫入文件
超文本預處理器
導出:打開mysql命令行,查看數據表是否存在
打開cmd
>D:\phpStudy\MySQL\bin\mysqldump.exe -u root -p websecurity >C:\Users\nihao\Desktop\websecurity.sql
Enter password: ****
D:\phpStudy\MySQL\bin\mysqldump.exe 直接找到文件拖拽過來便可(mysqldump爲導出)
-u root 用戶名
-p 密碼 輸入後會顯示出來,因此先放着,後面會提示要輸入密碼
數據庫名稱
>存儲位置 若是沒有,會新建;有的話,也能夠直接拖拽
導入:
drop database websecurity; (以前導出的事例中已經把websecurity導出,此處爲了實驗,就先刪掉)
source C:\Users\nihao\Desktop\websecurity.sql
此時在文件中手動添加了如下畫紅線的部分
要是沒有在sql文件中加入上兩行,就要在mysql命令行中先輸入上兩行,再用source導入
web後端開發語言大體介紹
發送僞造連接郵件,騙取受害者
經過僞造網址讓咱們跳轉到別人設置的頁面,此頁面可能會讓咱們輸入本身的我的信息
關鍵字
搜索引擎語法
攻破網站後植入第三方
入侵後添加連接,隱藏在網頁的連接
放入暗鏈主要是提升在搜索引擎的排名,別人在搜索關鍵字時,這些暗鏈的網站能夠排到前面
大馬
小馬:一句話木馬
webshell主要是後門,控制的流量和正常的流量混合在一塊兒,不易被發現
經過插入惡意腳本盜取用戶信息、釣魚、製造蠕蟲等
分類:
因此直接查看源碼查找的是後端源碼,經過搜索xss沒法定位
經過f12查看當前頁面源碼,查找xss能夠看到經過JavaScript調用的語句,發現是經過hash調用,
經過本頁面右擊查看源碼,查找hash,發現後端觸發xss語句
概念:
利用用戶已登錄的身份,在用戶絕不知情的狀況下,以用戶的名義完成非法操做
經過view-source查看url,發現用戶構造了轉帳的form表單,經過form表單提交會有明顯的網頁跳轉狀況
經過iframe嵌入,用戶看到的是外層頁面,感覺不到嵌入網頁的跳轉狀況,才能使用戶不知情的狀況下完成操做
1.前置知識:
相信你們都見過俄羅斯套娃,一層嵌套一層,在打開以前,內部是不可見的。網站也能夠實現相似的操做
iframe標籤能夠建立包含另外一個文檔的內聯框架
在瀏覽器中打開,便可打開到src中的網頁
實例:
對網頁進行透明度設置爲0,則網頁不可見。若在網頁上可放上「點擊我」的圖片,當咱們點擊時就會觸發隱藏在圖片之下的網頁按鈕
點擊劫持:經過覆蓋不可見的框架誤導受害者點擊而形成的攻擊行爲
特色:
實例:(這是視頻中實例代碼的,可是我不知道哪裏錯,等我知道了再回來改,歡迎指正)
<!Doctype html> <html> <meta http-equiv="Content-Type" content="text/html charset=utf-8" /> <head> <title> 點擊劫持</title> <style> html,body,iframe( display:block; height:100%; width:100%; margin:0; padding:0; border:none; )/*被隱藏網頁的設置*/ iframe( opacity:0; filter:alpha(opacity=30);/*IE*/ -moz-opacity:0.5;/*noz+fflush*/ opacity:0.5;/*支持css的瀏覽器*/ position:absolute; z-index:2; )/*調整網頁可見度*/ /*設置多個opacity,提升不一樣網頁的兼容性*/ button( position:absolute; top:-5px; left:875px; z-index:1;/*圖片與視覺的距離*/ width:72px; height:26px; ) </style> </head> <body> <button><img src="C:\Users\nihao\Desktop\222.jpg"></button> <iframe src="https://www.baidu.com/></iframe> </body> </html>
定義:藉助未驗證的URL跳轉,將程序引用到第三方不安全的區域,從而致使安全問題
實現方式:
Header頭跳轉
javascript跳轉
META標籤跳轉
能夠訪問和修改數據,或利用潛在的數據庫漏洞進行攻擊
例題:
流程:
必備條件:
能夠控制輸入的數據
服務器要執行的代碼拼接了控制的數據
本質:數據和代碼未分離,即數據看成了代碼來執行
基本操做:
實例:
curl-I 請求網址並返回http響應頭
實際中「&」在url中爲參數分隔符,但咱們想讓它作命令拼接符 就要進行轉義 %26
過程介紹:
1.文件上傳漏洞:
上傳可執行腳本
2.任意文件下載
可能致使代碼泄露、數據庫配置文件泄露、系統文件泄露等
利用緣由:未驗證下載文件格式
未驗證請求的路徑
3.文件包含漏洞
測試遠程文件包含的漏洞中,下面兩個內容要開啓
類型:
實質:經過猜想文件名,根據返回的http狀態碼判斷文件是否存在
掃描工具:御劍
掃描時所用的字典並非越大越好,因此經過判斷目標網站可能的腳原本選擇字典
綜合性Web漏掃工具:AWVS,Netsparker,AppScan
使用漏洞掃描工具可能存在的問題:
1.對目標站點進行誤傷:
如高流量,請求了危險的功能
2.盲區:邏輯漏洞
3.評級
4.漏掃工具的解讀和應用
複習:
SQL注入主要是由於要執行的數據庫代碼拼接了用戶的輸入的數據
獲取數據庫敏感數據(拖庫)
site:搜索特定的站點信息
info:站點的基本介紹
inurl:搜索URL中包含有指定字符串的網址
intitle:搜索網頁標題中包含指定的字符串網址
intext:搜索站點頁面內容中具備關鍵字內容的網址
filetype:搜索特定後綴名的文件
bing英文版直接輸入ip:xxxxx,同ip站點查詢,旁站
實例:
找到目標站點登錄地址並暴力破解密碼
像查看目標站點有沒有泄露的數據庫文件
site:http://testphp.vulnweb.com/ inurl:phpinfo.php
交互頁面
若是目標站點關閉,能夠查看瀏覽器的緩存:
萬物互聯:我的計算機和服務器、路由器、智能家居、手機、電腦等
如何把每個接入互聯網的設備看做一個節點,就構成了咱們的網絡空間
基本原理:探測/爬取--》識別/打標籤--》存儲拱檢索
基本的站點信息探測:whatweb.net
ip查詢:www,ipip.nwt
www.cmd5.com
tool.chinaz.com
安全導航站點:www.anquanquan.info/#tools
輸入檢查:
輸出檢查;
針對性防護:
WAF:
漏洞知識庫
漏洞修復週期
漏洞複查
事件確認:
事件彙報:
事件處理:
歸檔和覆盤:
(Security Development Lifecycle 安全開發生產週期)
旨在從源頭下降風險,提高web安全應用的安全性
《互聯網企業安全高級指南》 第三章
常見的安全漏洞提交平臺:待補充--
FTP是File Transfer Protocol,文件傳輸協議;
HTTP是Hyper Text Transfer Protocol,超文本傳輸協議;
FILE是本地文件傳輸協議
FTP和HTTP同樣都是Internet上普遍使用的協議,用來在兩臺計算機之間互相傳送文件。相比於HTTP,FTP協議要複雜得多。複雜的緣由,是由於FTP協議要用到兩個TCP鏈接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另外一個是數據鏈路,用來上傳或下載數據。
PORT(主動)方式的鏈接過程是:客戶端向服務器的FTP端口(默認是21)發送鏈接請求,服務器接受鏈接,創建一條命令鏈路。當須要傳送數據時,客戶端在命令鏈上用PORT命令告訴服務器:「我打開了XXXX端口,你過來鏈接我」。因而服務器從20端口向客戶端的XXXX端口發送鏈接請求,創建一條數據鏈路來傳送數據。
PASV(被動)方式的鏈接過程是:客戶端向服務器的FTP端口(默認是21)發送鏈接請求,服務器接受鏈接,創建一條命令鏈路。當須要傳送數據時,服務器在命令鏈上用PASV命令告訴客戶端:「我打開了XXXX端口,你過來鏈接我」。因而客戶端向服務器的XXXX端口發送鏈接請求,創建一條數據鏈路來傳送數據。
從上面能夠看出,兩種方式的命令鏈路鏈接方法是同樣的,而數據鏈路的創建方法就徹底不一樣。而FTP的複雜性就在於此。
當咱們想瀏覽一個網站的時候,只要在瀏覽器的地址欄裏輸入網站的地址就能夠了,例如http://www.microsoft.com,可是在瀏覽...w.microsoft.com ,你知道爲何會多出一個「http」嗎?
咱們在瀏覽器的地址欄裏輸入的網站地址叫作URL (Uniform Resource Locator,統一資源定位符)。就像每家每戶都有一個門牌地址同樣,每一個網頁也都有一個Internet地址。當你在瀏覽器的地址框中輸入一個URL或是單擊一個超級連接時,URL就肯定了要瀏覽的地址。瀏覽器經過超文本傳輸協議(HTTP),將Web服務器上站點的網頁代碼提取出來,並翻譯成漂亮的網頁。所以,在咱們認識HTTP以前,有必要先弄清楚URL的組成,例如:http://www.microsoft.com/china/index.htm。它的含義以下:
1. http://:表明超文本傳輸協議,通知microsoft.com服務器顯示Web頁,一般不用輸入;
2. www:表明一個Web(萬維網)服務器;
3. Microsoft.com/:這是裝有網頁的服務器的域名,或站點服務器的名稱;
4. China/:爲該服務器上的子目錄,就好像咱們的文件夾;
5. Index.htm:index.htm是文件夾中的一個HTML文件(網頁)。
咱們知道,Internet的基本協議是TCP/IP協議,然而在TCP/IP模型最上層的是應用層(Application layer),它包含全部高層的協議。高層協議有:文件傳輸協議FTP、電子郵件傳輸協議SMTP、域名系統服務DNS、網絡新聞傳輸協議NNTP和HTTP協議等。
HTTP協議(Hypertext Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部分,以及哪部份內容首先顯示(如文本先於圖形)等。這就是你爲何在瀏覽器中看到的網頁地址都是以http://開頭的緣由。
自WWW誕生以來,一個多姿多彩的資訊和虛擬的世界便出如今咱們眼前,但是咱們怎麼可以更加容易地找到咱們須要的資訊呢?當決定使用超文本做爲WWW文檔的標準格式後,因而在1990年,科學家們當即制定了可以快速查找這些超文本文檔的協議,即HTTP協議。
因爲HTTP協議是基於請求/響應範式的(至關於客戶機/服務器)。一個客戶機與服務器創建鏈接後,發送一個請求給服務器,請求方式的格式爲:統一資源標識符(URL)、協議版本號,後邊是MIME(Multipurpose Internet Mail Extensions多用途互聯網郵件擴展類型,設定某一拓展名的文件用特定方式打開)信息包括請求修飾符、客戶機信息和可能的內容。服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括服務器信息、實體信息和可能的內容。
許多HTTP通信是由一個用戶代理初始化的而且包括一個申請在源服務器上資源的請求。最簡單的狀況多是在用戶代理和服務器之間經過一個單獨的鏈接來完成。在Internet上,HTTP通信一般發生在TCP/IP鏈接之上。缺省端口是TCP 80,但其它的端口也是可用的。但這並不預示着HTTP協議在Internet或其它網絡的其它協議之上才能完成。HTTP只預示着一個可靠的傳輸。
以上簡要介紹了HTTP協議的宏觀運做方式,下面介紹一下HTTP協議的內部操做過程。
在WWW中,「客戶」與「服務器」是一個相對的概念,只存在於一個特定的鏈接期間,即在某個鏈接中的客戶在另外一個鏈接中可能做爲服務器。基於HTTP協議的客戶/服務器模式的信息交換過程,它分四個過程:創建鏈接、發送請求信息、發送響應信息、關閉鏈接。這就好像上面的例子,咱們電話定貨的全過程。
其實簡單說就是任何服務器除了包括HTML文件之外,還有一個HTTP駐留程序,用於響應用戶請求。你的瀏覽器是HTTP客戶,向服務器發送請求,當瀏覽器中輸入了一個開始文件或點擊了一個超級連接時,瀏覽器就向服務器發送了HTTP請求,此請求被送往由IP地址指定的URL。駐留程序接收到請求,在進行必要的操做後回送所要求的文件。在這一過程當中,在網絡上發送和接收的數據已經被分紅一個或多個數據包(packet),每一個數據包包括:要傳送的數據;控制信息,即告訴網絡怎樣處理數據包。TCP/IP決定了每一個數據包的格式。若是事先不告訴你,你可能不會知道信息被分紅用於傳輸和再從新組合起來的許多小塊。
File協議主要用於訪問本地計算機中的文件,就如同在Windows資源管理器中打開文件同樣。
uri中爲何本地文件file後面跟三個斜槓, http等協議跟兩個斜槓?
URI的結構爲:
若是有host,前面須要加//,所以對於http或https等網絡地址來講會寫成:
https://blog.csdn.net/lishanleilixin/article/category/7191777
這樣看上去很天然。若是是文件的話,文件沒有host,因此中間的host部分就不要了,就變成了:
由於若是沒有host的話,第一個[]的內容就不存在了,這種贊成的寫法有一個標準叫CURIE。
socket:
這是爲了實現以上的通訊過程而創建成來的通訊管道,其真實的表明是客戶端和服務器端的一個通訊進程,雙方進程經過socket進行通訊,而通訊的規則採用指定的協議。
socket只是一種鏈接模式,不是協議,socket是對TCP/IP協議的封裝,Socket自己並非協議,而是一個調用接口(API),
經過Socket,咱們才能使用TCP/IP協議。tcp、udp,簡單的說(雖然不許確)是兩個最基本的協議,
不少其它協議都是基於這兩個協議如,http就是基於tcp的,.用socket能夠建立tcp鏈接,也能夠建立udp鏈接,
這意味着,用socket能夠建立任何協議的鏈接,由於其它協議都是基於此的。