php代码审计-前端漏洞篇
在实战中不建议深度挖掘,这些漏洞一般都可以通过一些逻辑漏洞进行绕过
白盒审计中的前端漏洞
前端漏洞类型:
- xss漏洞
- CSRF漏洞
- JSONp劫持漏洞
- url跳转漏洞
- 点击劫持漏洞
白盒测试中的XSS漏洞
如何在白盒测试中寻找xss漏洞
- 自动化FUZZ,寻找输出函数
- 富文本xss挖掘
那么就有个问题,什么是富文本
富文本就是例如网站开发者为使用者开发的留言板,文章编辑器等内容
富文本xss
常见的富文本过滤方法:
黑名单过滤:
1 |
|
1 |
|
上述的两种方式虽然十分的高效和有效,但是其必然会影响到业务的正常,尤其是那些博客在线编辑等网站,这个时候一般的开发者就会选泽富文本过滤器
其实也没什么高深的,就是处理了一些js前端敏感和危险的函数
1 | <script src=16 href=16 onerror="javascript:alert(16)"></script> |
会被直接过滤成
1 | <script src=16 href=16 onerror="javascript:xxxx(16)"></script> |
例子:Roundcude邮件xss漏洞
https://cloud.tencent.com/developer/article/1717473
它的富文本过滤器在出处理style中时,当输入’ 时,加上”,当使用“时加上’
那么如果我同时使用’和”那会怎么样,那么就成了
挖掘代码中的富文本xss漏洞
黑名单还是白名单
黑名单:查找不存在于名单中的关键词(标签,属性)(fuzz爆破i)
白名单:白名单中是否有可利用的标签,属性
代码逻辑是否有问题(如用户输入的内容溢出属性外成为一个新属性)
收集,积累前端xss技巧
白盒测试中的CSRF漏洞
如果学员不知道csrf是啥,就解释Csrf:跨站请求伪造,例如:点击未知链接,造成账号等信息被盗取,既该攻击可在被攻击者不知情的情况下以受害者的名义伪造请求,执行恶意操作。
攻击大致历程:以添加后台管理员为例,首先想办法获取添加管理员的时的数据包(如果是cms,本地部署就可获取),然后利用csrftest对数据包进行修改,修改完后直接在公网主机上开个服务,把修改过的csrftest的html文件上传,然后诱导网站管理员点击链接(其实也可以在csrf的报文里添加个beefxss的存储型xsspayload直接获取cookie)完成攻击
如何在白盒中挖掘CSRF漏洞
确定目标防御csrf漏洞的方式
检查Referer
检查token
寻找Referer检查缺陷
URL技巧
一些粗心的开发者针对Referer只是做了简单的处理
1 |
|
(如果有学员问啥是$_SERVER,回答他这是一个用于返回web服务参数的原生函数https://www.runoob.com/php/php-superglobals.html)
但是很明显,上述demo这样处理是及其不安全的,攻击者会注册一个例如http://dezuz.net.eval.com的类似域名进行绕过(成本偏高)
原理就是parse_url函数的相关特性,导致的,当攻击者的域名为http://dezuz.net.eval.com或http://eval.dezuz.net.com时,只要保证你的域名里有dezuz.net,那么就能成功绕过
寻找跨域漏洞(Referer无解,只能从token找突破点)
Flash
Jsonp
CORS
白盒测试中的Jsonp劫持漏洞
jsonp劫持漏洞介绍
jsonp劫持漏洞常见位置
- web框架默认支持ajax+jsonp方式请求
- 程序员开发需要支持jsonp的应用
例子:fanwe O2O用户密码可劫持
jsonp劫持防御绕过
Referer检查可被绕过
Some攻击
那么,什么是same攻击,让我们假设一个场景,一个网站有xss漏洞,但是做了严格的限制,只能插入部分代码片那么这个时候就需要用到same攻击了,same攻击的原理是假设当一个窗口文件被重定向之后,它的窗口对象仍然保存在原始分配的内存空间中,如果窗口A打开了窗口B,用户代理将会创建一个指向窗口A的引用,当窗口A的文件内容被修改(重定向)后,引用并不会被清除,而且窗口B仍然能够使用窗口属性值来引用它。
https://michaelwayneliu.github.io/2017/12/21/SOME%E6%94%BB%E5%87%BB/