网络空间安全基础(待续)

网络空间安全概述

基本概念

1)计算机安全:通常采取适当行动保护数据和资源,使它们免受偶然或恶意动作的伤害;

2)数据的完整性:数据所具有的特性,即无论数据形式做何变化,数据的准确性和一致性均保持不变;

3)保密性、机密性:数据所具有的特性,即表示数据所达到的未提供或未泄露给未授权的个人、过程或其他实体的程度;

4)可用性:数据或资源的特性,被授权实体按要求能访问和使用数据或资源;

5)风险评估:一种系统的方法,用于标识出数据处理系统的资产,对这些资产的威胁以及该系统对这些威胁的脆弱性;

6)威胁:一种潜在的计算机安全违规;

7)脆弱性:数据处理系统中的弱点或纰漏;

8)风险:特定的威胁利用数据处理系统中特定的脆弱性的可能性;

9)主体:能访问客体的主动实体;

10)客体:一种实体,对该实体的访问是受控的;

11)敏感信息:由权威机构确定的必须受保护的信息,因为该信息的泄露、修改、破坏或丢失都会对人或事产生可预知的损害;

12)密码学:一门学科,包含数据变换的原则、手段及方法,以便隐藏数据的语义内容,防止未经授权的使用或未经检测的修改;

13)加密:数据的密码变换,加密的结果是密文,相反的过程称为解密;

14)单向加密:一种加密技术,它只产生密文,而不能将密文再生为原始数据;

15)明文:不利用密码技术即可得出语义内容的数据;

16)密文:利用加密产生的数据,若不使用密码技术,则得不到其语义内容;

17)私有密钥:一种密钥,为拥有者专用于解密操作的位串,简称私钥;

18)公开密钥:一种密钥,任意实体都可用它与相对应的私钥拥有者进行加密通信,简称公钥;

19)访问控制:一种保证手段,即数据处理系统的资源只能由被授权实体按授权方式进行访问;

20)最小特权:将主体的访问权限制到最低限度,即仅执行授权任务所必需的那些权利;

21)隐蔽通道:可用来按照违反安全策略的方式传送数据的传输信道;

22)病毒:一种在用户不知情或未批准下,能自我复制或运行的程序,病毒往往会影响到受感染设备的正常运作,或是让设备被控制而不自知,进而盗窃数据或者利用设备作其他用途;

23)蠕虫:一种独立程序,它可通过数据处理系统或计算机网络传播自身;

24)特洛伊木马:一种后门程序,用来盗取目标用户的个人信息,甚至是远程控制对方的计算机进行加壳制作,然后通过各种手段传播或骗取目标用户执行该程序,以达到盗取密码等数据资料的目的;

安全体系

1)信息安全三要素:机密性、完整性、可用性;

2)PDR模型:

  防护(Protection,P):采用一系列手段(识别、认证、授权、访问控制、数据加密等)保障数据的保密性、完整性、可用性、可控性以及不可否认性等;

  检测(Detection,D):利用各类工具检查系统可能存在的可导致黑客攻击、病毒泛滥的脆弱性,即入侵检测、病毒检测等;

  响应(Response,R):对危及安全的事件、行为、过程及时做出响应处理,杜绝危害的进一步蔓延扩大,力求将安全事件的影响降到最低;

注:实现安全,需要让防护时间>检测时间+响应时间;

3)P2DR模型:

  策略(Policy,P):是模型的核心,意味着网络安全要达到的目标,决定各种措施的强度;

  防护(Protection,P):安全的第一步,包括制定安全规章(以安全策略为基础执行安全细则)、配置系统安全(配置操作系统、安装补丁等)、采用安全措施(安装和使用防火墙、VPN等);

  检测(Detection,D):检测是对上述二者的补充,通过检测发现系统或网络的异常情况,发现可能的攻击行为;

  响应(Response,R):发现异常或攻击行为后系统自动采取的行动,目前的入侵响应措施比较单一,主要是关闭端口,中断连接,中断服务等;

4)P2DR2模型:策略、防护、检测、响应、恢复(Restore);

5)P2OTPDR2模型:策略、防护、操作(Operation)、技术(Technology)、人(People)、检测、响应、恢复;

6)MAP2DR2模型:管理(Management)、审计(Audit)、策略、防护、检测、响应、恢复;

7)纵深防御战略(Defense in Depth):人、技术、操作

密码学及应用

密码学概述

一个典型的密码系统由明文、密文、密钥、密码算法组成

网络空间安全基础(待续)_第1张图片

 1)密码算法从功能上可以分为加/解密算法、签名算法、摘要算法(散列算法)、鉴别算法等;从密码结构上可以分为不使用密钥的算法(散列算法)和使用密钥的算法(对称密钥算法和非对称密钥算法);

2)用五元组(M,C,K,E,D)来表示密码系统,M为明文空间、C为密文空间、K为密钥空间、E表示加密算法、D表示解密算法;

对称密码体制

对称分组密码

1)对称分组密码的加解密过程

网络空间安全基础(待续)_第2张图片

 2)典型对称分组密码算法

  DES:该算法提取64位密钥中的56位作为有效密钥,对64位明文分组进行加密;

  2DES、3DES:分别称为二重DES,三重DES,将DES算法进行扩展,加(解)密算法不变,只是采用了不同的密钥完成多次加解密;

  IDEA:属于一种专利算法,使用128位的密钥,对64位的明文分组进行加密;

  AES:高级加密标准,分组长度可为128位,192位,256位,密钥长度可为128位,192位,256位;

3)对称分组密码的模式

 对称分组密码只能加密固定长度的分组,但是实际中需要加密的明文长度可能会超过分组长度,所以需要对对称分组密码算法进行迭代,将很长的一段明文全部加密,迭代的方式称为模式;

 5种对称分组密码模式:

    ECB:电子密码本(Electronic Codebook,ECB)模式,最简单的加密模式,该模式下明文消息被分成固定大小的块(分组),每个块被单独加密且使用相同的加密算法,可以进行并行计算,缺点是安全性较差,加密前明文数据量需要填充到块大小的整数倍;

    CBC:密码块链(Cipher Block Chaining,CBC)模式,常用的加密模式,该模式下明文加密后的数据进行异或(XOR)运算,然后再进行加密,这样每个密文块依赖该块之前的所有明文块,每条消息都具有唯一性,缺点是加密是连续的,不能并行处理,明文数据量必须填充到块大小的整数倍;

    CFB:密码反馈(Cipher Feedback,CFB)模式,该模式下将前一个分组的密文加密后和当前分组的明文进行异或运算生成当前分组的密文;

    OFB:输出反馈(Output Feedback,OFB)模式,该模式将分组密码转换成同步流密码,可以根据明文长度先独立生成相应长度的流密码;

    CTR:计数器(Counter,CTR)模式,该模式下将分组密码转换成流密码,通过加密"计数器"的连续值来产生下一个密钥流块;

DES算法

1)DES算法是一种对称分组加密算法,明文分组长度为64位,密钥长度也为64位,由于密钥的第8,16,24,32,40,48,56,64位为奇偶校验位,所以密钥的实际长度为56位,更长的明文被分为64位的分组来处理;

2)DES算法的加密过程:

  IP变换:明文A(64位)通过IP变换表对当前的64位明文分组进行变换操作;

  迭代:将经过IP变换后的数据,分为两个32位的数据,分别是L0和R0,R0作为下一迭代的L1,同时K1和R0通过f函数进行处理,最后与L0进行异或运算,输出结果作为R1,按照以上逻辑迭代16次。

  IP-1变换(IP逆变换)和密文输出:将完成16次迭代后的64位数据按照IP-1进行变换,变换结果即为输出的密文;

网络空间安全基础(待续)_第3张图片

3)IP变换:将长度为64位的明文数据,按照IP变换表的数值进行排序;

4)密钥:用于在16次迭代过程中参与数据处理,每一轮迭代输入的密钥均不相同,即通过算法的变换处理,将输入的64位密钥变换成16个不相同的子密钥;

流密码体制

分组密码是将明文数据按照规定长度进行分组处理,而流密码是在密钥和算法的作用下,对明文的每一位或每一字节进行处理;流密码技术也称为序列密码技术,属于“一次一密”的密码体制;

RC4算法

1)RC4属于典型的流密码算法,也是一种对称加密算法,该算法不是对明文进行分组处理,而是以字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密;

2)RC4算法简单,运行速度快,密钥长度可变;

3)RC4算法的关键变量:密钥流,状态向量S,临时向量T,密钥K;

4)RC4算法流程:

//1.初始化S和T
for i=0 to 255 do
S[i]=i;
T[i]=K[i mod keylen];
//2.初始排列S
for i=0 to 255 do
j=(j+S[i]+T[i]) mod 256;
swap(S[i],S[j]);
//3.产生密钥流
for r=0 to len do   //r为明文长度,r字节
i=(i+1) mod 256;
j=(j+S[i]) mod 256;
swap(S[i],S[j]);
t=(S[i]+S[j]) mod 256;
k[r]=S[t];

由于RC4算法加密采用的是异或运算,因此一旦子密码序列出现了重复,密文就有可能被破解;

公钥密码体制

1)非对称密码体制(公钥密码体制,双钥密码体制):加密密钥与解密密钥不相同的密码体制,公开的密钥称为公钥,保密的密钥称为私钥;

2)公钥密码体制可用于进行数字签名和密钥交换保护,通信双方可以通过公开的途径得到对方的公钥,然后利用公钥将后续用到的对称加密的密钥加密后发送给对方,对方即可利用自己的私钥解密后得到对称加密的密钥,然后利用此密钥进行对称加密,从而实现保密通信;

3)公钥密码体制的优点:通信时只保密私钥,不需要时常更换公钥/私钥对,大型网络中密钥分配和管理简单;

4)公钥密码体制的缺点:算法复杂,运算速度慢;

公钥密码体制原理

公钥加密,私钥解密;

1)加/解密流程

(1.消息接收端系统,产生一对用于加密和解密的密钥,如图中的接收者B;

(2.B将公钥予以公开,私钥则被保密;

(3.发送者A向接收者B发送消息m时,使用接收者B的公钥加密m;

(4.接收者B收到密文c后,用自己的私钥解密;

网络空间安全基础(待续)_第4张图片

2)消息来源和消息完整性认证流程

  发送者A产生私钥和公钥,用私钥加密;接收者B用A产生的公钥解密;

网络空间安全基础(待续)_第5张图片

3)双重加/解密模型

  发送者A用自己的私钥加密,用于提供数字签名,再用接收者B的公钥二次加密;解密时,接收者A先用私钥,再用发送者B的公钥对密文进行两次解密;

网络空间安全基础(待续)_第6张图片

 RSA算法

 是迄今为止理论上最为成熟完善的公钥加密算法之一,既可用于加密,又可用于数字签名、身份认证和密钥管理;

1)基本思想:两个大素数p和q相乘得到的乘积n比较统一计算,但从乘积n分解出这两个大素数p和q很困难;

2)实现步骤:

  //1.计算密钥对:公钥(e,n),私钥(d,n)

  选取两个位数相近的大素数p和q;

  计算n=pxq;

  计算欧拉函数(n)=(p-1)x(q-1);

  随机选取一个正整数e,满足e与欧拉函数(n)互质,即e与欧拉函数(n)的最大公约数是1

  计算正整数d,满足dxe=1 mod 欧拉函数(n); 密钥对:公钥(e,n),私钥(d,n),用户销毁p和q;

  //2.加密解密

  加密过程:输入明文M,公钥(e,n);输出密文 C=M^e mod n;

  解密过程:输入密文C,私钥(d,n);输出明文 M=C^d mod n;

3)RSA算法的优点:密钥管理简单、便于数字签名、可靠性较高;

4)RSA算法的缺点:算法复杂,加解密速度慢,难于用硬件实现;

散列算法

散列函数根据目标明文生成具有相同长度的、不可逆的散列值(消息摘要),散列函数不可逆,通常用于检测文件或报文是否被修改;

MD5算法

MD5算法对输入任意长度的消息进行运算,产生一个128位的消息摘要,也称为指纹;

1)MD5算法实现过程:

  分组填充:将输入数据划分为512位的分组,且每一分组又被划分为16个32位的子分组。如果输入信息的长度对512取余后的结果不等于448,就需要填充使得对512求余的结果等于448。填充的方法是填充一个1和若干个0.

  记录信息长度:用64位来存储填充前信息长度,这64位附加在第一步处理结果的后面,此时信息长度为Nx512+448+64=(N+1)x512;

  装入标准幻数(4个整数):标准幻数的物理顺序是A=0x01234567,B=0x89ABCDEF,C=0xFEDCBA98,D=0x76543210;

  然后,将每组的4个32位子分组进行一系列的移位、与、或等运算后,将算法输出的4个32位子分组合并后生成一个128位散列值,作为MD5算法的最终输出;

网络空间安全基础(待续)_第7张图片

SHA系列算法

SHA家族的5个算法分别是SHA-1,SHA-224,SHA-256,SHA-384,SHA-512,后4个并称为SHA-2算法,最受欢迎的是SHA-2算法;

1)SHA算法抗击穷举法攻击和密码分析攻击的强度高于MD5算法;

2)SHA算法的速度要比MD5算法的速度慢;

3)MD5算法使用小字节序(little-endian)方式,SHA算法使用大字节序(big-endian)方式;

数字签名

1)数字签名是公钥密码体制的一种应用,包含签名过程(使用私钥进行加密)和验证过程(接收者或验证者使用公钥进行解密);

2)签名的产生必须使用发送者独有的一些信息以防仿造和否认;签名的产生、识别、验证应较为容易;伪造已经签过名的信息,或对已知的消息构造一假冒的签名在计算上都是不可行的;

网络空间安全基础(待续)_第8张图片

3)常见的数字签名算法有:RSA算法,数字签名算法(DSA),椭圆曲线数字签名算法(ECDSA),其中大多数SSL数字证书、代码签名证书、文档签名以及邮件签名都采用RSA算法;

密钥管理与分配

密钥管理技术包括密钥的产生、存储、装入、分配、保护、丢失、销毁等,主要任务是保证能在公用数据网上安全地传递密钥。

密钥的生命周期

1)密钥的产生和分配:好的密钥一般是由自动处理设别产生的随机位串,需要一个可靠的随机数生成器;

2)密钥的存储和备份

3)密钥的撤销与销毁

密钥分配技术

一种更换密码的机制尽量减少密钥被暴露的可能性;

1)对称密码体制的密钥分配:通过密钥分配中心(KDC)来管理和分配密钥;

2)公钥密码体制中的密钥分配:有以下形式(公开宣布;公布公钥目录;公钥管理机构分发;公钥证书分发);

PKI(公钥基础设置)

PKI能为所有网络应用透明地提供采用加密和数字签名等密码服务所必需的密钥和证书管理,实现和管理不同实体之间的信任关系;

PKI采用证书管理公钥,通过可信任机构CA,把用户的公钥和其他标识信息捆绑在一起,用来在网络上验证用户的身份,主要任务是在开放环境中为开放性业务提供数字签名服务

1)数字证书:由CA采用公钥加密技术将主题的公钥信息和身份新信息捆绑后进行数字签名的一种权威电子文档,用于证明某一主体的身份和公钥合法性(真实性和完整性);

网络空间安全基础(待续)_第9张图片

2)PKI的组成:可信任机构(CA)、注册机构(RA)、证书库、证书申请者、证书信任方共五大部分组成;完成的PKI系统还必须具有密钥备份与恢复系统,证书作废系统、应用程序接口(API)等基本组成部分;

3)PKI体系标准规范:包括ASN.1基本编码规范、X.500目录服务、PKIX系列标准以及PKCS系列标准;

4)PKI提供的服务:机密性服务、完整性服务、身份认证服务、不可否认性服务;

密码学应用

SSL/TLS协议

1)网络上明文传输的风险:信息窃听风险(第三方可以获取通信内容)、信息篡改风险(第三方可以篡改通信内容)、身份冒充风险(第三方可以冒充他人身份参与通信);

2)传输层安全(TLS)协议和安全套接层(SSL)协议,目的是为互联网通信提供安全及数据完整性保障;

3)SSL/TLS协议主要用于使用超文本传输安全协议(HTTP)的通信中,为使用HTTP协议的通信提供保护,SSL协议主要用于解决HTTP明文传输的问题,TLS是SSL协议的升级版;

4)TLS协议使用以下3种机制为信息通信提供安全传输:隐秘性(所有通信都通过加密后进行传播)、身份认证(通过证书进行认证)、可靠性(通过校验数据完整性维护一个可靠的安全连接);

PGP

PGP是一个能为邮件和文件存储过程提供认证业务和保密业务的软件;

VPN 

1)虚拟专用网(Virtual Private Network,VPN )是一种采用了隧道技术、加密技术、密钥管理技术、身份认证技术等在公共网络上构建临时的、安全的逻辑网络的技术,VPN能实现数据的保密传输、身份验证、数据完整性保护;

2)按隧道协议分类:二层(数据链路层)隧道VPN,如PPTP VPN、L2TP VPN等,三层(网络层)隧道VPN,如IPSec VPN;

3)按应用类型分类:远程接入VPN(实现远程客户端到网关的安全连接);点对点VPN(实现网关到网关的安全连接);端到端VPN(实现终端到终端的VPN安全连接);

4)常用的VPN:SSLVPN(工作在传输层和应用层之间,为HTTP服务提供安全通信机制);IPSecVPN(使用加密的安全服务确保在Internet上进行安全通信);

5)IPSecVPN组成:互联网密钥交换(IKE)、认证报头(AH)、封装安全载荷(ESP)等;其中ESP提供数据机密性、完整性验证、数据源身份认证能力;

Web安全与渗透测试

web安全概述

 web应用体系架构

1)大型动态应用系统可分为web前端系统、分布式服务器管理系统、分布式存储系统、缓存系统、数据库集群系统和负载均衡系统等子系统;

2)web应用体系架构可简化为web客户端、传输通道、web服务器、web应用程序和数据库等组成部分;

网络空间安全基础(待续)_第10张图片

  但是该体系结构存在以下脆弱性:

  1.web客户端的脆弱性

  2.web服务器的脆弱性

  3.web应用程序的脆弱性

  4.HTTP的脆弱性

  5.Cookie的脆弱性

  6.数据库安全的脆弱性

OWASP Top 10漏洞

1)开源web应用安全项目(OWASP) Top 10重点在于为广大企业组织确定一组最严重的风险;

2)2013年排名前10的漏洞有:注入攻击漏洞,失效的身份认证和会话管理,跨站脚本攻击漏洞,失效的访问控制,敏感信息泄露,应对攻击防护不足,跨站请求伪造漏洞,使用含有已知漏洞的组件,未受有效保护的API;

web安全漏洞案例

1)WebSphere远程代码执行漏洞(CVE-2019-4279):攻击者可发送精心构造的序列化对象到服务器,最终导致在服务器上执行任意代码;

2)WebLogic的Java反序列化过程远程命令执行漏洞(CVE-2018-2628):攻击者可以在未授权的情况下,通过T3协议在WebLogic Server中执行Java反序列化操作,最终造成远程代码执行漏洞;

3)Redis拒绝服务攻击漏洞(CVE-2017-15047):攻击者可利用该漏洞造成拒绝服务(越边界数组索引和应用程序崩溃);

4)Struts2框架漏洞:攻击者可以利用该漏洞进行远程执行代码、DoS攻击、路径遍历、跨站脚本攻击等危险操作;

5)Joomla!系列漏洞:SQL注入漏洞,可使攻击者访问或修改数据,将低权限用户提升为更高权限的用户;

6)DedeCMS系列漏洞:有任意代码执行安全漏洞,文件上传漏洞,文件删除漏洞,SQL漏洞等;

7)Apache Tomcat远程代码执行漏洞

8)JBoss的Java反序列化命令执行漏洞

web安全防护策略

1)IE浏览器防护策略:

  设定IE安全级别;

  过滤恶意网页;

  添加站点到信任区域;

2)OWASP Top 10漏洞防护策略:

  使用安全的API,完全避免使用解释器或提供参数化界面的API;

  一套单一强大的认证和会话管理控制系统;

  针对XSS攻击,为避免服务端XSS,应根据数据将要置于的HTML的上下文对所有的不可信数据进行恰当的转义;

  预防失效的访问控制,采用检查访问的方法;

  针对安全配置错误,采用能在组件之间提供有效的分离和安全性的强大应用程序架构;

  针对敏感信息泄露,加密数据的存储,并使用合适的标准算法和强大的密钥;

  针对攻击防护不足的缺陷,检测攻击、响应攻击、快速增打补丁;

  针对CSRF攻击,使用成熟框架的CSRF防护方案;

  针对有漏洞的组件风险,利用工具记录客户端和服务器以及它们的依赖库的版本信息;

  为保护API的安全,确保客户端和API之间通过安全通道进行通信,确保有强安全级别的认证模式,做好安全加固、权限控制;

常见Web攻击方式与防御

注入攻击

通常指SQL注入攻击

1)SQL含义:结构化查询语言(Structed Query Language,SQL),用于存取数据以及查询、更新、管理关系数据库系统;

2)SQL注入攻击原理:编写web应用程序时,没有对用户提交数据的合法性进行判断;

  web登录过程:1.客户机向web服务器提交账号和密码;2.web服务器以账号和密码为条件在后台数据库查找;3.web服务器向客户机发送验证结果;

  其中在第2步中,通常用SQL语句进行查询,若不检查输入数据的有效性,攻击者可用精心构造的数据库查询代码攻击网站,这就是SQL注入攻击原理;

3)SQL注入攻击本质:攻击者在用户可控参数中注入恶意SQL语句,破坏原有SQL语句,而服务器对用户输入的数据没有过滤或者过滤不严格,把攻击者提交的恶意SQL语句当作语句的一部分代入数据库中进行执行,导致执行了额外的SQL语句,从而达到攻击数据库的目的;

4)SQL攻击成因:由两个条件叠加造成:

  1.用户能够控制输入,并使用字符串拼接的方式构造SQL语句;

  2.服务器未对用户可控参数进行足够的过滤便将参数内容拼接到SQL语句中;

//SQL攻击示例
$id=$_GET['id'];
$sql="select * from users where id=$id limit 0,1";
$result=mysql_query($sql);
//$id在后面没有经过任何过滤直接拼接到SQL语句中,然后在数据库中执行SQL语句
//如果用户输入index.php?id=1 and 1=1,则拼接后的SQL语句会返回正常的结果,即
$sql="select * from users where id=1 and 1=1 limit 0,1";
//如果用户输入index.php?id=1 and 1=2,则拼接后的SQL语句会返回不正常的结果,即
$sql="select * from users where id=1 and 1=2 limit 0,1";

5)SQL注入攻击分类:

  1.根据数据库执行结果,分为联合查询类,报错注入类,布尔盲注类,延时注入类;

  2.根据注入点的数据类型,分为数字型注入和字符型注入;

  3.根据数据提交的方式,分为Get注入、Post注入、Cookie注入、HTTP头部注入等;

  4.其他注入类型有堆叠查询类、宽字节注入类、base64注入类、读写文件类、搜索型注入等;

6)SQL注入攻击手工注入过程:判断是否存在注入点;判断数据库字段数量;判断数据库交互字段位置;判断数据库信息;查找当前数据库名;查找数据库的所有表名;查找数据库的表中的所有字段名以及字段值;破解账号密码;登录管理员后台;

7)自动化SQL注入工具:常用的有Sqlmap、Havij、Safe3 SQL Injector、NBSI、BSQL Hacker、Pangolin等;

8)SQL注入攻击的危害:绕过登录验证(使用万能密码登录网站后台等);获取敏感数据(获取网站管理员账号、密码等);文件操作(读取、写入文件等);注册表操作(读取、写入、删除注册表等);执行系统命令(远程执行命令);

XSS攻击

1)XSS攻击简介(跨站脚本攻击):XSS全称Cross-Site Scripting,本应缩写为CSS,但与层叠样式表(CSS)重名,所以缩写为XSS;

  XSS攻击是攻击者利用网站漏洞将恶意代码(HTML或JS代码)注入网页,当用户访问该网页时,就会执行其中的恶意代码;

  XSS攻击的攻击对象是浏览器,属于被动攻击,需要用户主动触发

  XSS攻击可以进行网络钓鱼(盗取各类用户账号,cookie资料等)、劫持用户会话(执行任意操作,强制弹出广告页面)、DDOS攻击(提升用户权限,进一步渗透网站,传播跨站脚本蠕虫);

网络空间安全基础(待续)_第11张图片

2)XSS攻击的分类

  1.反射型XSS攻击:攻击的JS代码在web应用的参数中,如搜索框等,主要用于将恶意代码附加到URL中,诱使用户点击该恶意URL,执行 JS代码;

//反射型XSS攻击示例
Hello'.$_GET['name'].'
'; } ?>

  2.持久型XSS攻击:JS代码不是在web应用的某个参数中,而是写进数据库或文件等可以永久保存数据的介质中,如留言板博客日志、评论区等;

    此类XSS攻击不需要用户单击特定URL就能执行跨站脚本,攻击者事先将恶意的JS代码上传或存储到含有漏洞的服务器中,只要有用户访问这个包含有持久型XSS攻击的页面,恶意的JS代码就会在用户的浏览器中执行,执行后的JS代码会储存在数据库中;

//持久型XSS攻击示例
'.((is_object($GLOBALS["__mysqli_ston"]))  ? mysqli_error($GLOBALS["__mysqli_ston"]) : (($__mysqli_res=mysqli_error()) ? $__mysqli_res:false)) . '
'); //mysql_close(); } ?>

  3.基于DOM的XSS攻击:基于DOM文档对象模型漏洞的一种攻击方式,不依赖于服务器的数据,而从客户端获得DOM中的数据并在本地执行;

  文档对象模型(DOM)使得程序和代码可以动态访问和更新文档的内容、结构、样式;

//基于DOM的XSS攻击示例


//然后构造攻击载荷即可 127.0.0.0/php/1.php?name=">

3)XSS攻击方式

  1.利用XSS攻击进行Cookie窃取:Cookie是由服务器提供的存储在客户端的数据,将信息持久化保存在客户端,用于识别用户身份、保存会话状态;

//利用XSS攻击进行Cookie窃取



  2.XSS钓鱼:通过发送大量声称来自银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出敏感信息的一种攻击方式;

//钓鱼步骤
//1.攻击者构造钓鱼页面phishing.php
; //2.在远程服务器上存放一个用来接收和记录账号、密码的程序文件get.php //3.攻击者在XSS页面插入钓鱼代码http://www.bug.com/index.php?s=

4)防御XSS攻击:编码过滤两种方式,编码用于将特殊符号<、>、&、'、""进行转义;过滤是阻止特定的标记、属性、事件;

  输入过滤:检查、过滤、转义用户的任何输入,查看是否包含<、>等特殊字符或alert关键字;

  输出编码:在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击;

  设置HttpOnly属性来防止劫取cookie,cookie中通常包含了用户的登录凭证信息,攻击者获取cookie后可以发起cookie劫持攻击;

CSRF攻击

1)CSRF简介:跨站请求伪造攻击(Cross-Site request forgery,CSRF), 跨站点的请求+请求是伪造的;

  CSRF攻击即被攻击者的浏览器被迫向目标站点发起了伪造的请求,这个过程会带上被攻击者的身份验证标识(Session)以通过目标站点的验证;

  CSRF的核心是身份认证,攻击的重点是伪造更改状态的请求,而不是盗取数据等操作,因为攻击者无法查看对伪造请求的响应;

2)CSRF攻击原理:攻击者利用已经登录受信任网站的用户,诱使其访问或者登录某个早已构造好的恶意链接或页面,然后在用户毫不知情的情况下,以用户的名义完成非用户本意的操作;

//1.受害者登录受信任网站A,在本地生成Cookie
//2.受害者在不退出网站A的情况下,访问危险网站B
//CSRF攻击示例