XXS漏洞零基础学习到入门
目录
1.HTTP回顾
1.1HTTP的请求方法
1.2HTTP的请求格式
1.3HTTP响应格式
1.4HTTP的特点
2.客户端的Cookie
2.1Cookie的格式
2.2Cookie的特点
编辑3 服务端的Session
3.1session创建、校验、销毁的全流程
3.2Cookie和Session的区别
4 JavaScript操作Cookie
4.1直接利用Cookie登录
4.2远程获取Cookie
5.脚本注入网页:XSS
5.1反射型
5.2存储型
5.3DOM型
6.DVWA靶场练习
Low模式下
Medium模式下
在High模式下
7.XSS平台搭建
8.XSS检测和利用
8.1测试payload
8.2主流软件
XSSER
XSSSTRIKE
9.XSS的防御方法
1.HTTP回顾
1.1HTTP的请求方法
HTTP(超文本传输协议)定义了多种请求方法,用于指示客户端希望服务器对资源执行的操作。以下是常见的HTTP请求方法:
-
GET:用于请求指定资源。GET请求只应用于获取数据,不应产生副作用;如:获取网页内容或查询数据。
-
POST:用于向服务器提交数据,通常用于创建新资源或提交表单数据。如:提交用户注册信息或上传文件。
-
PUT:用于更新指定资源,或者如果资源不存在则创建新资源。如:更新用户信息。
-
DELETE:用于删除指定资源。如:删除用户或文件。
-
PATCH:用于对资源进行部分更新。如:更新用户的部分信息(如只修改邮箱)。
-
HEAD:类似于GET,但只请求资源的头部信息,不返回实际内容。如:检查资源是否存在或获取元数据。
-
OPTIONS:用于获取服务器支持的HTTP方法或其他通信选项。如:检查服务器是否支持某种请求方法。
-
TRACE:用于回显客户端的请求,主要用于测试或诊断。如:调试请求路径。
-
CONNECT:用于建立与目标资源的隧道连接,通常用于SSL/TLS加密通信。如:通过代理服务器建立HTTPS连接。
1.2HTTP的请求格式
1.3HTTP响应格式
1.4HTTP的特点
HTTP的特点包括无连接、无状态、基于请求/响应模型、支持多种请求方法和数据类型、可扩展、支持缓存、安全性高,并且不断演进以适应现代Web需求。
2.客户端的Cookie
2.1Cookie的格式
Set-Cookie第一次访问,服务器响应给客户端
Cookie:之后的访问,客户端发送给服务器
name=value cookie的键值对
expires:过期的时间;
max-age cookie多久过期(单位是秒)
domain:cookie对哪个域名生效
path cookie匹配的路径
secure 只有HTTPS连接,才发送cookie到服务器
httponly 不允许通过脚本document.cookie去更改这个值
2.2Cookie的特点
Cookie的特点包括明文存储、用于记录状态管理,可修改,但也存在安全风险和容量限制,跟踪用户行为
3 服务端的Session
3.1session创建、校验、销毁的全流程
客户端第一次访问然后开启会话,产生sessionid将登录信息保存到session服务端
如果勾选记住密码,将session信息写入Cookie,将Cookie发送给客户端
客户端再次登录时发送Cookie字段sessionid,从session中取出信息,判断登录状态
客户端继续进行后续操作,保持登录
客户端注销,销毁session,Cookie过期
3.2Cookie和Session的区别
Cookie是保存在客户端
Session是保存在服务端
4 JavaScript操作Cookie
4.1直接利用Cookie登录
4.2远程获取Cookie
JavaScript语法
获取:document.cookie;
设置:document.cookie= "username=xiaoyu"
修改:对写过的进行覆盖就是修改
删除:把cookie的时间设置成比当前时间更早的时间
5.脚本注入网页:XSS
恶意攻击者利用web页面的漏洞,插入一些恶意代码, 当用户访问页面的时候,代码就会执行,这个时候就 达到了攻击的目的。 JavaScript、Java、VBScript、ActiveX、Flash
5.1反射型
用户发送带有恶意脚本的链接
其他用户点击恶意链接,访问服务器;此时包含恶意代码的数据返回到用户的浏览器
浏览器解析恶意代码并执行
黑客拿攻击服务器,拿到窃取用户的信息
5.2存储型
用户通过表单提交恶意代码,保存在数据库中
其他任何用户在访问该数据时,从数据库查询到恶意代码,返回到用户浏览器中
浏览器解析恶意代码并执行
黑客攻击服务器,拿到窃取用户的数据
5.3DOM型
由于页面的DOM结构被恶意构造的代码篡改,导致用户操作引发恶意脚本执行,攻击过程不涉及服务器端变化。
6.DVWA靶场练习
Low模式下
<script>alert('xxx')</script>
Medium模式下
可以通过大小写、双写等方式
<Script>alert('xxx')<Script>
<scr<script>ipt>alert('xxx')</script>
在High模式下
<img src="" οnerrοr="alert('xxs')">
7.XSS平台搭建
1.下载pikachu
项目首页 - pikachu - GitCode
下载后解压将pikachu文件放到WWW目录文件下
2.添加网站
3.修改配置文件
pikachu\inc\config.inc.php中修改数据库密码用户名等
4.打开首页点击”安装/初始化”初始化数据库
5.XSS自带后台
pikachu\pkxss\inc\config.inc.php修改配置文件
从左侧进入
8.XSS检测和利用
8.1测试payload
payload在恶意软件分析中,指的是攻击者利用漏洞发送给目标系统以实现特定目的的那部分代码或数据结构。
<script>alert('xxx')</script>
<script>alert(document.cookie)</script>
><script>alert(document.cookie)</script>
='><script>alert(document.cookie)</script>
''><script>alert(document.cookie)</script>
%3Cscript%3Ealert('XSS')%3C/script%3E
<img src= "javascript:alert('XSS')">
"οnmοuseοver="alert(/xss/)"
javascript:alert(/xss/)
8.2主流软件
XSSER
https://github.com/epsylon/xsser
具体的使用可以看这位博主的文章xsser使用以及方法--看完这篇就可以啦-CSDN博客
XSSSTRIKE
具体使用可以看一下这位博主的文章XSStrike工具的安装及使用(包括实战应用)-CSDN博客
9.XSS的防御方法
9.1过滤输入
对用户输入的数据检查是否存在<、>、'、"等特殊字符。如果出现这些特殊字符可将特殊字符过滤或者编码来进行防御
9.2处理输出
数据输出到HTML时,可以使用编码或转义的方式防御
9.3布置WAF