XSS跨站脚本攻击:有两种情况。一种是由外部输入触发后,直接在浏览器端,即反射式XSS;;另一种是使用代码,首先保存在数据库或文件中,当web程序读取使用代码并将其输出(即存储XSS)时,触发XSS。XSS是一种特殊的反思性XSS语言。
危害性:它可以做任何头版可以做的事情。(不只是偷走cookie,修改网页等等)
一、挖掘体会。
XSS挖掘的关键是找出过滤参数是否存在,并把它们传递给输出函数。
常见的输出函数有:print、pry_r、echo、pryf、spryf、dump、var_expy,因此您只需找到这些带变量的函数。
XSS漏洞挖掘受浏览器的影响很大,掌握各种浏览器和数据协议的容错、编码等特性至关重要。
常见的情形:发表的文章、评论、新闻、登记信息的所在地、修改信息的地点等;
2.XSS反射。
黑盒子测试,你只需要提交尖括号、单引号、双引号等等。在web服务器上,检查返回的html页面,看是否保留了原来的特殊字符;
白盒式测试:只需搜索带参数的输出函数,然后根据输出函数的输入参数返回结果,观察过滤是否存在;
比如:
片段_图像001。
在代码中:oauth_signature参数直接输出,无需任何过滤,因此直接通过GET注入代码。
3.XSS仓储系统。
这就是说,当web应用程序读取利用代码并将其输出到页面时,有必要将利用代码保存在数据库或文件中并执行该利用代码。提示过程如下:
clip_image002
相对于反光XSS,storageXSS好用多了,无需绕过浏览器进行过滤,隐蔽性好很多。尤其在社交网络中,存储的XSS蠕虫可以广泛传播,影响极大。
开采储存XSS:寻找未过滤输入点和未过滤输出功能。此最终输出点可能根本不在与输入点相同的业务流程中。对这些数据,可以根据当前的代码函数进行猜测,也可以跟踪数据是在哪里处理的,使用表名称和字段名称来搜索代码。
4.预防脆弱性。
(1)特殊字符HTML实体代码转换。最佳的过滤方法是向转码添加HTML实体,以防止输出和二次调用中的脚本注入。
(2)标记事件属性黑名单。特别的字符很容易忽略,因此需要标记事件是黑名单还是白名单。建议使用白名单。通过正则表达式实现规则直接匹配。若匹配事件不在白名单中,则可直接进行拦截,而不会过滤为空。
还没有评论,来说两句吧...