网络安全-Web应用安全2
Web应用安全
CSRF跨站请求伪造
CSR概念
什么是CSRF跨站?
- 全称是Cross-Site Request Forgery,中文跨站请求伪造
CSRF原理
- 黑客利用已经登录的用户,诱导其访问或登录某个早已构造好的恶意链接或者页面,然后在用户毫不知情的情况下,以用户名义完成了非用户本意的非法操作
CSRF攻击流程
CSRF实例
打开pikachu靶场,选中右侧导航栏中的CSRF
通过页面右上角的提示,可以获取用户名称和密码
登录后,修改用户信息,点击提交,获取提交的url
攻击者获取修改信息的URL后,就可以构造出CSRF攻击的URL
攻击者获取修改信息的URL后,就可以构造出CSRF攻击的URL例如:将kobe的性别修改为girl
将以下url放到某个其它网站上,引诱被攻击者点击
- 如果被攻击者此时登录状态或cookie/session没有过期,则信息被修改
- 注意:实际的IP地址是对应的被攻击的网站的IP
CSRF防御实例
增加token的验证的页面
增加token的验证,页面部分代码
修改信息后,点击submit按钮后抓包,连同token一起提交修改成功
注意,token是随机的
构造的url没有包含token或错误的token都将请求失败
CSRF与XSS的区别
- CSRF攻击者并没有拿到用户的权限,是借用户的权限完成攻击
- XSS可以通过盗取cookie来获取用户权限来完成攻击
SSRF服务器端请求伪造
SSRF概念
什么是SSRF
- 全称Server-Side Request Forgery,中文是服务器端请求伪造
- 由攻击者构造形成,但是由服务器端发起请求
- 攻击目标是从外网无法访问的内部系统
SSRF成因
- 服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
SSRF攻击流程
SSRF场景
Web项目中出现SSRF漏洞的常见功能点
- 分享:通过URL地址栏分享网页内容
- 转码服务:通过URL地址把原地址的网页内容调优以适合手机屏幕
- 图片加载、下载:通过URL地址加载或下载图片
- 收藏:图片及文章的收藏功能
- API:未公开的api实现以及其它调用URL的功能
SSRF相关的PHP函数
curl_exec()
- 执行CURL会话
file_get_contents()
- 将整个文件读入一个字符串
fsockopen()
- 打开一个网络连接或者一个Unix套接字连接
SSRF危害
- 扫内网
- 向内部任意主机的任意端口发送精心构造的Payload
- 攻击内网的web应用
- 利用file协议读取本地文件等
SSRF漏洞利用
打开pikachu靶场,选择SSRF标签
SSRF(curl)的核心代码
正常操作,点击页面内容
将url的值换成自己的payload,实现漏洞利用
- 假设我们部署的dvwa只允许内网访问
SSRF(file_get_content)
- 点击页面,内容显示如下,关注url
SSRF(file_get_content)核心代码
将url的值换成自己的payload,实现漏洞利用
- 读取指定的文件内容
SSRF漏洞防御
- 禁用不需要的协议,例如:仅仅允许http和https请求
- 设置白名单方式
- 限制请求的端口
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Nicopilot!