目錄
一.DNS
DNS 基本概述
DNS解析過程
二.HTTPS
TLS握手過程
RSA加密
對稱加密:
非對稱加密:
RSA加密過程
三.使用xdebug調試php
四.信息收集
一.DNS
DNS 基本概述
????????DNS:域名系統(DomainNameSystem)因特網的一項核心服務,相當于互聯網的GPS,可以看成一個巨大的通訊錄,主機訪問域名時,把網址解析為對應IP地址。
與 HTTP、FTP 和 SMTP 一樣,DNS 協議也是一種應用層的協議,DNS 使用客戶-服務器模式運行在通信的端系統之間,在通信的端系統之間通過 UDP 運輸層協議來傳送 DNS 報文。
DNS 通常不是一門獨立的協議,它通常為其他應用層協議所使用,這些協議包括 HTTP、SMTP 和 FTP,將用戶提供的主機名解析為 IP 地址。
DNS解析過程
總體的三大步驟:
1、緩存查找IP2、本機的hosts文件查找IP
3、DNS服務器查找IP
step1:緩存查找IP
第一步:檢查瀏覽器緩存中是否緩存過該域名對應的IP地址
用戶通過瀏覽器瀏覽過某網站之后,瀏覽器就會自動緩存該網站域名對應的IP地址,當用戶再次訪問的時候,瀏覽器就會從緩存中查找該域名對應的IP地址.
但是,瀏覽器的本地緩存,不僅是有大小限制,而且還有時間限制(域名被緩存的時間通過TTL屬性來設置),所以存在域名對應的IP找不到的情況。
當瀏覽器從緩存中找到了該網站域名對應的IP地址,將進行下一步驟。
對于IP的緩存時間問題,不宜設置太長的緩存時間,時間太長,如果域名對應的IP發生變化,那么用戶將在一段時間內無法正常訪問到網站,如果太短,那么又造成頻繁解析域名。
step2:本機的hosts文件查找IP
第二步:如果在瀏覽器緩存中沒有找到IP,那么找本機的hosts文件中是否存在IP配置
如果第一個步驟沒有完成對域名的解析過程,那么瀏覽器會去系統hosts文件中,查找系統是否配置過這個域名對應的IP地址,可以理解為系統也具備域名配置的基本能力。
在Windows系統中,hosts文件位置在C:\Windows\System32\drivers\etc\hosts。
在Linux或者Mac系統中,hosts文件在/etc/hosts 文件中。
對于開發者來說,通過hosts綁定域名和IP,可以輕松切換環境,可以從測試環境切換到開發環境,方便開發和測試。
step3:DNS服務器查找IP
第三步:向本地域名解析服務系統發起域名解析的請求
如果在本地無法完成域名的解析,那么系統只能請求域名解析服務系統進行解析,本地域名系統LDNS一般都是本地區的域名服務器。local dns (local name server)是客戶端網絡設置的一部分,要么是手工配置,要么從DHCP得到。一般local dns 在從網絡上靠近客戶端。
比如你連接的校園網,那么域名解析系統就在你的校園機房里;
如果你連接的是電信、移動或者聯通的網絡,那么本地域名解析服務器就在本地區,由各自的運營商來提供服務。
對于本地DNS服務器地址,Windows系統使用命令ipconfig就可以查看,在Linux和Mac系統下,直接使用命令cat /etc/resolv.conf來查看LDNS服務地址。
二.HTTPS
HTTPS全稱為 Hyper Text Tranfer Protocol over SecureSocket Layer,HTTPS協議也是一個應用層協議,是在HTTP協議的基礎上引入了一個加密層。
傳統的HTTP協議,數據是以明文的形式在網絡上傳輸,意味著一些重要信息(如賬戶信息、支付信息)可能會被有心人攻擊造成泄露。而為了解決這個問題,HTTPS通過使用安全套接字層(SSL,Secure Sockets Layer)或傳輸層安全(TLS,Transport Layer Security)協議對HTTP進行加密,從而在數據傳輸過程中提供加密和認證保護。
TLS握手過程
安全上存在以下三個風險:完整性 可用性 保密性
-
竊聽風險,比如通信鏈路上可以獲取通信內容,用戶號容易沒。
-
篡改風險,比如強制植入垃圾廣告,視覺污染,用戶眼容易瞎。
-
冒充風險,比如冒充淘寶網站,用戶錢容易沒。
HTTPS?在 HTTP 與 TCP 層之間加入了 TLS 協議,來解決上述的風險。
TLS 協議是如何解決 HTTP 的風險的呢?
-
信息加密:HTTP 交互信息是被加密的,第三方就無法被竊取;
-
校驗機制:校驗信息傳輸過程中是否有被第三方篡改過,如果被篡改過,則會有警告提示;
-
身份證書:證明淘寶是真的淘寶網;
可見,有了 TLS 協議,能保證 HTTP 通信是安全的了,那么在進行 HTTP 通信前,需要先進行 TLS 握手。TLS 的握手過程,如下圖:
RSA加密
RSA加密是一種非對稱加密算法。
一種廣泛使用的公鑰加密算法,主要用于安全數據傳輸。公鑰用于加密,私鑰用于解密。
基本概念
- 公鑰加密: RSA 使用一對密鑰:公鑰(公開)和私鑰(保密)。公鑰用于加密,私鑰用于解密。
- 安全性: RSA 的安全性基于大數分解的難度,即從一個大整數中分解出其素因數是計算上困難的。
對稱加密:
? ? ? ? 對稱加密是一種加密方式,加密和解密使用同一個密鑰,被加密的信息在傳輸前用預先協商好的密鑰進行加密,接收方再用同樣的密鑰進行解密。這種方式的優點是加密效率高、加解密速度快,但是缺點是密鑰需要事先共享,如果密鑰被泄漏,則加密無效。
常見的對稱加密算法包括DES、3DES、AES等。
非對稱加密:
? ? ? ? 非對稱加密是一種加密方式,加密和解密使用不同的密鑰。發送方使用公鑰進行加密,接收方使用私鑰進行解密。因為公鑰可以公開,所以只有私鑰知道的加密信息能夠被解密,這種方式的優點是安全性高,缺點是相對于對稱加密而言,加密速度較慢。
RSA加密過程
1.隨機選取1對質數
選取的質數的值越大越安全。
2.計算公共模數
????????n = p * q
?如果質數越大,則乘積n越大。乘積n越大。n轉換為二進制后對應的加密位數越長。越長的加密位數,越容易引發雪崩效應,以減小數據的關聯性。故越安全。
假設p = 65 q = 71 ,則n = 4615,對應的二進制為1001000000111,長度為13位。
3.計算歐拉函數
????????φ(n) = φ(p*q) = (p-1)(q-1)
φ函數計算的是1~n之中的互斥數的個數。
當n=8時候,互質數為1,3,5,7? 即φ(8) = 4
4.生成公鑰
????????1 < e < φ(n)
注意:
- e 的取值必須是整數
- e 和 φ(n) 必須是互質數
5.生成私鑰
????????e * d % m = 1? 其中(φ(n) = m)
?其中d就是所謂的私鑰,而求取d的方式就是解出二元一次方程式.
解除這個二元一次方程式可以通過擴展歐幾里得算法進行求解
三.使用xdebug調試php
第一步:phpstudy中開啟xdebug拓展
第二步:打開php.ini,修改配置文件
第三步:安裝相應的插件
第四步:修改vscode相應配置
打開settings.json并添加php路徑
配置launch.json,注意端口號要跟php.ini中一致
完成后即可開始調試
四.信息收集
在信息收集中,需要收集的信息:目標主機的DNS信息、目標IP地址、子域名、旁站和C段、CMS類型、敏感目錄、端口信息、操作系統版本、網站架構、漏洞信息、服務器與中間件信息、郵箱、人員、地址、等。因為信息收集是滲透的核心,如果信息收集幾分鐘,那么你挖洞就是幾個星期或者幾個月都不會出貨,如果信息收集夠多,那么挖洞就會很快出貨。
利用谷歌語法查找敏感信息
site:xxx.edu.cn ? //最簡單的查找edu站點的Google語法
這個語句是尋找這個學校的相關域名的站點,但是在這個后面加一些敏感信息就可以指定查找了,比如:site:xxx.edu.cn 學號
?這樣的等條件
這里以北京大學舉例
如上圖所示,可以直接從doc或者pdf獲取很多的信息
可以用site:.edu.cn sfz filetype: pdf|xls|doc搜索?
site:xxx.edu.cn intitle:學號 filetype:pdf OR filetype:xls OR filetype:docx