1. XSS(跨站脚本攻击) 简介
XSS(Cross Site Script):为了与CSS(Cascading Style Sheet, 层叠样式表)区别,所以在安全领域叫XSS。
XSS攻击不一定是真的跨域,而是因为一开始其示例是跨域的。XSS破坏力大,产生场景复杂难以一次性解决,所以针对不同场景产生的XSS需要区分场景对待。
根据XSS效果可以将其分为以下几类:
①反射型(也叫非持久型,Non-persistent XSS):这种攻击是一次性的,仅对当次的页面访问产生影响,用户输入的数据不会被存储。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行。
②存储型(也叫持久型,Persistent XSS):用户输入的数据被存储到服务器的数据库中,当以后调用该数据并没有有效的数据检查时就会造成XSS。
③DOM Based XSS(Document Object Model基于文档对象类型):按数据是否保存到服务器划分,DOM XSS应该属于反射型。但是由于其完全在前端浏览器进行,所以将其作为一个单独分类说明。
扩展阅读:
2. XSS 攻击
①XSS Payload:
攻击者对用户当前浏览的页面植入恶意脚本(比如JavaScript、flash脚本或其余的富客户端脚本),通过恶意脚本,控制用户的浏览器。
示例:(以下示例仅供理解思路,均不展示代码示例。若有需要请查看《白帽子讲web安全》原书或扩展阅读)
i) Cookie劫持:窃取用户的cookie信息,使攻击者可以在没有密码的情况下登入用户账户。
ii) 构建GET & POST请求:可以直接操作用户的浏览器,在某些隔离环境里非常有效,如cookie劫持失效或用户不能正常访问互联网时。
iii) XSS钓鱼:利用JavaScript脚本伪装网站内容(如登录框)诱导用户输入关键信息(如用户名、密码等等)。
iv) 收集用户个人信息(识别用户浏览器、操作系统、安装的软件):通过获取用户详细信息可以针对用户进行精确的攻击(如选择浏览器相对应的漏洞)最终达到植入木马的目的。
v) CSS History Hack:通过CSS来发现用户曾经访问过的网站,利用了style的visited属性(用户访问过的链接颜色会不同)。
vi) 获取用户真实IP:一般是利用第三方软件或XSS的attack API来获取用户真实IP,比如XSS通过调用JRE的一些特殊API来获取用户本地IP。
扩展阅读: