day6

CSRF和XSS区别

CSRF和XSS都是客户端攻击,它们滥用同源策略,利用web应用程序和不知情的用户之间的信任关系。但是,XSS和CSRF攻击之间存在一些根本差异:

CSRF:需要用户先登录网站A,获取cookie。XSS:不需要登录。利用网站A本身的漏洞,去请求网站A的api。

XSS:是向网站A注入JS代码,然后执行JS里的代码,篡改网站A的内容。

XSS攻击遵循双向攻击模式,允许攻击者执行恶意脚本、访问响应,并将后续敏感数据发送到攻击者选择的目的地。另一方面,CSRF是一种单向攻击机制,这意味着攻击者只能发起HTTP请求,但不能检索已发起请求的响应。

CSRF攻击步骤

1.攻击者在目标网站上设置一个包含恶意代码的链接。

2.受害者点击该链接,恶意代码在受害者的浏览器中执行,并携带受害者在目标网站上的身份验证信息向目标网站发送请求。

3.目标网站根据受害者的身份验证信息处理请求,不知情地执行来自攻击者的恶意代码。

CSRF手工构造POST型页面方法

  1. 确定目标URL和参数,攻击者需要确定目标网站的URL以及POST请求中需要包含的参数。这通常通过抓包分析目标网站的正常POST请求来完成。
  2. 构造HTML表单,攻击者接下来会构造一个HTML表单,这个表单的action属性设置为目标网站的URL,表单的字段(input标签)则对应于POST请求中需要包含的参数。为了隐藏表单,攻击者可能会将表单的style属性设置为display:none;,或者使用JavaScript来自动提交表单。
  3. 诱骗受害者访问伪装页面,攻击者会通过各种手段(如发送电子邮件、社交媒体消息、恶意广告等)诱骗受害者访问这个伪装的页面。一旦受害者访问了页面,隐藏的表单就会自动提交,执行了攻击者想要的操作。

token类CSRF利用方法

Token的生成与验证过程

Token的生成:

当用户成功登录后,服务器会生成一个随机的、唯一的token,并将其存储在用户的会话中。

同时,这个token也会被嵌入到所有需要保护的表单或请求的隐藏字段中,或者作为请求头的一部分发送。

Token的传输:

对于GET请求,token可能会附加在URL的查询字符串中。

对于POST请求,token通常会作为表单数据的一部分发送,或者作为请求头(如X-CSRF-Token)发送。

Token的验证:

当请求到达服务器时,服务器会检查请求中是否包含token,并且该token是否与会话中存储的token相匹配。

如果token不存在或不匹配,服务器将拒绝处理该请求,并可能返回错误信息。

Token类CSRF防御机制

Token类CSRF防御机制的基本思想是在用户的HTTP请求中加入一个随机生成的、不可预测的token,并在服务器端进行验证。这个token通常与用户的会话相关联,并且每次请求时都需要验证。如果请求中没有包含正确的token,或者token与服务器存储的不一致,那么服务器将拒绝处理该请求,从而防止CSRF攻击。

SSRF常用伪协议

1.file://

功能:从文件系统中获取文件内容。

格式:file://[文件路径]。

2.dict://

功能:字典服务协议,用于访问字典资源。

3.ftp:// 和 sftp://

功能:FTP(文件传输协议)和SFTP(SSH文件传输协议或安全文件传输协议)用于文件传输。

4.ldap://

功能:轻量级目录访问协议,用于访问和维护分布式目录信息。

5.tftp://

功能:简单文件传输协议,用于在局域网内传输小文件。

6.http:// 和 https://

功能:超文本传输协议和安全超文本传输协议,用于在Web上传输数据。

SSRF 靶场通关

SSRF(curl)

发现这里出现了一个url地址,做如下尝试。

1.通过网址访问链接

修改url为:url=http://www.baidu.com,访问百度页面

2.利用file协议查看本地文件

修改url为:url=file:///d:/test.txt,查看文件的内容:

SSRF(file_get_content)

url变成了file,修改file为:file=file:///D:/test.txt,查看文件的内容。

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Parser.js:437 throw err; // Rethrow non-MySQL errors ^ Error: secretOrPrivateKey must have a value at module.exports [as sign] (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\jsonwebtoken\sign.js:107:20) at Query.<anonymous> (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\router_handler\2user.js:49:26) at Query.<anonymous> (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\Connection.js:526:10) at Query._callback (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\Connection.js:488:16) at Sequence.end (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24) at Query._handleFinalResultPacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\sequences\Query.js:149:8) at Query.EofPacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\sequences\Query.js:133:8) at Protocol._parsePacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Parser.js:43:10) Node.js v18.12.1
06-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值