Web基础
1.域名
(1)什么是域名?
相当于网站的名字维基百科对域名的解释是:互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
(2)什么是二级域名多级域名?
1.顶级域名:又叫一级域名,一串字符串中间一个点隔开,例如baidu.com。顶级域名是互联网DNS等级之中的最高级的域,它保存于DNS根域的名字空间中。
2.二级域名:实际上就是一个一级域名以下的主机名,一串字符串中间两个“.”隔开,例如www.baidu.com。二级域名就是最靠近顶级域名左侧的字段。
3.三级域名:二级域名的子域名,特征是包含三个“.”,例如_________._________baidu.com
(3)域名发现对于安全测试意义?
进行渗透测试时,其主域名找不到漏洞时,就可以尝试去测试收集到的子域名,有可能测试子域名网站时会有意向不到的效果,然后可以由此横向到主网站。
域名是可以对应多个ip地址的,但是一个ip地址只是对应于一个域名。
2.DNS
(1)什么是DNS?
域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。 就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。
DNS,是互联网的一项核心服务,它作为可以将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的 IP 地址数据串。
(2)本地Hosts与DNS的关系?
1.Hosts文件主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定。
2.Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
3.浏览器访问网站,要首先通过DNS服务器把要访问的网站域名解析成一个唯一的IP地址,之后,浏览器才能对此网站进行定位并且访问其数据。
如何查看本地Hosts文件:
1Win + R:打开运行输入drivers
2输入:c:\windows\system32\drivers\etc
3选择使用记事本或者Notepad、Vs Code 等编程软件打开
(3)CDN是什么?
CDN的全称是Content DeliveryNetwork,即内容分发网络。
CDN的基本思路:是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上(单纯只使用DNS解析,直接PING就会显示出自己的真实IP,如果又使用CDN,PING出来的IP就不是用户的真实IP而是CDN服务器的IP节点。需要绕过CDN后去找真实IP地址。
使用CDN的目的:是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。
通过超级ping的网站可以看到CDN的解析情况https://www.ping.cn/ping/cdivtc.com
常见的DNS安全攻击包括:
-
DNS劫持:黑客通过篡改DNS响应,将用户的域名解析请求重定向到恶意的IP地址,从而使用户访问到错误的网站或受到恶意软件的感染。
-
DNS欺骗:黑客通过发送伪造的DNS响应,欺骗用户的计算机或网络设备,使其将域名解析请求发送到恶意的DNS服务器,从而控制用户的网络流量和访问。
-
DNS投毒:黑客通过向DNS缓存服务器发送伪造的DNS响应,将错误的域名解析信息存储在缓存中,使得用户访问受到干扰或被重定向到恶意网站。
-
DNS隧道:黑客利用DNS协议的特性,将非法的网络流量伪装成DNS查询和响应,从而绕过网络安全设备,进行数据传输和命令控制。
-
DNS暴力破解:黑客通过尝试大量的域名查询请求,使用字典或暴力破解的方式,猜测目标域名的解析记录,从而获取敏感信息或进行未授权访问。
-
DNS拒绝服务(DDoS)攻击:黑客通过发送大量的伪造的DNS请求,使得目标DNS服务器过载,无法正常响应合法用户的请求,从而导致服务不可用。
-
域名劫持:黑客通过获取目标域名的控制权,修改其DNS解析记录,将流量重定向到恶意服务器,从而窃取用户的信息或进行恶意活动。
3.脚本语言
常见脚本语言有哪些?
一种介乎于 HTML 和诸如 JAVA 、 Visual Basic 、 C++ 等编程语言之间的一种特殊的语言。
尽管它更接近后者,但它却不具有编程语言复杂、严谨的语法和规则。
常见的脚本语言有:Python、JavaScript、Asp (逐渐淘汰,基本都是小站点在使用)、Aspx、Php (目前比较流行)javaweb、 pl、cgi等
不同的脚本语言的编写规则不一样,程序产生的漏洞自然也不一样(代码审计)。
4.后门
后门指的是一种非法的访问系统的方式,通常是由攻击者在受攻击的Web应用程序或服务器上留下的一段代码或一组特定的命令,用于绕过正常的身份验证和访问控制机制,从而获取对系统的控制权或敏感信息。
(1)后门的分类
后门可以根据不同的特点和实现方式进行分类。以下是一些常见的后门分类:
-
网页后门:通过在Web服务器上插入恶意代码,利用Web服务的漏洞或弱点来实现远程控制和操作目标系统。
-
线程插入后门:利用系统自身的服务或线程,将后门程序插入其中,从而实现对系统的控制和操作。
-
扩展后门:功能强大的后门,具有多个常驻的安全功能,适合新手使用,但也可能因为功能过于复杂而被检测到。
-
C/S后门(客户端/服务器后门):采用客户端和服务器的控制方式,通过特定的访问方式来启动后门并控制目标系统。
-
物理后门:通过物理方式(例如插入硬件设备或修改硬件)来实现对系统的控制和访问。
(2)后门在安全测试中的实际意义
方便下次 更方便的进来。
获取到相关权限之后,后门相当于一个管道,便于操作。
即使管理员通过改变所有密码之类的方法来提高安全性,仍然能再次侵入,使再次侵入被发现的可能性减至最低。
大多数后门设法躲过日志,大多数情况下即使入侵者正在使用系统也无法显示他已在线。
5.Web
WEB的组成框架模型:网站源码、操作系统、中间件(搭建平台,提供服务的)、数据库。
- 网站源码:用于构建网站的页面和功能;
- 操作系统:为网站提供计算机资源和支持;
- 中间件:提供连接不同应用程序和系统的服务;
- 数据库:用于存储和管理网站的数据。
Web框架组成
1,显示层(浏览器,前端语言)
作用:解析前端语言显示和展示给用户想看到的内容。
2,业务逻辑层(后端脚本语言,操作系统,Web容器)
作用:逻辑,解析用户请求,加载并执行脚本语言。
3,数据访问层(数据库)
**作用:**数据存储和执行SQL语句。
Web相关漏洞
web访问过程
首先明确什么是前端、什么是后端
前端 前端指的是用户可见的界面,如网页上的特效、布局、图片、视频,音频等内容。前端的工作内容 就是将美工设计的效果图的设计成浏览器可以运行的网页,各种媒体让网页的内容更加生动,网页上的 交互形式为用户提供了更好的使用体验,涉及HTML、Javascript、CSS。
后端 什么给网站前端提供支持?用户数据存放在哪里?网站后端主要包括服务器、应用还有数据库。后 端则主要负责业务逻辑的处理,文件处理、数据的增删改查、平台的稳定性、性能等,涉及语言如 PHP、ASP、JSP、Java、Mysql等。
网络通信三要素
(1)IP地址
IP地址是由网络部分和主机部分组成的, 网络部分用来确定在终端是不是在同一个网段,主机部分用来 确定终端的容量大小。 IP地址分为五类,分别为A类、B类、C类、D类、E类。其中A、B、C三类通常用于商业,D类则是组 播,E类用于科研。
A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0
B类地址的表示范围为:128.0.0.0~191.255.255.255,默认网络掩码为:255.0.0.0
C类地址的表示范围为:192.0.0.0.~223.255.255.255,默认网络掩码为:255.255.255.0
公网IP地址与内网IP地址: 公网ip和内网ip主要在网段,以及网络可达性上有区别。
网段上,内网ip一般为: 10.0.0.0~10.255.255.255 172.16.0.0~172.31.255.255 192.168.0.0~192.168.255.255等网段,公网ip为除此之外大部分ip。
回环地址 127.0.0.1,被称为本地回环地址,不属于任何一个有类别地址,它代表设备的本地虚拟接口,用于本地 管理与测试。
(2)端口
应用程序在设备中唯一的标识。
端口号:标识正在计算机设备上运行的进程(程序),被规定为一个 16 位的二进制,范围是 0~65535。
端口类型
周知端口:0~1023,被预先定义的知名应用占用(如:HTTP占用 80,HTTPS占用443)
注册端口:1024~49151,分配给用户进程或某些应用程序。(如:Tomcat占 用8080,MySQL占用3306)
动态端口:49152到65535,之所以称为动态端口,是因为它 一般不固定分配某种进程,而是动态分配。
注意:我们自己开发的程序选择注册端口,且一个设备中不能出现两个程序的端口号一样,否则出错。
(3)协议
网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。 比如说咱们都用微信发消息,那其实这就是一种协议,咱们用的就是微信的协议。 协议是用来规定消息传输的格式的,如:http、https、tcp、ip协议
6.HTTP
HTTP协议是什么?
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTPP有多个版本,目前广泛使用的是HTTP/1.1版本。
一般http中存在如下问题:
请求信息明文传输,容易被窃听截取。
数据的完整性未校验,容易被篡改
没有验证对方身份,存在冒充危险
什么是HTTPS?
为了解决上述HTTP存在的问题,就用到了HTTPS。
HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。
区别
HTTP协议(Hypertext Transfer Protocol)是一种用于传输超文本的协议,它是基于TCP/IP协议的应用层协议。HTTP协议使用明文传输数据,不对数据进行加密,因此在传输过程中容易被窃听和篡改。
HTTPS协议(Hypertext Transfer Protocol Secure)是在HTTP协议的基础上加入了SSL/TLS协议进行加密的协议。HTTPS协议通过使用SSL/TLS协议对传输的数据进行加密,使得数据在传输过程中不容易被窃听和篡改。
具体的区别如下:
- 安全性:HTTP协议传输的数据是明文的,容易被窃听和篡改,而HTTPS协议通过加密传输数据,提供了更高的安全性。
- 数据传输方式:HTTP协议使用的是80端口进行数据传输,而HTTPS协议使用的是443端口进行数据传输。
- 证书:HTTPS协议需要使用SSL/TLS证书来验证服务器的身份,确保数据传输的安全性。
- 速度:由于HTTPS协议需要进行加密和解密的操作,相比HTTP协议会稍微慢一些。
- 使用场景:HTTP协议适用于一些对数据安全性要求不高的场景,而HTTPS协议适用于对数据安全性要求较高的场景,如银行、电子商务等网站。
- SEO影响:由于Google等搜索引擎对HTTPS网站的推广力度较大,使用HTTPS协议的网站在搜索结果中更容易排名靠前。
HTTP报文抓取方法:
- Firefox浏览器自带开发者工具F12
- Burp,yakit等抓包工具(注意使用Burp破解版并导入证书才可抓取HTTPS流量)
1. F12抓取Http报文
2.Burp Suite,yakit等抓包工具抓取报文
请求报文(Request)
什么是请求报文(Request)?
请求资源时,客户端向Web服务器发送一个文本形式的请求报文,请求报文按照请求行、请求头部、空行和请求数据4部分有序组成。
GET /1.php HTTP/1.1 -------------请求行
Host: 192.168.1.100 -------------请求头部
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
----------空行(不能省略)
------------请求数据(由于是调用get方法,一般请求请求数据的body部分为空)
post请求
POST /post/?age=123 HTTP/1.1 ------------------------------请求行
Host: 123.206.87.240:8002
Content-Length: 10
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
Origin: http://123.206.87.240:8002
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://123.206.87.240:8002/post/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: PHPSESSID=1
Connection: close
------------------------------空
name=huihe ------------------------------请求数据
响应报文(Response)
什么是响应报文(Response)?
在接收到请求后,服务器会解析请求,定位请求资源,最后将资源复本写到TCP套接字发送到客户端。一个响应由状态行、响应头部、空行和响应数据4部分组成。
响应报文示例
HTTP/1.1 200 OK -----------------------------状态行 HTTP/1.1 200表示访问成功 OK表示访问成功
Server: nginx -----------------------------------响应报头
Date: Tue, 09 Jun 2020 14:03:01 GMT -----------------------------------消息报头
Content-Type: text/html -----------------------------------消息报头
Connection: close -----------------------------------------消息报头
Content-Length: 95
-----------------------------------空行
hello world -----------响应数据
HTTP字段表
Header | 解释 | 示例 |
---|---|---|
Accept | 指定客户端能够接收的内容类型 | Accept: text/plain, text/html,application/json |
Accept-Charset | 浏览器可以接受的字符编码集。 | Accept-Charset: iso-8859-5 |
Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型。 | Accept-Encoding: compress, gzip |
Accept-Language | 浏览器可接受的语言 | Accept-Language: en,zh |
Accept-Ranges | 可以请求网页实体的一个或者多个子范围字段 | Accept-Ranges: bytes |
Authorization | HTTP授权的授权证书 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Cache-Control | 指定请求和响应遵循的缓存机制 | Cache-Control: no-cache |
Connection | 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) | Connection: close |
Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 | Cookie: $Version=1; Skin=new; |
Content-Length | 请求的内容长度 | Content-Length: 348 |
Content-Type | 请求的与实体对应的MIME信息 | Content-Type: application/x-www-form-urlencoded |
Date | 请求发送的日期和时间 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
Expect | 请求的特定的服务器行为 | Expect: 100-continue |
If-Match | 只有请求内容与实体相匹配才有效 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
If-None-Match | 如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变 | If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Range | 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag | If-Range: “737060cd8c284d8af7ad3082f209582d” |
Max-Forwards | 限制信息通过代理和网关传送的时间 | Max-Forwards: 10 |
Pragma | 用来包含实现特定的指令 | Pragma: no-cache |
Proxy-Authorization | 连接到代理的授权证书 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range | 只请求实体的一部分,指定范围 | Range: bytes=500-999 |
TE | 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 | TE: trailers,deflate;q=0.5 |
Upgrade | 向服务器指定某种传输协议以便服务器进行转换(如果支持) | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
User-Agent | User-Agent的内容包含发出请求的用户信息 | User-Agent: Mozilla/5.0 (Linux; X11) |
Via | 通知中间网关或代理服务器地址,通信协议 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
X-Forwarded-For | 它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。(HTTP_X_FORWARDED_FOR) | X-Forwarded-For:127.0.0.1 localhost |
Referer | 先前网页的地址,当前请求网页紧随其后,即来路。HTTP_REFERER | Referer: http://www.zcmhi.com/archives… |
Clinet-IP | 用户真正IP地址 接收变量HTTP_CLIENT_IP | Clinet-ip:123.123.123.123 |
If-Modified-Since | 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 | If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
If-Unmodified-Since | 只在实体在指定时间之后未被修改才请求成功 | If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
From | 发出请求的用户的Email | From: user@email.com |
Host | 指定请求的服务器的域名和端口号 | Host: www.zcmhi.com |
Request Method | HTTP通常使用请求方法 | **GET、POST、**HEAD、OPTIONS、PUT、 DELETE、TRACE 、 CONNECT |
Status Code | 浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 | 200、404、301、302、500 |
常见状态码
200 OK - 客户端请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 - 请求资源不存在,可能是输入了错误的URL
500 - 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
7.题目
View-source 类:
浏览器打开html源代码的三种方式:
- F12
- CTRL + U
- 右键查看网页源代码
- 浏览器地址栏输入
view-source:网址
例题1:view_source https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5061&page=1
例题2:[BSidesCF 2019]Futurella https://buuoj.cn/challenges#[BSidesCF 2019]Futurella
例题3:key究竟在哪里呢? http://lab1.xseclab.com/base7_eb68bd2f0d762faf70c89799b3c1cc52/index.php hackinglab
例题4:头等舱 https://ctf.bugku.com/challenges/detail/id/77.html
前端绕过题:
例题1:disabled_button https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5066&page=1
例题2:计算器 https://ctf.bugku.com/challenges/detail/id/69.html Bugku html之maxlength
例题3:key究竟在哪里呢? http://lab1.xseclab.com/base7_eb68bd2f0d762faf70c89799b3c1cc52/index.php hackinglab
例题4:头等舱 https://ctf.bugku.com/challenges/detail/id/77.html