Java代码审计连载之XSS

栏目: 编程工具 · 发布时间: 7年前

内容简介:Java代码审计连载之XSS

本文原创作者:黑客小平哥,本文属i春秋原创奖励计划,未经许可禁止转载

前言

最近几天比较忙,没有连载文章,今天正好有时间就写写吧,连载的都是基础的漏洞,大神路过留个脚印就可以撤了,哈哈,俗话说不喜勿喷,那咱们就开干!

跨站脚本(XSS)原理

先看下百度百科对XSS的介绍:

跨站脚本攻击 (Cross Site Scripting) ,为不和 层叠样式表 (Cascading Style Sheets, CSS )的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

事实上XSS可以分为以下三种类型:

1.反射型XSS

反射型XSS也被称为非持久性XSS,一般反射型XSS是用户直接在URL中提交一段可执行代码,最后直接在页面中输出,页面将提交的代码执行,形成XSS攻击,一般单纯的反射型XSS危害并不大,但是当XSS遇上跨站请求伪造(CSRF)就会形成可怕的蠕虫。

2.存储型XSS

存储型XSS又被称为持久性XSS,存储型XSS是恶意用户输入的可执行代码直接保存在数据库中,最后在某个页面被调用显示出来,最后执行。存储型XSS相对来说危害就非常大,一般恶意用户可通过存储型XSS去盗窃管理员的Cookie,从而获取管理员权限。

3.DOM型XSS

DOM,即文档对象模型(Document Object Model,简称DOM),是 W3C 组织推荐的处理可扩展标志语言的标准编程接口。DOM型XSS其实是一种特殊的反射型XSS,可能触发的DOM型XSS属性包括但不限于:document.location、document.URL、document.referrer、window.location......

下面详细介绍此三种XSS:

反射型XSS

反射型XSS的执行条件

有以下几点:

1.传递参数为用户可控,简单页面如下:

Java代码审计连载之XSS

其中搜索框种的值即为可控参数,在URL中表现形式如下:

http://localhost:8080/javatest/searchword?word=

2.参数未经过任何过滤或者过滤不完全,最终直接显示在前端页面,形式如下:

Java代码审计连载之XSS

Java代码审计连载之XSS

Java代码审计连载之XSS

此处参数在前端为EL表达式获取,并且为添加任何过滤,最后直接显示在页面。

反射型XSS的表现形式

当输入框输入的参数为:<script>alert(1)</script>  时,就会直接被浏览器当作脚本执行:

Java代码审计连载之XSS

URL表现形式:

http://localhost:8080/javatest/searchword?word=%3Cscript%3Ealert%281%29%3C%2Fscript%3E

弹框:

Java代码审计连载之XSS

存储型XSS

存储型XSS的执行条件

有以下几点:

1.传递参数为用户可控,简单页面如下,这是一个简单的增加用户界面,文本框中的参数都为用户可控:

Java代码审计连载之XSS

2.参数在传递过程中未经过任何有效过滤(或者存在过滤不全,会被绕过),并且能够存储在数据库中,代码如下:

Java代码审计连载之XSS

Java代码审计连载之XSS

3.在前端页面会显示用户存储的数据,并且未做任何输出过滤(或者过滤不全),页面和代码如下:

Java代码审计连载之XSS

Java代码审计连载之XSS

存储型XSS的表现形式

在添加用户处输入:<script>alert(1)</script>

Java代码审计连载之XSS

数据库中存储的形式如下:

Java代码审计连载之XSS

当数据显示在页面,就会执行脚本:

Java代码审计连载之XSS

Java代码审计连载之XSS

DOM型XSS

DOM型XSS的原理其实和反射型XSS差别并不大,只是可控参数拼接在DOM标签输出,页面如下:

Java代码审计连载之XSS

此处‘a’为可控参数,当‘a’为123456789时:

Java代码审计连载之XSS

当‘a’为<img src=1 onerror=alert(1)>时:

Java代码审计连载之XSS

XSS的修复

XSS的修复大概分为两种形式,一种为输入验证,一种为输出验证:

1.输入验证,添加全局过滤器,对特殊字符进行过滤,包括(但不限于):

|(竖线符号)

Ø&(&符号)

Ø;(分号)

Ø$(美元符号)

Ø%(百分比符号)

Ø@(at符号)

Ø'(单引号)

Ø"(引号)

Ø\'(反斜杠转义单引号)

Ø\"(反斜杠转义引号)

Ø<>(尖括号)

Ø()(括号)

Ø+(加号)

ØCR(回车符,ASCII 0x0d)

ØLF(换行,ASCII 0x0a)

Ø,(逗号)

Ø\(反斜杠)

Øeval方法

Ødocument

Øcookie

Øjavascript

Øscript

Øonerror

过滤形式如下(注意大小写):

Java代码审计连载之XSS

Java代码审计连载之XSS

代码中,获取过滤后的参数,再执行数据库操作:

Java代码审计连载之XSS

Java代码审计连载之XSS

Java代码审计连载之XSS

2.输出验证,对输出的参数做编码过滤,此处不写了,方法大同小异。

过滤后输出截图:

Java代码审计连载之XSS

结论:

累死了,今天就写这么多吧,写的不好或者有错误之处,多多指教,谢谢!


以上所述就是小编给大家介绍的《Java代码审计连载之XSS》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Standards Creativity

Web Standards Creativity

Andy Budd、Dan Rubin、Jeff Croft、Cameron Adams、Ethan Marcotte、Andy Clarke、Ian Lloyd、Mark Boulton、Rob Weychert、Simon Collison、Derek Featherstone / friends of ED / March 19, 2007 / $49.99

Book Description * Be inspired by 10 web design lessons from 10 of the world's best web designers * Get creative with cutting-edge XHTML, CSS, and DOM scripting techniques * Learn breathtakin......一起来看看 《Web Standards Creativity》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码