Java代码审计连载之XSS

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

内容简介: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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

New Dark Age

New Dark Age

James Bridle / Verso Books / 2018-7-17 / GBP 16.99

As the world around us increases in technological complexity, our understanding of it diminishes. Underlying this trend is a single idea: the belief that our existence is understandable through comput......一起来看看 《New Dark Age》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具