Web应用程序攻击
Web应用程序攻击
0.前言
实验环境说明:实验均在 Webgoat 下进行,需要抓包工具支持。Webgoat、抓包 工 具 Burpsuite 社 区 版 (Windows) 以 及 Webscarab 均可在https://mclass.cn3.quickconnect.cn/notes/Web 安全 目录中下载,你也可以使用其他的能够截获 HTTP 的工具进行实验
Webgoat 为 Web 安全实验平台,可以在本地安装,使用虚拟机构造服务器192.168.188.128
抓包工具,可以使用 Burpsuite 和 Webscarab
(这是之前的作业题目,也是回顾一下相关的攻击,包括webgoat好久没用了)
1.跨站请求伪造攻击
使用两个不同的浏览器 : 浏 览 器 A 和 浏 览 器 B , 同时登录webgoat :http://192.168.188.128/webgoat/attack (依据你的服务器地址和端口可能)。记下各自的cookie 值
谷歌登录:
火狐登录:
然后查看两个浏览器的相关cookie内容:
选择 webgoat 中的Cross-site Scripting (XSS) - Cross Site Request Forgery(CSRF)
浏览器 A (CSRF 攻击者) 填写 bbs 信息并提交,其中消息包括
1 |
|
注:数值 88888 可以修改成自己设置的数值
点击 Submit 后
通过浏览器 B(受害者),点击 Message List 中的链接
查看抓包记录(下图为 Webscarab 记录)
火狐相关抓包
解释所观察到的现象为什么是一个典型的CSRF 攻击
- 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
- 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
- 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
- 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
- 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
在所抓包的数据中我们可以看到,在火狐点击相关的网址界面后,,所使用的cookie值最后反馈在数据包中,这样子就能被谷歌的攻击者所利用,并以火狐受害者的身份以及权限进行相关操作,因此这是一个典型的CSRF攻击
2.跨站脚本攻击
访问 http://192.168.188.128/webgoat/attack (地址/端口依据实际来定义)选择 Cross-Site Scripting (XSS)
LAB: Cross Site Scripting
(1) 选择 Stage 1,进行存储型 XSS 攻击
以 Tom 的身份, 在编辑个人信息页面上的 Street 字段写入脚本,
1 |
|
并以其他用户的身份(如 Jerry) 登录, 验证该用户受到这个攻击。
注: 口令字为用户名的小写形式, 如 Tom 的口令字为 tom
这里由于不能识别中文,所以将姓名改为名字缩写,然后攻击成功了,选择 stage 5,反射型 XSS 攻击. 以任一用户登录,点击 Search Staff,输入
1 |
|
点击确定,验证该用户受到这个攻击
存储型XSS:存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie
反射型XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。反射型XSS大多数是用来盗取用户的Cookie信息。
通过两种跨站脚本攻击,我们都是利用了html的相关脚本漏洞通过alert达到我们想要的内容警报效果,这都是输入的漏洞问题
3.总结
——跨站点请求伪造
CSRF尽管听起来很像XSS跨站脚本攻击,但是它于XSS完全不同。XSS是利用站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的站点,从而在并未授权的情况下执行在权限保护之下的操作。与XSS相比,CSRF攻击不大流行和难以防范,所以比XSS更具危险性。
服务端的预防CSRF攻击的方式方法有多种,但思想上都是差不多的,主要从以下2个方面入手:
1、正确使用GET,POST和Cookie
2、在非GET请求中增加伪随机数
——跨站脚本攻击
XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本,当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie,导航到恶意网站,携带木马等。
针对XSS跨站脚本攻击,我们的防御原则是不相信用户输入的数据,对应的防御措施如下:
1、在cookie中不要存放一些敏感信息
2、输入过滤校验,对用户提交的数据进行有效性验证