文章目录
1 总结CSRF和XSS区别
XSS跨域脚本攻击 | CSRF攻击 跨站请求伪造 | |
---|---|---|
原理 | 利用的是用户对指定网站的信任 | 利用网站对用户网页浏览器的信任 |
用户状态 | 不需要用户登录 | 要求经过身份验证的用户并在目标网站上有有效的会话 |
攻击范围 | 提供执行恶意脚本来执行攻击者所选择的任何活动,从而扩大了攻击的范围。 | 仅限于用户可以执行的操作 |
恶意代码位置 | 站点中 | 受害用户访问的第三方站点中 |
2 总结CSRF攻击步骤
-
判断有没有CSRF
burpsuite抓包(请求数据包,GET,POST请求)
没有Referer和token字段——>可能存在CSRF漏洞
有Referer和token字段,且删除后仍可正常访问——>可能存在CSRF
-
伪造页面
根据拦截的请求数据包,修改其中的请求包,构建一个伪造的 HTML 页面或表单,包含与目标请求相同的参数。
-
诱导点击
通过社会工程手段,将伪造的页面发送给用户,诱导其点击
3 总结CSRF手工构造POST型页面方法
- 抓取请求数据包,确定使用的是POST方法进行的请求
- 分析请求包数据(URL,表单参数,提交方式)
- 编写一个html页面:
包含HTML表单,其中参数和数据包中的应该一致;
插入JavaScript代码,以便在页面加载时自动提交该表单。
4 说明token类CSRF利用方法
token:服务端生成的一串字符串,以作客户端进行请求的一个令牌,设有失效期。服务端会对客户端请求中的token验证,验证成功才会通过请求,进行响应。
攻击者在进行CSRF攻击时,只能利用cookie而无法获取cookie。CSRF token就是基于此来防御CSRF攻击的。
CSRF token 需要由服务器端生成,可以为每个请求或是每个 session 生成一次,这个 token 会被传送到客户端,当客户端发出请求时,token会和表单数据一起提交回服务器端,或是作为请求头的一部分传回服务器端。服务器端需要在此用户的请求纪录或 session 中,找到该 token,验证其有效性。
5 SSRF常用伪协议
伪协议(Pseudo-protocol)是指那些在技术上不是标准网络协议,但可以被应用程序或系统用来进行特定类型的操作或交互的协议。这些协议通常会以特殊的方式请求资源或执行操作,有时可能被用于绕过安全限制或进行攻击。
file:// | 该协议用于访问本地文件系统中的文件,可能被原来访问服务器上的敏感文件 |
ftp:// | FTP(文件传输协议)用于在客户端和服务器之间传输文件。 |
dict:// | 字典协议,可能执行非预期的查询操作 |
php:// | php伪协议流,用于访问输入、输出、内存等 |
6 SSRF pikachu靶场通关
SSRF(curl)
浏览器中传了url参数
在前端修改url参数,后端访问并返回数据
SSRF(file_get_content)
访问
在前端修改file参数,后端会访问文件xxxx.txt并返回数据
7.SSRF靶场通关时根据源代码说明漏洞成因(加分项)
SSRF(curl)
从前端获取了url请求,curl_init函数会对它进行初始化,然后curl_exec函数会去执行请求,最终又将请求结果返回到前端。这里直接将用户输入的数据用作 HTTP 请求的 URL,而没有进行严格的验证和过滤。
SSRF(file_get_content)
这里使用file_get_contents函数进行文件的读取执行,而file_get_contents函数可以对本地文件进行读取,也可以对远程文件进行读取。