Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
mst-sec-lecture-notes
提交
47211519
M
mst-sec-lecture-notes
项目概览
OpenDocCN
/
mst-sec-lecture-notes
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mst-sec-lecture-notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
47211519
编写于
12月 26, 2016
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
csrf
上级
789cc69c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
0 deletion
+53
-0
漏洞篇 CSRF.md
漏洞篇 CSRF.md
+53
-0
未找到文件。
漏洞篇 CSRF.md
0 → 100644
浏览文件 @
47211519
# 米斯特白帽培训讲义 漏洞篇 CSRF
> 讲师:[gh0stkey](https://www.zhihu.com/people/gh0stkey/answers)
> 整理:[飞龙](https://github.com/)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
CSRF 攻击的原理就是攻击者创建一个链接,受害者点击它之后就可以完成攻击者想要的操作,这些操作一般是删除文章,创建用户之类。比如某网站的删除文章链接是
`http://www.xxx.com/post/<id>/delete`
,那么攻击者可以直接构造出来发给有权限的人,它点击之后就可以将文章删除。当然,攻击者也可以使用当下流行的短网址服务来伪造 URL,避免受到怀疑。
与传统的认知相反, POST 方式并不能防止 CSRF,这是因为浏览器中的 JS 拥有发送 POST 请求的能力。比如攻击者可以编写一个带表单的页面,包含目标 URL 和所有所需字段,然后再用 JS 代码提交表单。之后把这个表单放到网络上可以访问的地方,再把这个链接发给受害者,诱导他点击。
所以这个东西也叫作“One Click”,意思就是说,整个攻击只通过一次点击来完成。换个角度,通过两次相关步骤来完成的操作就不会有这个问题。
## 利用
我们可以使用 OWASP 的 CSRF-Tester 来半自动利用 CSRF 漏洞,还可以生成用于利用的 exp 页面。
要注意的是,它不会为你判断是否存在 CSRF 漏洞,想想也知道,一个网站上的一次完成的操作简直太多了,那所有这些操作都存在 CSRF 漏洞吗?并不是,只有重要的,不可挽回的操作才能算 CSRF 操作,而这个是机器判断不了的。所以你首先要知道哪里有 CSRF 漏洞,才能使用工具。
我们用它来利用 yzcms,这是一款开源的 CMS。我们首先访问后台:
![](
http://ww3.sinaimg.cn/large/841aea59jw1fb40lekxl5j213s0nt413.jpg
)
我们点击右上方的添加管理员:
![](
http://ww2.sinaimg.cn/large/841aea59jw1fb40liam0fj2093091t8p.jpg
)
当我们创建的时候,浏览器会向服务器发请求。我们就可以伪造这个请求,构造出 exp 页面,然后让已经登录的管理员去访问这个页面,就能成功创建管理员。
我们打开工具,我们看到工具一打开,就监听了本机的 8008 端口:
![](
http://ww4.sinaimg.cn/large/841aea59jw1fb40lp01zej20yk0jnaby.jpg
)
我们需要将浏览器的代理配置为
`127.0.0.1:8008`
。然后点击
`Start Recording`
,它会开始抓取请求。
![](
http://ww3.sinaimg.cn/large/841aea59jw1fb40luqzojj20km0g7t9m.jpg
)
这时我们返回 CMS 页面,模拟创建一个管理员:
![](
http://ww2.sinaimg.cn/large/841aea59jw1fb40lrx03pj209009b74d.jpg
)
我们可以看到它捕获到了若干请求,POST 的那个就是创建管理员的请求。我们点击这个请求那一行,观察下方的
`Form Parameters`
,没有任何的 Token 验证。
![](
http://ww2.sinaimg.cn/large/841aea59jw1fb40m8khmhj20km0ga3zw.jpg
)
参数的值可以任意修改。我们看一看底下的
`Report Type`
,这个就是构造方式,可以选择使用
`<form>`
、
`<iframe>`
、
`<img>`
、AJAX、或者
`<a>`
来构造。这里我们选择 Forms。之后我们点击右边的
`Generate HTML`
,选择一个地方来保存。
我们可以把这个文件发给受害者,让他打开。也可以放到网上把链接发给受害者。我们试着打开它,当我们打开之后,我们可以看到,成功添加了我们所需的管理员。
![](
http://ww4.sinaimg.cn/large/841aea59jw1fb40mbjgt9j213s0mogn7.jpg
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录