xss经常出现在大家视野owasp排老前了,我自己就挨跨站搞过被盗了号,流汗….
xss主要影响的是客户端的安全,乱点小网站乱点小链接,你敢点,你就挨中招….
查阅资料,了解到如今大多数网站使用JavaScript,自学的时候我也发现了js很灵活很轻便,可以完成计算、动态页面的实现之类的,那一般来说js是针对于客户端的语言,放置在客户机上(php是服务端语言,放服务器上)js代码是可被网页引用也可以直接镶嵌在html、php文件里面的,之前做ctf题目的时候无法检查网页代码,于是我想这是不是js进行了限制,于是通过浏览器设置关闭了js,就可以审查网页代码拿到flag。因此我们知道浏览器默认开启对javascript脚本的支持。
xss类型:在我学习经历来看常见的有三
1.反射型(非持久型):构建欺骗url,点了就触发恶意代码了
2.存储型(持久型):把代码插在数据库,操作碰到那条数据就执行
3.dom型:对比上述俩需要由服务器传给用户的xss类型不同,dom型的交互发生在前台。
dom :document object model把html的标签按照父子兄弟关系建立一个树结构,简单来说dom型的xss是攻击者发送带有恶意js的url给受害者,受害者点击之后访问某个服务器,服务器返回静态的html(带有js)此时客户端的dom就改变了,并且浏览器执行恶意代码访问攻击者服务器等其他操作。
xss攻击用途:
1.拿cookie劫持会话
2.记录按键,比如输入密码,并把数据回传到攻击者电脑
3.挂黑页
4.向网页注入链接或者广告
5.立即将网页重定向到恶意网站
6.窃取用户登录凭证,盗号…比如某应用便利登录不是直径点qq就能登录了吗,盗号就是这么挨的喔。
一个有趣的绕过过滤的方法—双写关键字绕过
当网页对输入进行了过滤,比如把script给去掉,可能只会去掉一次,那么让去掉之后还有script就好了,如下:
<scrscriptipt> alert(‘咩哈哈哈哈哈哈’) </scrscriptipt>就弹窗了
那如果传入的代码被标签包着了不能执行咋办?,如下:
<input name=keyword value=”<script>alert(‘xss’)”</script>”>
此时就要想办法把前面的input闭合就好了 ,语句如下:
“> <script>alert(‘xss’)”</script>
下面是一种使用<img>标签构造脚本的方法:
<img src=ops! onerror=”alert(‘XSS’)”>
img下载图片,地址是src之后传的,,onerror是当图片或者文档加载出现错误的时候触发的事件。所以也就是说当src传的ops!是非法的东西的时候就会触发onerror事件执行代码。
补充学习:
跨站发生的一些特征,是用户输入的信息会改变页面的显示,比如一个搜索框,搜索某个关键字,结果显示包含刚输入的字符,可能就会有xss(反射型)漏洞了。
比较显著的功能就是留言板,是典型xss攻击最常用的地方
而存储型xss,在留言板类似的功能,把payload输入会存储在数据库中,只要调用数据库就会执行。
