另类安全问题是围饶在web应用里重定向和文件使用
4.1 重定向
web应用里重定向是个被低估craker工具:它不仅可以让用户掉入个陷进网站WebSite而且还可以创造个完备攻击
当用户被允许由个URL重定向时候它由可能就是个漏洞最明显攻击是将用户重定向到个和原始页面模样假页面这个所谓‘钓鱼攻击’通过给用户发送封包含正常不让人起疑链接email 通过XSS方式往web应用里注射这个恶意链接或者把链接放到个虚假网站WebSite(域名看起来差不多页面也相同站点)它是毫不让人怀疑这个链接起始URL是这个正常web应用指向恶意站点URL都被隐藏在重定向参数里:http://www.example.com/site/redirect?to= www.attacker.com. 这里由个例子:
def legacy
redirect_to(params.update(:action=>''))
end
如果用户访问legacy这个action将会被重定向到mail action这样做意图是为了维护legacy参数并把这些参数传到 action 但是如果它包含了个host key就会被攻击者利用
http://www.example.com/site/legacy?param1=xy¶m2=23&host=www.attacker.com
如果它在url尾部 将很难被注意到用户就被神不知鬼不觉重定向到了攻击者页面个简单对策是在legacy action里只包含预期参数(白名单办法不是取消所有意向不到参数)如果你重定向到个网址你需要用白名单或是正则表达式检查它
4.1.1 Self-contained XSS(自载xss攻击)
另个重定向和self-contained XSS 攻击是通过firefox和opera里使用种数据协议该协议直接在浏览器里显示其内容可以使任何内容从htmljavascript到图片(这不是个漏洞而是个功能)
data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K
这个例子是个Base64编码显示简单消息框javascript在个重定向URL里个攻击者能用它里面恶意代码重定向这个url
更详细攻击原理可以参看这里:http://www.gnucitizen.org/blog/self-contained-xss-attacks/
对策:do not allow the user to supply (parts of) the URL to be redirected to.(说实话这里我没看明白)
4.2 文件上传
- 确保文件上次不覆盖重要文件和同步媒体文件进程
很多web应用允许用户上传文件用户可以选择文件名字应该随时被过滤攻击者可以用恶意文件名覆盖服务器上任意文件如果你在/var/www/uploads存储上传文件用户输入个文件名:../../../etc/passwd 它可能覆盖个重要文件
当过滤用户输入文件名时不要试图去删除恶意部分想想如果去掉所有../ , 攻击者输入.. .. //, 那么结果就成了../最好是用白名单方式用套可接受去检查文件名有效性旦它不是个有效文件名则拒绝它(或替换它)但是不删除它们这有份来自attachment_fu插件文件名清单:
def sanitize_filename(filename)
ing filename.strip do |name|
# NOTE: File.basename doesn't work right with Windows paths _disibledevent=> 'inline'
另外个方式是在数据库里存储文件名这种方式可以避免上传文件代码被执行attachment_fu用就是类似方式本文出自 51CTO.COM技术博客
最新评论