網易web白帽子學習筆記

 部分轉載他人

1、web基礎知識

1.1.1web介紹

world wide web 萬維網javascript

web1.0  我的網站、門戶站點  靜態頁面php

web2.0  微博、博客交互式頁面css

隨之而來有一些安全問題:html

用戶經過瀏覽器訪問網站,瀏覽器對服務器請求資源前端

web工做流程:

瀏覽器工做流程:

  1. web是什麼?
  2. web發展分爲哪幾個階段?
  3. web安全問題的發展形式?
  4. web的工做流程?
  5. 瀏覽器是如何工做的?

1.1.2web通訊

URL統一資源定位符java

http 超文本傳輸協議,web通訊使用的協議,web基礎mysql

http請求方式:web

get請求不會返回數據體sql

postshell

  1. http referer  如用百度搜索點擊到頁面和直接輸入url點擊鏈接到頁面(告知服務器該請求的來源,瀏覽器自動加上,防止盜鏈,csrf漏洞)
  2. url是什麼?
  3. 描述一下url的格式?
  4. cookie和set-cookie(服務器要求瀏覽器設置cookie,好比用用戶名、密碼登錄後服務器就給瀏覽器頒發cookie)
  5. referer做用?
  6. 狀態碼301/302(跳轉狀態碼)和location(跳轉的地址)

1.2.1HTML

語法,html dom

js動態效果,css圖片

html不區分大小寫

dom 文檔對象模型 將文檔轉換爲樹形結構 更直觀地瞭解頁面元素,經過js能夠對頁面進行任意操做

  1. html包含哪兩部分 ?head,body
  2. html  dom結構?

1.2.2javascript

dom 鏈接web和編程語言   js+dom訪問和操做html文檔的標準方法

bom 鏈接瀏覽器和編程語言

1.2.3web服務器環境

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 下,就能夠訪問到了

1.2.4後端開發基礎--SQL

SQL概述:

創建數據庫:

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 寫入文件


 

1.2.5php

超文本預處理器

用php導出、導入數據庫

導出:打開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導入

 

1.3.1web基礎知識

web前端開發語言大體介紹

web後端開發語言大體介紹

web開發語言設計大盤點

 

在瀏覽器輸入url後的web流程

 

 

 

2、web安全基礎

常見的安全問題

釣魚

發送僞造連接郵件,騙取受害者

 

經過僞造網址讓咱們跳轉到別人設置的頁面,此頁面可能會讓咱們輸入本身的我的信息

  • 誘惑性標題
  • 仿冒真實網站
  • 騙取用戶帳號
  • 騙取用戶資料

篡改

關鍵字

  • hacked by

搜索引擎語法

  • Intitle:Keyword 標題中含有關鍵詞的網頁
  • Intext:Keyword 正文中含有關鍵詞的網頁
  • Site:domain 在某個域名和子域名下的網頁

暗鏈

攻破網站後植入第三方

 

 入侵後添加連接,隱藏在網頁的連接

放入暗鏈主要是提升在搜索引擎的排名,別人在搜索關鍵字時,這些暗鏈的網站能夠排到前面

webshell

大馬

小馬:一句話木馬

webshell主要是後門,控制的流量和正常的流量混合在一塊兒,不易被發現

常見的web漏洞

2.1.2XSS跨站腳本

經過插入惡意腳本盜取用戶信息、釣魚、製造蠕蟲等

分類:

  • 存儲型xss,存儲在服務器中 
  • 反射型xss,從url中觸發xss腳本
  • DOM型xss,經過前端JavaScript將腳本寫到dom中觸發,經過後端寫到響應頁面中,渲染時纔會觸發,在url的hash中

 

因此直接查看源碼查找的是後端源碼,經過搜索xss沒法定位

經過f12查看當前頁面源碼,查找xss能夠看到經過JavaScript調用的語句,發現是經過hash調用,

經過本頁面右擊查看源碼,查找hash,發現後端觸發xss語句

2.1.2CSRF跨站請求僞造

概念:

利用用戶已登錄的身份,在用戶絕不知情的狀況下,以用戶的名義完成非法操做

經過view-source查看url,發現用戶構造了轉帳的form表單,經過form表單提交會有明顯的網頁跳轉狀況

經過iframe嵌入,用戶看到的是外層頁面,感覺不到嵌入網頁的跳轉狀況,才能使用戶不知情的狀況下完成操做

2.2.3點擊劫持

1.前置知識

相信你們都見過俄羅斯套娃,一層嵌套一層,在打開以前,內部是不可見的。網站也能夠實現相似的操做

iframe標籤能夠建立包含另外一個文檔的內聯框架

在瀏覽器中打開,便可打開到src中的網頁

實例:

對網頁進行透明度設置爲0,則網頁不可見。若在網頁上可放上「點擊我」的圖片,當咱們點擊時就會觸發隱藏在圖片之下的網頁按鈕

點擊劫持:經過覆蓋不可見的框架誤導受害者點擊而形成的攻擊行爲

特色:

  •  隱蔽性高
  • 騙取用戶操做
  • UI-覆蓋攻擊
  • 利用iframe或其它標籤的屬性

 實例:(這是視頻中實例代碼的,可是我不知道哪裏錯,等我知道了再回來改,歡迎指正)

<!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>
View Code

2.2.4URL跳轉漏洞

定義:藉助未驗證的URL跳轉,將程序引用到第三方不安全的區域,從而致使安全問題

實現方式:

Header頭跳轉

javascript跳轉

META標籤跳轉

2.2..5SQL注入

 能夠訪問和修改數據,或利用潛在的數據庫漏洞進行攻擊

例題:

流程:

  1. 獲取用戶請求參數
  2. 拼接到代碼中
  3. SQL語句按照咱們構造參數的語義執行

必備條件:

能夠控制輸入的數據

服務器要執行的代碼拼接了控制的數據

本質:數據和代碼未分離,即數據看成了代碼來執行

2.2.6命令注入

 

基本操做:

  • win+r 打開cmd
  • 查看本地網絡:ipconfig
  • 查看系統用戶:net user
  • 查看當前目錄:dir "./"
  • 字符串查找:C:\Users\nihao>find "DELETE" C:\Users\nihao\Desktop\mysql.txt
  • 結果以下:
    • ---------- C:\USERS\NIHAO\DESKTOP\MYSQL.TXT
    •  DELETE FROM teacher WHERE name='Amily';(刪除其中一行)

實例:

curl-I 請求網址並返回http響應頭

實際中「&」在url中爲參數分隔符,但咱們想讓它作命令拼接符 就要進行轉義 %26

過程介紹:

2.2.7文件操做漏洞

  • 文件上傳漏洞
  • 任意文件下載
  • 文件包含漏洞

1.文件上傳漏洞:

上傳可執行腳本

2.任意文件下載

可能致使代碼泄露、數據庫配置文件泄露、系統文件泄露等

利用緣由:未驗證下載文件格式

    未驗證請求的路徑

3.文件包含漏洞

  • 本地文件包含
  • 遠程文件包含

測試遠程文件包含的漏洞中,下面兩個內容要開啓

 

 

3、web漏洞掃描工具初級

3.1敏感文件探測

類型:

  • 網站管理後臺
  • 數據文件
  • 備份文件
  • Webshell

實質:經過猜想文件名,根據返回的http狀態碼判斷文件是否存在

HTTP狀態碼詳解

 

掃描工具:御劍

掃描時所用的字典並非越大越好,因此經過判斷目標網站可能的腳原本選擇字典

3.2漏洞掃描工具的入門

綜合性Web漏掃工具:AWVS,Netsparker,AppScan

使用漏洞掃描工具可能存在的問題:

1.對目標站點進行誤傷:

如高流量,請求了危險的功能

2.盲區:邏輯漏洞

3.評級

4.漏掃工具的解讀和應用

  • 測試用例可能須要調整,就是表面上看掃出來的結果沒什麼,但經過進一步查看可能發現漏洞
  • 誤報 與 漏報
  • 將掃描結果做爲人工測試的線索

3.3SQL注入

複習:

SQL注入主要是由於要執行的數據庫代碼拼接了用戶的輸入的數據

獲取數據庫敏感數據(拖庫)

 

4、在線工具

搜索引擎的高級搜索語法

site:搜索特定的站點信息

info:站點的基本介紹

inurl:搜索URL中包含有指定字符串的網址

intitle:搜索網頁標題中包含指定的字符串網址

intext:搜索站點頁面內容中具備關鍵字內容的網址

filetype:搜索特定後綴名的文件

bing英文版直接輸入ip:xxxxx,同ip站點查詢,旁站

 

實例:

找到目標站點登錄地址並暴力破解密碼

  • site:testphp.vulnweb.com inurl:(login|admin)

像查看目標站點有沒有泄露的數據庫文件

  • site:testphp.vulnweb.com filetype:sql

 

site:http://testphp.vulnweb.com/ inurl:phpinfo.php

交互頁面

  • site:http://testphp.vulnweb.com/ inurl:php?

若是目標站點關閉,能夠查看瀏覽器的緩存:

  • cache:http://testphp.vulnweb.com

 

網絡空間搜索

萬物互聯:我的計算機和服務器、路由器、智能家居、手機、電腦等

如何把每個接入互聯網的設備看做一個節點,就構成了咱們的網絡空間

SHODAN

ZoomEye

FOFA

基本原理:探測/爬取--》識別/打標籤--》存儲拱檢索

在線網絡工具 

基本的站點信息探測:whatweb.net

ip查詢:www,ipip.nwt

www.cmd5.com

tool.chinaz.com

安全導航站點:www.anquanquan.info/#tools

 5、Web安全體系建設

防護:

輸入檢查:

  • 在服務器端檢查
  • 數據合法性校驗:類型、範圍、長度、
  • 儘量使用「白名單」

輸出檢查;

  • 進行特定的過濾和轉義,不讓程序報錯中顯示暴露數據信息

針對性防護:

  • 例如重要的cookie設置爲httponly,這樣xss就獲取不到該cookie

WAF:

  • 防火牆

修復

漏洞知識庫

漏洞修復週期

漏洞複查

安全事件應急響應流程

事件確認:

  • 由產品方、安全方確認事件的真實性
  • 必要時和運維、公關、法務等其餘團隊共同確認

事件彙報:

  • 根據時間等級額外通知對應的負責人

事件處理:

  • 成立安全應急小組
  • 應急方案肯定
  • 應急方案執行
  • 事件恢復

歸檔和覆盤:

  • 進行總結

 

 SDL

(Security Development Lifecycle 安全開發生產週期)

旨在從源頭下降風險,提高web安全應用的安全性

 

 

模糊測試

 

《互聯網企業安全高級指南》 第三章

常見的安全漏洞提交平臺:待補充--

 

 

 

 

ftp、https、file三種協議:

FTP是File Transfer Protocol,文件傳輸協議;

HTTP是Hyper Text Transfer Protocol,超文本傳輸協議;

FILE是本地文件傳輸協議

FTP:

(1)FTP比HTTP複雜

FTP和HTTP同樣都是Internet上普遍使用的協議,用來在兩臺計算機之間互相傳送文件。相比於HTTP,FTP協議要複雜得多。複雜的緣由,是由於FTP協議要用到兩個TCP鏈接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另外一個是數據鏈路,用來上傳或下載數據。

(2)FTP協議有兩種工做方式:PORT方式和PASV方式,中文意思爲主動式和被動式。

PORT(主動)方式的鏈接過程是:客戶端向服務器的FTP端口(默認是21)發送鏈接請求,服務器接受鏈接,創建一條命令鏈路。當須要傳送數據時,客戶端在命令鏈上用PORT命令告訴服務器:「我打開了XXXX端口,你過來鏈接我」。因而服務器從20端口向客戶端的XXXX端口發送鏈接請求,創建一條數據鏈路來傳送數據。

PASV(被動)方式的鏈接過程是:客戶端向服務器的FTP端口(默認是21)發送鏈接請求,服務器接受鏈接,創建一條命令鏈路。當須要傳送數據時,服務器在命令鏈上用PASV命令告訴客戶端:「我打開了XXXX端口,你過來鏈接我」。因而客戶端向服務器的XXXX端口發送鏈接請求,創建一條數據鏈路來傳送數據。

從上面能夠看出,兩種方式的命令鏈路鏈接方法是同樣的,而數據鏈路的創建方法就徹底不一樣。而FTP的複雜性就在於此。

 

 

HTTP

 

當咱們想瀏覽一個網站的時候,只要在瀏覽器的地址欄裏輸入網站的地址就能夠了,例如http://www.microsoft.com,可是在瀏覽...w.microsoft.com ,你知道爲何會多出一個「http」嗎?

 

(1)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協議。

(2)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

File協議主要用於訪問本地計算機中的文件,就如同在Windows資源管理器中打開文件同樣。

uri中爲何本地文件file後面跟三個斜槓, http等協議跟兩個斜槓?

 

URI的結構爲:

 

scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

 

若是有host,前面須要加//,所以對於http或https等網絡地址來講會寫成:

 

https://blog.csdn.net/lishanleilixin/article/category/7191777

 

這樣看上去很天然。若是是文件的話,文件沒有host,因此中間的host部分就不要了,就變成了:

 

file:///lishanleilixin/article/category/7191777

 

由於若是沒有host的話,第一個[]的內容就不存在了,這種贊成的寫法有一個標準叫CURIE。

 

socket:

這是爲了實現以上的通訊過程而創建成來的通訊管道,其真實的表明是客戶端和服務器端的一個通訊進程,雙方進程經過socket進行通訊,而通訊的規則採用指定的協議。

socket只是一種鏈接模式,不是協議,socket是對TCP/IP協議的封裝,Socket自己並非協議,而是一個調用接口(API),

經過Socket,咱們才能使用TCP/IP協議。tcp、udp,簡單的說(雖然不許確)是兩個最基本的協議,

不少其它協議都是基於這兩個協議如,http就是基於tcp的,.用socket能夠建立tcp鏈接,也能夠建立udp鏈接,

這意味着,用socket能夠建立任何協議的鏈接,由於其它協議都是基於此的。

相關文章
相關標籤/搜索