CSRF
文章目录
Low等级
查看源码
服务器收到修改密码的请求后,会检查参数password_new与password_conf是否相同,如果相同,就会修改密码,并没有任何的防CSRF机制(当然服务器对请求的发送者是做了身份验证的,是检查的cookie,只是这里的代码没有体现)。
构造链接
http://192.168.0.103/vulnerabilities/csrf/?password_new=zuowenyang&password_conf=zuowenyang&Change=Change#
当受害者点击了这个链接,他的密码就会被改成zuowenyang
测试
使用短链接来隐藏URL
构造短链接
http://suo.im/
http://192.168.0.103/vulnerabilities/csrf/?password_new=zuowenyang2&password_conf=zuowenyang2&Change=Change#
新打开一个网址标签,输入短网址http://suo.im/6ahf6H进行攻击
测试
构造攻击页面
方法一:图片形式诱导
通过img标签中的src属性来加载CSRF攻击利用的URL,并进行布局隐藏,实现了受害者点击链接则会将密码修改。
当受害者正在使用自己的网站(浏览器中还保存着session值)时,访问攻击者诱惑点击的此链接: 192.168.0.103/test.html
误认为是自己点击的是一个失效的url,但实际上已经遭受了CSRF攻击,密码已经被修改为zuowenyang3。
测试
方法二:隐藏表单的形式
查看页面html源代码,将关于密码操作的表单部分,通过javascript的onload事件加载和css代码来隐藏布局,按GET传递参数的方式,进一步构造html form表单,实现了受害者点击链接则会将密码修改
新打开一个网址标签,输入网址: 192.168.0.103 /dvwa.html,进行攻击
测试
Medium等级
查看源码
stripos()函数:
stripos(string,find,start)
stripos()函数查找字符串在另一字符串中第一次出现的位置,不区分大小写。
PHP超全局变量
S
E
R
V
E
R
中
的
两
个
值
:
1.
_SERVER中的两个值: 1.
SERVER中的两个值:1._SERVER[‘HTTP_REFERER’]:PHP中获取链接到当前页面的前一页面的url链接地址,即HTTP数据包中的Referer参数的值。
2.
S
E
R
V
E
R
[
′
S
E
R
V
E
R
N
A
M
E
′
]
:
P
H
P
中
获
取
服
务
器
主
机
的
名
称
,
即
H
T
T
P
数
据
包
中
的
H
o
s
t
参
数
的
值
。
用
户
正
常
登
录
使
用
修
改
密
码
操
作
时
,
可
以
看
到
:
M
e
d
i
u
m
S
e
c
u
r
i
t
y
L
e
v
e
l
的
代
码
使
用
s
t
r
i
p
o
s
(
)
函
数
检
查
H
T
T
P
头
,
过
滤
规
则
是
_SERVER['SERVER_NAME']:PHP中获取服务器主机的名称,即HTTP数据包中的Host参数的值。 用户正常登录使用修改密码操作时,可以看到:Medium Security Level的代码使用stripos()函数检查HTTP头,过滤规则是
SERVER[′SERVERNAME′]:PHP中获取服务器主机的名称,即HTTP数据包中的Host参数的值。用户正常登录使用修改密码操作时,可以看到:MediumSecurityLevel的代码使用stripos()函数检查HTTP头,过滤规则是_SERVER[‘HTTP_REFERER’]的值中必须包含$_SERVER[‘SERVER_NAME’],以此来抵御CSRF攻击。
将Low Security Leve构造攻击页面方法1中的攻击页面test.html复制一份,命名为 192.168.0.5.html, 并修改部分代码,后放到phpstudy的www目录中。
受害者点击192.168.0.103/192.168.0.103.html
测试
High等级
查看源码
利用受害者的cookie去修改密码的页面获取关键的token xss.js放置于攻击者的网站上。
DOM XSS 与 CSRF 结合攻击
CSRF结合同Security Level的DOM XSS,通过ajax实现跨域请求来获取用户的user_token,用链接来让受害者访问诱导点击后,成功将密码修改为zuowenyang6。
DOM xss测试
用以下链接来让受害者访问:
http://192.168.0.103/vulnerabilities/xss_d/?default=English#
CSRF测试
新开一个页面,登陆DVWA,将安全级别设置到:“high”,并选择 CRSF(XSS(DOM)页面不能关闭)
通过XSS(DOM)进行CSRF攻击
在XSS(DOM)界面,进行CSRF攻击测试。
http://192.168.0.103/vulnerabilities/xss_d/?default=English#<script%20src=“http://192.168.0.103/xss.js”>
测试