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