文章目录
一.课堂笔记
1.同源策略:
同源策略的主要作用是限制一个源中的文档或脚本与来自另一个源的资源进行交互。这意味着,如果两个页面的协议、域名和端口不完全相同,那么它们之间的 JavaScript 脚本在未经明确授权的情况下,不能相互访问对方的 DOM、获取对方的 Cookie、发送 HTTP 请求等。目的是防止恶意网站窃取用户在其他网站上的敏感信息。
2.CSRF防御
验证referer:HTTP Referer头通常用于指示发起请求的页面的地址,它可以帮助网站确定请求的来源,并在一定程度上防止某些类型的网络攻击,如CSRF
加入token:生成一个随机的token,并将其与用户的会话相关联。当用户发起请求时,服务器会检查请求中是否包含这个token,以及token是否与用户的会话中的token匹配,以此来验证请求的合法性。
3.伪协议
伪协议(Pseudo-protocol)是指一种特殊的协议,它并不是一个真正的网络协议,而是一种在特定上下文中被当作协议来使用的约定或机制。这种机制通常用于在应用程序内部或特定环境中模拟或实现某些网络协议的功能。
二.课堂跟练CSRF
1.CSRF(get)
用BurpSuite抓改信息的包
复制url到浏览器并修改phonenum回车
然后放行后发现已经修改成功
2.CSRF(post)
用BurpSuite先抓包查看表单
直接生成CSRF PoC
获得CSRF PoC,修改参数
用浏览器测试,发现已经修改成功
自己构造CSRF PoC
把html文件拉到浏览器验证,发现修改成功
3.CSRF Token
下载CSRF Token Tracker插件并完成配置,然后抓包发送到重放器获得token的值
获得值之后在重放器进行数值修改就可以多次的修改了
三.作业
1.总结CSRF和XSS区别
(1)目标不同:CSRF主要针对用户在其他网站上的操作,而XSS针对用户在当前网站上的交互。
(2)攻击机制不同:CSRF通过利用用户的会话令牌执行操作,而XSS通过注入恶意脚本在用户浏览器中执行。
(3)防护措施不同:CSRF主要通过使用令牌、验证HTTP Referer和HTTPS来防御,而XSS则通过输入验证、输出编码和CSP来防御。
2.总结CSRF攻击步骤
(1)收集信息
攻击者首先要通过引诱用户点击恶意链接,利用钓鱼网站窃取用户登录信息等方式获取目标用户在网站上的会话信息,例如cookie、session令牌等。
(2)构造攻击请求
攻击者构造一个包含目标用户会话信息的请求,这个请求通常会包含目标网站的URL、目标用户的身份信息(如session令牌)以及攻击者想要执行的恶意操作(如提交表单、修改用户数据等)。
(3)诱骗用户访问攻击页面
攻击者通过恶意邮件链接恶意广告等各种手段诱骗用户访问恶意网页当用户访问恶意网页时,攻击页面会利用用户的会话信息向目标网站发送请求。
(5)服务器验证
目标服务器接收到请求后,会验证请求中的会话信息是否有效。由于攻击者已经成功伪造了用户的身份信息,服务器可能会认为请求是合法的,并执行请求中的操作。
(6)执行恶意操作
服务器执行了攻击者请求的操作,这可能包括但不限于修改用户数据、执行敏感操作、窃取数据等。
(7)结果
攻击的结果取决于服务器执行的操作。可能是用户数据被修改、敏感信息被泄露、账户被控制等。
3.总结CSRF手工构造POST型页面方法
(1)创建一个 HTML 表单,设置表单的 action 属性,指定提交的目标 URL,指定表单的提交方法为 POST。
(2)用BurpSuite对目标操作进行抓包,由此的到需要提交哪些参数。
(3)在表单中添加需要提交的参数。
(4)设计JavaScript命令,使表单在用户访问页面时自动提交或者完成其他特殊目的
(5)为优化HTML表单,便于诱导用户点击,例如添加标题背景图片等
4.说明token类CSRF利用方法
(1)Token泄露:
XSS攻击:通过注入恶意脚本获取用户的token。
URL参数泄露:通过URL参数、浏览器历史记录等途径泄露token。
(2)Token重放攻击:
固定Token:利用固定的或会话期间不更新的token进行重放攻击。
会话劫持:在用户会话被劫持的情况下,利用已知的token执行攻击。
(3)Token验证不严格:
仅验证存在性:服务器仅检查token是否存在,不验证其有效性或唯一性。
不验证来源:不验证请求的来源,如Referer或Origin头。
(4)Token生成算法可预测:
弱随机性:使用随机数生成器生成的token容易被预测或猜测。
(5)Token过期时间过长:
长期有效Token:如果token过期时间设置得过长,攻击者有更多时间利用token。
5.SSRF常用伪协议
(1)file:用于请求本地文件系统中的文件。
例如,http://example.com/file:///etc/passwd可以请求访问本地主机的 /etc/passwd 文件。
(2)ftp:用于请求FTP服务器上的文件。
例如,ftp://192.168.1.100/path/to/file 可以请求访问内部网络中的FTP服务器上的文件。
(3)gopher:用于访问Gopher服务器上的服务或文件。
例如,gopher://gopher.example.com/path/to/file 可以请求访问Gopher服务器上的资源。
(4)nfs:用于访问远程NFS服务器上的文件系统。
例如,nfs://192.168.1.100:/path/to/file 可以请求访问远程NFS服务器上的文件。
(5)smb:用于访问SMB(Server Message Block)服务器上的文件。
例如,smb://username:password@192.168.1.100/path/to/file 可以请求访问SMB服务器上的文件。
(6)sftp:用于安全文件传输协议(Secure File Transfer Protocol),类似于FTP但使用SSH进行加密。
例如,sftp://username:password@192.168.1.100/path/to/file 可以请求访问SFTP服务器上的文件。
(7)http 和 https:虽然这些协议通常用于外部请求,但在某些特定配置下,服务器可能会被诱导使用这些协议发起请求到内部网络中的资源。
(8)unix:用于请求UNIX域套接字上的文件或服务。
例如,unix://localhost/path/to/socket 可以请求访问本地主机上的UNIX套接字。
6.SSRF pikachu靶场通关
(1)SSRF(curl)
利用file协议,将url的值指向本地一个自己建的文件的地址,回车后显示出文件内的内容
(2)SSRF(file_get_content)
将file指向百度网址,注入成功显示出百度的网页
7.SSRF靶场通关时根据源代码说明漏洞成因
curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP
$URL = $_GET[‘url’];这行代码从 URL 参数中获取目标 URL
…
R
E
S
=
c
u
r
l
−
e
x
e
c
(
RES = curl-exec(
RES=curl−exec(CH);这行代码执行实际的 HTTP 请求
而其中没有过滤机制,所以curl支持的协议的请求都可以执行,所以导致了SSRF