一、基础名词概念
第一课基础概念与名词
一、基础的概念
1、网络安全的几个阶段
Web攻击技术的发展也可以分为几个阶段。
动态脚本
在Web 1.0时代,人们更多的是关注服务器端动态脚本的安全问题,比如将一个可执行脚本(俗称webshell)上传到服务器上,从而获得权限。动态脚本语言的普及,以及Web技术发展初期对安全问题认知的不足导致很多“血案”的发生,同时也遗留下很多历史问题,比如PHP语言至今仍然只能靠较好的代码规范来保证没有文件包含漏洞,而无法从语言本身杜绝此类安全问题的发生。
SQL 注入
SQL 注入的出现是Web安全史上的一个里程碑,它最早出现大概是在1999年,并很快就成为Web安全的头号大敌。就如同缓冲区溢出出现时一样,程序员们不得不日以继夜地去修改程序中存在的漏洞。黑客们发现通过SQL注入攻击,可以获取很多重要的、敏感的数据,甚至能够通过数据库获取系统访问权限,这种效果并不比直接攻击系统软件差, Web攻击一下子就流行起来。SQL注入漏洞至今仍然是Web安全领域中的一个重要组成部分。
XSS
XSS (跨站脚本攻击)的出现则是Web安全史上的另一个里程碑。实际上,XSS的出现时间和SQL注入差不多,但是真正引起人们重视则是在大概2003年以后。在经历了MySpace的XSS螺虫事件后,安全界对XSS的重视程度提高了很多, OWASP 2007 TOP 10威胁甚至把XSS排在榜首。
XSS、CSRF
伴随着Web 2.0的兴起, XSS、CSRF等攻击已经变得更为强大。Web攻击的思路也从服务器端转向了客户端,转向了浏览器和用户。黑客们天马行空的思路,覆盖了Web的每一个环节,变得更加的多样化,这些安全问题,在本书后续的章节中会深入地探讨。
现如今
Web技术发展到今天,构建出了丰富多彩的互联网。互联网业务的蓬勃发展,也催生出了许多新兴的脚本语言,比如Python、Ruby、NodeJS等,敏捷开发成为互联网的主旋律。而手机技术、移动互联网的兴起,也给HTML 5带来了新的机遇和挑战。与此同时,Web安全技术,也将紧跟着互联网发展的脚步,不断地演化出新的变化。
2、安全三要素
要全面地认识一个安全问题,我们有很多种办法,但首先要理解安全问题的组成属性。前人通过无数实践,最后将安全的属性总结为安全三要素,简称CIA。
安全三要素是安全的基本组成元素,分别是机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。
机密性要求保护数据内容不能泄露,加密是实现机密性要求的常见手段。
举一个例子,存放一个文件,加入文件不是放在抽屉里,而是放在一个透明的玻璃盒子里,那么虽然外人无法直接取得文件,但因为玻璃盒子是透明的,文件内容可能还是会被人看到,所以不符合机密性要求。但是如果给文件增加一个封面,掩盖了文件内容,那么也就起到了隐藏的效果,从而满足了机密性要求。可见,我们在选择安全方案时,需要灵活变通,因地制宜,没有一成不变的方案。
完整性则要求保护数据内容是完整、没有被复改的。常见的保证一致性的技术手段是数字签名。
传说清朝康熙皇帝的遗诏,写的是“传位十四子”,被当时还是四阿哥的胤镇寡改了遗诏,变成了“传位于四子”。姑且不论传说的真实性,在故事中,对这份遗诏的保护显然没有达到完整性要求。如果在当时有数字签名等技术,遗诏就很难被算改。从这个故事中也可以看出数据的完整性、一致性的重要意义。
可用性要求保护资源是“随需而得”。
假设一个停车场里有100个车位,在正常情况下,可以停100辆车。但是在某一天,有个坏人搬了100块大石头,把每个车位都占用了,停车场无法再提供正常服务。在安全领域中这种攻击叫做拒绝服务攻击,简称DoS(Denial of Service)。拒绝服务攻击破坏的是安全的可用性。
3、一般流程

4、常见的攻击方式
- 逻辑漏洞
- 常见利用程序内部的逻辑漏洞进行攻击
- 简单的处理方式就是加强研发能力与测试程度
- 非法输入
- XSS
- SQL注入
- 处理方式 加强代码安全
- 数据窃取
- 爬虫
- 处理方式 加强代码安全
- 盗刷资源(拒绝服务攻击)
- 洪水攻击
- DOS攻击
- 处理方式:锁ip,监控ip,(不差钱可以上个高防)
- 文件上传
- 植入木马
- 处理方式 加强代码安全
- 零日攻击
- 加强网络安全学习
二、基础名词
1、域名
- 什么是域名?
相当于网站的名字维基百科对域名的解释是:互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
网域名称系统(Domain Name System)有时也简称为域名(DNS),是互联网的一项核心服务,它作为可以将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的 IP 地址数据串。
- 域名在哪里注册?
1.Godaddy
2.Gandi
3.Hover
4.Namesilo
5.Namecheap
6.万网
- 什么是二级域名多级域名?
1.顶级域名:又叫一级域名,一串字符串中间一个点隔开,例如baidu.com。顶级域名是互联网DNS等级之中的最高级的域,它保存于DNS根域的名字空间中。
2.二级域名:实际上就是一个一级域名以下的主机名,一串字符串中间两个“.”隔开,例如www.baidu.com。二级域名就是最靠近顶级域名左侧的字段。
3.三级域名:二级域名的子域名,特征是包含三个“.”,例如___.___.baidu.com...
例如www.dns0755.net是dns0755.net的子域名,而dns0755.net又是net的子域名。国际顶级域名的子域名叫做二级域名。
如A.com是一级域名,A.B.com则是二级域名。一级域名较二级域名级别更高,而二级域名则是依附于一级域名下的附属分区域名,即二级域名是一级域名的细分层级。
通过网址上【.】数量来判断域名层级,有多少【.】就为几级域名,如A.com是一级域名,A.B.com则是二级域名。
如:baidu.com 是百度的顶级域名,zhidao.baidu.com 是二级域名,zhidao.zhidao.baidu.com 是三(多)级域名,*.baidu.com 是泛域名。
- 域名发现对于安全测试意义?
进行渗透测试时,其主域名找不到漏洞时,就可以尝试去测试收集到的子域名,有可能测试子域名网站时会有意向不到的效果,然后可以由此横向到主网站。
2、DNS
- 什么是DNS?
域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。 就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。
- 本地Hosts与DNS的关系?
Hosts文件主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定。
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
浏览器访问网站,要首先通过DNS服务器把要访问的网站域名解析成一个唯一的IP地址,之后,浏览器才能对此网站进行定位并且访问其数据。
如何查看本地Hosts文件:
-
Win + R:打开运行输入drivers
-
输入:c:\windows\system32\drivers\etc
-
选择使用记事本或者Notepad、Vs Code 等编程软件打开
-
CDN是什么?与DNS的关系?
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安全攻击有哪些?
- DDOS
DDoS攻击也叫做分布式拒绝服务攻击,可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用。攻击者可以伪造自己的DNS服务器地址,同时发送大量请求给其他服务器。其他服务器的回复会被发送到被伪造服务器的真实地址,造成该服务器无法处理请求而崩溃。攻击者同样可以通过利用DNS协议中存在的漏洞,恶意创造一个载荷过大的请求,造成目标DNS服务器崩溃。
- DNS缓存中毒:
DNS缓存中毒攻击者给DNS服务器注入非法网络域名地址,如果服务器接受这个非法地址,那说明其缓存就被攻击了,而且以后响应的域名请求将会受黑客所控。当这些非法地址进入服务器缓存,用户的浏览器或者邮件服务器就会自动跳转到DNS指定的地址。这种攻击往往被归类为域欺骗攻击(pharming attack),由此它会导致出现很多严重问题。首先,用户往往会以为登陆的是自己熟悉的网站,而它们却并不是。与钓鱼攻击采用非法URL不同的是,这种攻击使用的是合法的URL地址。
- 域名劫持(DNS重定向):
域名劫持是通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。域名劫持一方面可能影响用户的上网体验,用户被引到假冒的网站进而无法正常浏览网页,而用户量较大的网站域名被劫持后恶劣影响会不断扩大;另一方面用户可能被诱骗到冒牌网站进行登录等操作导致泄露隐私数据。
- DNS查询嗅探:
攻击者主要利用对DNS的配置信息获取网络环境的信息,为之后的攻击做好的准备。
针对这些情况,我们需要对DNS服务器需要采取特别的安全保护措施,在防火墙网络中,分开设置内部DNS服务器和外部DNS服务器,连接外部服务的外部DNS服务器上不留有对外禁止访问的内部网络系统的服务器,做到内外网络服务器分割。
- ARP欺骗:
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP病毒,则感染该ARP病毒的系统将会试图通过”ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。
ARP欺骗通常是在用户局网中,造成用户访问域名的错误指向。如果IDC机房也被ARP病毒入侵后,则也可能出现攻击者采用ARP包压制正常主机、或者压制DNS服务器,以使访问导向错误指向的情况。
- 本机劫持:
本机的计算机系统被木马或流氓软件感染后,也可能会出现部分域名的访问异常。
3、CDN
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

借用阿里云官网的例子,来简单介绍CDN的工作原理

假设通过CDN加速的域名为www.a.com,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下:
- 当终端用户(北京)向
www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。 - LDNS检查缓存中是否有
www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。 - 当授权DNS解析
www.a.com时,返回域名CNAMEwww.a.tbcdn.com对应IP地址。 - 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。
- LDNS获取DNS返回的解析IP地址。
- 用户获取解析IP地址。
- 用户向获取的IP地址发起对该资源的访问请求。
- 如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如,图中步骤7和8,请求结束。
- 如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,例如,图中的北京节点,并返回给用户,请求结束。
4、 脚本语言
- 常见脚本语言有哪些?
一种介乎于 HTML 和诸如 JAVA 、 Visual Basic 、 C++ 等编程语言之间的一种特殊的语言。
尽管它更接近后者,但它却不具有编程语言复杂、严谨的语法和规则。
常见的脚本语言有:Python、JavaScript、Asp (逐渐淘汰,基本都是小站点在使用)、Aspx、Php (目前比较流行)javaweb、 pl、cgi等
- 不同脚本类型与安全漏洞的关系?
- 不同的脚本语言的编写规则不一样,程序产生的漏洞自然也不一样(代码审计)。
- 漏洞挖掘代码审计与脚本类型的关系?
- 漏洞挖掘代码审计:要熟悉相关代码和相关逻辑机制
5、后门
- 什么是后门?有那些后门?
在信息安全领域,后门是指绕过安全控制而获取对程序或系统访问权的方法。
后门的最主要目的就是方便以后再次秘密进入或者控制系统。
后门的分类
1.网页后门 :
此类后门程序一般都是服务器上正常 的web服务来构造自己的连接方式,比如现在非常流行的ASP、cgi脚本后门等。
2.线程插入后门:
利用系统自身的某个服务或者线程,将后门程序插入到其中,具体原理原来《黑客防线》曾具体讲解过,感兴趣的朋友可以查阅。这也是现在最流行的一个后门技术。
3.扩展后门:
所谓的“扩展”,是指在功能上有大的提升,比普通的单一功能的后门有很强的使用性,这种后门本身就相当于一个小的安全工具包,能实现非常多的常驻见安全功能,适合新手使用————但是,功能越强,个人觉得反而脱郭后门“隐蔽”的初衷,具体看法就看各位使用都的喜好了。
4.C/S后门(客户端服务器后门):
和传统的木马程序类似的控制方法,采用“客记端/服务端”的控制方式,通过某种特定的访问方式来启动后门进而控制服务器。
- 后门在安全测试中的实际意义?
方便下次更方便的进来。
获取到相关权限之后,后门相当于一个管道,便于操作。
即使管理员通过改变所有密码之类的方法来提高安全性,仍然能再次侵入,使再次侵入被发现的可能性减至最低。
大多数后门设法躲过日志,大多数情况下即使入侵者正在使用系统也无法显示他已在线。
- 关于后门需要了解那些?(玩法,免杀)
玩法(创建后门之后我们可以怎么样操作?)
网站后门:便于控制网站
软件后门:用于控制
服务器后门:可以进行脱库、盗取信息
免杀技术全称为反杀毒技术Anti Anti-Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。
由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容。
其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。
后门需要掌握的核心技能,防止杀毒软件检查到
6、web
- web的组成框架模型?
- WEB的组成框架模型:网站原码、操作系统、中间件(搭建平台,提供服务的)、数据库。

- 架构漏洞安全测试的简要测试
通信层
主要测试通信协议的安全,系统开放的端口,其中操作系统提供网络层和数据链路层协议,存在问题的可能性较小,一般关注开源协议已存在漏洞即可,无需重点关注。应用层服务与协议一般由产品形态决定,产品中可以自定义配置相关协议与参数,需要重点关注与测试。
应用层
应用层包含开发人员开发代码,为整个安全测试的核心模块。主要包括web安全测试,源码安全测试。其中web安全测试从web访问服务的维度,偏向黑盒,进行安全测试。源码安全测试从代码的维度,偏向白盒,进行安全测试。
系统层
主要测试操作系统安全,数据库服务安全,web服务器安全,以及其他一些中间件的安全。
管理层
主要包括产品资料的安全测试,安全策略制定,协调各个层面的安全测试以及安全风险的整体评估。
- 为什么要从web界面为主
因为web使用方面广 。
从WEB方向先入手,一步一步的获取最高权限。
7、web相关漏洞

8、演示案例
- layer子域名探测
链接:https://pan.baidu.com/s/1YFu9V0WtdG905eaVFNFa0A
提取码:zkaq

9、扩展一下
-
intitle
- 含义:把搜索范围限定在限定在网页标题内
- 语法结构:intitle:你要查找的信息 (此信息会被限定在网页标题内)
- 例:intitle:ps,寻找关于ps的相关信息。
-
inurl
- 含义:把搜索范围限定在URL链接中
- 语法结构:你要查找的信息 inurl:相关信息
- 例:查找关于hacker的相关信息,就可以输入inurl:hacker
-
filetype
- 含义:指定文件下载
- 格式:filetype:文件类型
- 例:ps filetype:pdf
-
site
- 含义:把搜索范围限定在特定站点中
- 语法结构:你要查找的信息 site:去掉WWW后的网站地址
- 例:ps site:51cto.com

浙公网安备 33010602011771号