java http url xss,XSS简介

XSS跨站脚本攻击(Cross Site Scripting),是将Java script代码插入web页面中,之后当用户浏览页面时, 会执行嵌套在web页面里面的Java script代码,从而达到攻击用户的目的。为了跟HTML里面的层叠样式表(CSS ,Cascading Style Sheets)作区分,所以叫作XSS.

反射型XSS的入侵过程:

攻击者将含有恶意JavaScript代码的URL发给用户==>用户打开URL==>web应用程序对攻击者的JavaScript做出回应==>用户浏览器向攻击者发送会话信息==>攻击者使用会话信息跟web服务器进行交互。

攻击步骤:

(1)用户正常登录web应用程序,登录之后获得一个cookie

(2)攻击者将含有攻击代码的URL发送给用户

(3)用户打开URL

(4)Web服务器执行该URL中用户的请求,同时执行该URL中所包含的的JavaScript代码

(5)攻击者可以使用的攻击代码的的可以将用户的cookie信息发送到cookie_save.php

(6)攻击者获得用户的cookie之后可以将这些信息进行登录.

危害:可以给对方浏览器构造一个恶意弹窗,可以在XSS里面加入恶意代码或者恶意链接等

打个比喻alert(“XSS”),如果换成inframescr=http://127.0.0.1.exe),如果http://127.0.0.1.exe是一个木马之后浏览这个页面的网站管理员跟用户都会感染木马

储存型XSS入侵过程:

web执行恶意代码构造URL==>用户访问这个网站==>在这浏览器中执行恶意JavaScript代码==>将cookie等重要参数返回到攻击者

危害:可以获取用户的信息,cookie等。

在本文XSS实验中,我们用弹窗作为现象。为什么我们在这里用弹窗呢,因为弹窗最明显

XSS反射型

我们打开DVWA中的XSS(Reflection)

90f8404c26fd122ace88f44f92dac453.png

之后我们在what’s your name?里面任意输入一个东西就会返回hello,下面我们以1为例。

ca8eaf63cd64a1efba6af8ab53c8e2be.png

我们也可以在这输入XSS脚本我们这拿alert(2)举例子

da87e2d40db45f7c4002e1fc91b40582.png

我们可以构造一个弹窗,我们用burp抓一下包丢到扫描器里面扫一下得到了以下结果。

0a92d9fd708aa2b1f2a1a49b29bd15d7.png

下面,我们来看一下这个结果的报告

漏洞详情(Issue detail):

name请求参数的值作为标签之间的纯文本复制到HTML文档中.它的payload(arz4valert(1)pxrmb)中已经将name参数中提交.由于该参数在浏览器中未被过滤,所以可以将Java script注入到这个应用响应中

DVWA中级别的方法是利用嵌套进绕过ipt>alert(“1”)ipt>。在中级别xss会过滤

我们看一下中级的代码:<?php

header ("X-XSS-Protection: 0");

// Is there any input?

if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {

// Get input $name = str_replace( '

$name= str_replace( '

// Feedback for end user

echo "

Hello ${name}
";

}

?>

最高级别的方法是1。利用这里面的Javascript:alert(“XSS”)进行编码就可以绕过。

高级的代码:<?php

header ("X-XSS-Protection: 0");

// Is there any input?

if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {

// Get input

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

// Feedback for end user

echo "

Hello ${name}
"; }

?>

储存型XSS

浏览器中有一个非常重要的安全机制叫做同源,同源的意思是只有同一个域里面的东西才能相互使用cookie。Cookie指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。cookie保存在浏览器中。

在储存型XSS中可以用herf属性进行绕过:

例如:link

我们首先打开一个叫做beef-XSS的工具。

1535435258_5b84e1fa30d4c.png!smallBeEF是一个用于合法研究和测试目的的专业浏览器漏洞利用框架,它允许有经验的渗透测试人员或系统管理员对目标进行攻击测试,攻击成功以后会加载浏览器劫持会话。

我们在终端输入beef-xss之后,不光在终端上出现如上界面,还会出现浏览器页面。网页端beEF的账号密码都是beef。

1535435309_5b84e22dd4a86.png!small

1535435415_5b84e2975a672.png!small

这个之后我们双击127.0.0.1之后进入这个页面

1535435431_5b84e2a78c15c.png!small之后我们点击Commands(命令)之后在这里面输入cookie

1535435456_5b84e2c08a725.png!small

之后我们回车,并点击get cookie

1535435521_5b84e30167934.png!small之后点击Execute(执行)。之后就会弹回来cookie去掉输入中的引号

1535435534_5b84e30ef2250.png!small问题背景(Issue background):

当一个数据请求以不安全的方式返回到应用程序响应中的时候,我们就可以判断这是个发射去掉输入中的引号

型XSS.我们可以构建一个请求,如果由另外一个用户触发,我们写的恶意Java script代码就可以在对方浏览器运行.我们写的Java script代码可以进行各种操作,例如窃取cookie用受害人的身份登录,进行操作.

XSS的传播方式

1.可以通过邮件或者某些其他的通讯方式,给受害者发送一个含有恶意URL的链接

2.在一些热门网站的评论区进行恶意Javascript代码插入

3.可以创建一个网站之后让所有人都可见,以便于对用户发起XSS攻击(GET或者POST请求)进行跨域

XSS的影响:

XSS受影响程度取决于受攻击的人,其包含的数据和功能会不会影响同一个域内的其他人或者其他应用程序.如果是在某一个不重要的位置,例如某个不敏感而且没有身份验证或者控制访问的地方,XSS几乎没有什么用.如果是在关键的地方,例如cookie里面,这样就会威胁到其他的应用程序所以被判定为危险.同样如果XSS被用到钓鱼上面,那么XSS就会增加用户的信任,同时安全软件也不会警告.从而使用木马进行进一步攻击。

防御策略:

1.在输入的地方进行严格的验证,例如个人信息的长度,电子邮箱的正则表达式的匹配.也就是我们俗称的白名单.

2.把用户输入任何位置的信息进行HTML编码,将用户输入所有<>和””进行替换.在应用程序中限制用户使用HTML标签跟熟悉.

3.去掉,,

4.限制输入字符

5.去掉输入中的引号

6.对输入的URL进行解码,之后进行编码

7.将重要的cookie标记为http only

攻击姿势

Thisfile=Server.MapPath(“cookie.txt”)

Msg=Request(“msg”)

Setfs=server.CreateObject(“scripting.filesystemobject”)

Setthisfile=fs.OpenTextFile(thsfile,8True,0)

thisfile.WriteLine(“======cookie:”&msg&”=====byXSS”)

Thisfile.close

Setfs=nothing

%>

*本文属北京丁牛科技出品,如需转载请标明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以通过以下几种方式来防御XSS攻击: 1. 输入验证和过滤:对用户输入的数据进行验证和过滤,确保只接受合法的输入。可以使用正则表达式或者特定的输入验证库来过滤用户输入,例如Apache Commons Validator库。 2. 输出编码:在将用户输入的数据输出到网页上时,使用合适的编码方式对数据进行转义,以防止恶意代码的执行。常用的编码方式包括HTML实体编码、URL编码和JavaScript编码。 3. 使用安全的HTML标签和属性:限制用户输入中可以使用的HTML标签和属性,只允许使用安全的标签和属性,可以使用HTML过滤器库来实现。 4. 使用安全的模板引擎:如果在项目中使用了模板引擎,确保选择一个安全的模板引擎,该引擎能够自动对输出进行编码,以防止XSS攻击。 5. 使用HTTP头部设置:在HTTP响应中设置适当的Content-Security-Policy(CSP)头部,限制页面中可以加载的资源和执行的脚本,以减少XSS攻击的风险。 6. 使用XSS过滤器:可以自定义一个XSS过滤器,在过滤器中对用户输入进行检查和处理,过滤掉恶意代码。可以参考引用中的示例代码。 ```java public class XssFilter implements Filter { @Override public void init(FilterConfig filterConfig) { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 使用包装器 XssFilterWrapper 对请求参数进行过滤 XssFilterWrapper xssFilterWrapper = new XssFilterWrapper((HttpServletRequest) servletRequest); filterChain.doFilter(xssFilterWrapper, servletResponse); } @Override public void destroy() { } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值