<img src=1img onerror 错误次数=alert(1)>

    • 1、什么叫跨站脚本攻击?
    • 2、XSS跨站脚本攻击的原理
    • 3、XSS跨站脚本攻击的目的是什么?
    • 4、XSS跨站脚本攻击出现的原因
    • 5、XSS跨站脚本攻击的条件
      • 1、有输入有输出且输入地方没有过滤
      • 2、有输入有输出(没有输出即没有解析也不行))
    • 6、XSS跨站脚本攻击分类
  • 7、如何查找XSS跨站脚本攻击漏洞
  • 12、XSS绕过简单方法
  • 4、xss获取键盘记录演示(涉及到跨域)

1、什么叫跨站脚本攻击?

即:给一个目标插入脚本攻击代码,当浏览的人访问这个网站,那么浏览的人就中招了

2、XSS跨站脚本攻击的原理

原理:XSS(Cross Site Scripting)是指攻击者在网页中嵌入客户端脚本攻击代码,通常是JavaScript编写的危险代码,用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。

3、XSS跨站脚本攻击的目的是什么?

最终目的是在网页中嵌入客户端恶意脚本代码让浏览者访问,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言,例如:ActionScript、VBscript。而如今的互联网客户端脚本基本是基于Javascript,所以如果想要深入研究XSS,必须要精通Javascript。

而对于渗透测试人员来说只需要弹个窗就好,证明有XSS漏洞

4、XSS跨站脚本攻击出现的原因

程序对输入和输出的控制不够严格,导致"精心构造“的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。代码示例:

5、XSS跨站脚本攻击的条件

1、有输入有输出且输入地方没有过滤

2、有输入有输出(没有输出即没有解析也不行))

6、XSS跨站脚本攻击分类

交互的数据一般不会被存在在数据库里面,只是简单的把用户输入的数据反射给浏览器,一次性,所见即所得。(一般来说,前端页面会限制字符串长度,修改下maxlength就好)

交互的数据会被存在在数据库里面,永久性存储,具有很强的稳定性

不与后台服务器产生数据交互,通过前端的dom节点形成的XSS漏洞(危害很小,很难利用,但是也是一类)

7、如何查找XSS跨站脚本攻击漏洞

对于XSS来说,只要有输入且有对脚本输出解析的地方(登录注册修改更新留言等等),都可以尝试XSS——>

即:限制了跨域加载脚本

那么为什么要有同源策略? 比如一个恶意网站的页面通过js嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。

Tips:下面这些标签跨域加载资源(资源类型是有限止的)是不受同源策略限制的

也就是说,如果我们构造的url中使用到了.js脚本,同源策略是必须开启的,就像下面所介绍的键盘记录一样。例子:

XSS盲打就是攻击者在前端提交的数据不知道后台是否存在xss漏洞的情况下,提交恶意JS代码在类似留言板等输入框后,所展现的后台位置的情况下,网站采用了攻击者插入的恶意代码,当后台管理员在操作时就会触发插入的恶意代码,从而达到攻击者的目的。

12、XSS绕过简单方法

大多数网站为了避免xss的攻击,对于攻击者的输入都采取了过滤的措施,导致攻击者通常不能正常插入恶意代码来达到攻击目的。但是仍存在一些漏洞可以利用,来绕过过滤措施。

xss绕过的方法有许多,主要取决于攻击者的思路和对前端技术的掌握,以下介绍几个简单的绕过方法。

对前端的限制可以尝试进行抓包重发或者修改前端的HTML。

防止后台对输入的内容进行正则匹配来过滤输入,对于这样的过滤可以考虑大小写混合输入的方法。

防止后台对输入的内容进行替换,采用拼拼凑的输入方法。

使用注释来干扰后台对输入内容的识别。

思路:后台有可能会对代码中的关键字进行过滤,但我们可以尝试将关键字进行编码后在插入,浏览器对改编码进行识别时,会翻译成正常的代码。(注意:编码在输出时是否会被正常识别和翻译才是关键,不是所有的编码都是可以的)

使用HTML进行编码:

(例如:系统用了正则匹配,导致大小写和双写绕过失效,但是可以使用事件驱动,原理就是让靶机因为无法出现一个不存在的图片而出发错误,出现弹窗。)

过滤原理:htmlspecialchars() 函数把预定义的字符转换为 HTML 实体,从而使XSS攻击失效。但是这个函数默认配置不会将"单引号"和"双引号"过滤,只有设置了quotestyle规定如何编码单引号和双引号才能会过滤掉单引号
(类似于sql参数化查询,将变量变为了常量)

XSS防御的总体思路是:

对输入进行过滤,对输出进行编码

过滤:根据业务需求进行过滤,比如输出点要求输入手机号,则只允许输入手机号格式的数字。
转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行JS转义()

系统使用了htmlspecialchars把我们XSS要用到的一些预定义字符转化为HTML实体,导致无法再进行反射型XSS攻击。 预定义字符包括:"、'、<、>、&

填入上面的xss代码:

使用户点击我们的含xss代码的页面:post.html,然后就能获取到登录状态下用户的cookies

利用这段代码,让受害者输入用户名密码,我们后台就能接收到


4、xss获取键盘记录演示(涉及到跨域)

条件:需要不受同源策略影响,到后台设置好Access-Control-Allow-Origin,设置为*,既允许所有人访问,不受同源策略限制。

rk.js关键代码解读:

输入设置好的恶意JS代码:

然后在键盘上随意输入,就可以到xss平台上去查看键盘输入的结果

这篇文章主要介绍了PHP开发中常见的安全问题详解和解决方法,详细介绍了例如Sql注入、CSRF、Xss、CC等攻击手段的背景知识以及解决方法,需要的朋友可以参考下

浅谈Php安全和防Sql注入,防止Xss攻击,防盗链,防CSRF

首先,笔者不是web安全的专家,所以这不是web安全方面专家级文章,而是学习笔记、细心总结文章,里面有些是我们phper不易发现或者说不重视的东西。所以笔者写下来方便以后查阅。在大公司肯定有专门的web安全测试员,安全方面不是phper考虑的范围。但是作为一个phper对于安全知识是:“知道有这么一回事,编程时自然有所注意”。

目录:1、php一些安全配置
(1)关闭php提示错误功能
(2)关闭一些“坏功能”
(3)严格配置文件权限。
2、严格的数据验证,你的用户不全是“好”人

这种情况下会导致一些未初始化的变量很容易被修改,这也许是致命的。所以把register_globals = OFF关掉

(3)严格配置文件权限。

为相应文件夹分配权限,比如包含上传图片的文件不能有执行权限,只能读取

2、严格的数据验证,你的用户不全是“好”人。

记得笔者和一个朋友在讨论数据验证的时候,他说了一句话:你不要把你用户个个都想得那么坏!但笔者想说的这个问题不该出现在我们开发情景中,我们要做的是严格验证控制数据流,哪怕10000万用户中有一个是坏用户也足以致命,再说好的用户也有时在数据input框无意输入中文的时,他已经不经意变“坏”了。

(5)更新提权和插入提权同理

这样只要有一个用户名字是b开头的都能正常运行,“ _b_”是匹配三个字符,且这三个字符中间一个字符时b。这也是为什么有关addslashes()函数介绍时提示注意没有转义%和_(其实这个是很多phper不知问什么要过滤%和_下划线,只是一味的跟着网上代码走)

(9)还有很多猜测表信息的注入sql

当然还有很多,笔者也没研究到专业人士那种水平,这里提出这些都是比较常见的,也是phper应该知道并掌握的,而不是一味的在网上复制粘贴一些防注入代码,知然而不解其然。

下面一些防注入方法回看可能更容易理解。

我要回帖

更多关于 img onerror 错误次数 的文章

 

随机推荐