Client Side Filtering
总结
客户端是不可信的,不要将过多信息(权限外信息)传输给客户端。
实验过程
直接用 F12 找到隐藏信息即可。
自动化检测的可行性
较难,难以判定什么是权限外信息。
Same Origin Policy Protection
总结
本节课程主要是熟悉同源策略。
同源策略保护。同源策略是指,域名,协议,端口相同。它是客户端脚本,尤其是JavaScript的重要安全度量标准。它阻止从一个源加载的文档/脚本用来获取或设置另一个源加载的文档的属性。
AJAX技术的一项关键元素是XMLHttpRequest(XHR),该技术允许客户端向服务器端发起异步调用。然而,作为一项安全措施,这些请求最好只能从客户端原始页面向服务端发起访问。
可以看到,下面该页面下面依次有两个超链接,第一个是链接符合同源策略的,第二个链接是不符合同源策略的。
XMLHttp只能向同源服务器发送请求,任何向非同源服务端发送数据的尝试都将失败。
DOM Injection
总结
前端禁用功能并不可靠,可以通过修改response绕过。如果要禁用,必须同时保证后台禁用。
实验步骤
(实验失败,找不到form)
修改burpsuit的默认设置,开启响应拦截。
请求拦截后,依次点击:Action ——> Do intercept ——> Response to this request
设置拦截该请求的响应后,点击Forward,拦截到如下服务器的响应。
修改该响应,找到submit这里,去掉“disabled”字段,然后forward,可见浏览器显示的激活按钮已经可以按动了。
DOM-Based cross-site scripting
总结
DOM型 跨站脚本的常见利用方式, 再次印证一切输入都是不可信的。
实验过程
首先发现输入都会到一个 h1 标签内
第一阶段
For this exercise, your mission is to deface this website using the image at the following location: OWASP IMAGE
第二阶段
Now, try to create a JavaScript alert using the image tag
第三阶段
Next, try to create a JavaScript alert using the IFRAME tag.
第四阶段
Use the following to create a fake login form
第五阶段
Perform client-side HTML entity encoding to mitigate the DOM XSS vulnerability. A utility method is provided for you in escape.js.
即如何防御 DOM XSS
将
修改为
|
|
就是用 escapeHTML 过滤一下输入。
XML Injection
burp 拦截和篡改 XML
JSON Injection
实验步骤
说起来都不一定要burp拦截改包,直接 F12 修改就行了。
Insecure Client Storage
总结
不安全的客户端存储。在服务器端验证所有的用户输入信息是很好的,但是在客户端输入的任何验证信息都存在被逆向分析的脆弱性。记住,客户端的任何数据都不能被视为机密!
实验步骤
第一阶段
F12 Sources
客户端JS断点调试的基本方法
第二阶段
要求我们绕过客户端的验证,提交订单却不花钱。这个需要在客户端修改价格,利用firebug,在HTML中找到readonly=””,删除该属性,则可在页面上随意修改商品价格,然后提交免费的订单!
Slient Transactions Attacks
总结
验证转账合理性的部分不应该放在前端,应该在后台验证,放在前端会存在被逆向的风险。
实验步骤
当用户输入账户名和额度后,点击“Confirm”,在转账交易前,会首先调用processData()来判断用户的输入以及转账额度是否合理等,然后调用函数submitData(accountNo, amount)进行转账,而该函数实际上是向后台提交转账所需的重要信息:目标账号和转账金额。
如果通过浏览器直接执行submitData(accountNo,balance)函数,那么就可以绕过客户端验证,不需要任何额外的确认和用户数字签名。这里指的是用浏览器直接执行,而不是系统给定的“Confirm”按钮。在浏览器地址栏输入如下内容:
|
|
Dangerous Use of Eval
总结
危险指令使用。eval()函数可以编译并执行任何JS代码。这隐藏了一个潜在的安全问题。
实验步骤
这是一个购物的网页,要求通过alert()函数显示出document.cookie,3位数的授权码会进入服务器进行验证,因此可以针对该授权码进行特别构造。
输入如下内容:
|
|
则服务器收到并返回的JavaScript结果是
|
|