目录
一.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