xss注入1.0

0X01综述

这段时间一直着手两样东西,xss技巧与网站逻辑分析。

本文简单就这两部分对网站渗透测试进行简单分析。

0X02XSS测试

先从xss技巧说起,xss来源就是网站没有对用户行为输入过滤就直接显示造成的任意js代码执行,也就是让另一个用户以他的权限来执行你的命令,做个不恰当的比喻就是,你想从银行(后台)抢钱(权限),抢刚刚从银行取钱出来的人(已获取正当权限的用户)总比抢银行金库(管理员后台)容易。

而xss执行方式通常分为三种,反射型,存储型,DOM型,

先从存储型说起,存储型原理就是一些网站往往将你输入的数据不加过滤的存入数据库,并回显到网页上,而当别人的浏览器解析网站回显出来的数据时,可能就会执行其中的代码部分,例如,常见的用户评论区,当你评论”***”到评论区,别人能看到的可能只有”***”,因为你的两个标签被浏览器解析为html文件的标签部分了,而不是你评论的数据部分。而当你运用的标签是”,跨域文件jQuery.js里的js函数就可以被随意调用。

然后就是反射型xss漏洞了,反射型漏洞的xss的恶意代码可以被写在url指向的文件中,然后执行完了页面直接重定向到正常页面,仅能浏览前端的你很难发现你的浏览器真正做过什么,另一个方法是直接把恶意代码写进url参数中,然后回显在页面里,和sql注入的方式有点像,只不过sql注入目的是由后台执行恶意sql语句,xss目的是存入后台,然后回显到其它用户浏览器,由其它用户执行恶意javascript等脚本代码。

最后就是DOM型xss了,与前两种方式不同的是DOM并不需要原来回显页面上存在漏洞,(没有漏洞,就创造漏洞!),例如通过在url中写入一些代码,诱使受害者点击url执行其中的恶意代码,然后使浏览器主动在已从服务器返回的页面上添加html元素(DOM节点)来添加漏洞。

大概就是这么多,很多地方感觉自己讲得不太清,不过估计以后洞拿多了就好了。然后flash xss暂时略过,积累一下经验,之后的文章会说一下。

0X03XSS实战&绕过

然后就是各种插入技巧了,个人感觉,xss想要成功主要有三个方法,一来要靠剑走偏锋,挑一些程序员往往想不到的小页面小地方注入,正如一个正门(首页)把守森严(过滤完善)的城堡(站点),如果如果打不过守卫(绕不开过滤),就要考虑要不要从侧面的狗洞(边际页面)钻进去。二来就是神奇的绕过技巧,坚信没有绕不过的过滤,不过这要求对js代码的神奇用法还有各种框架过滤函数的深度了解,主要靠积累和经验。最后就要靠瞎猫碰死耗子的运气了,大概就是一些为了进度不顾安全的程序员恰好忘了在某个地方过滤输入或是输出的时候,你的机会就来了。

先就前两点法则分别简单说一说吧,首先剑走偏锋,手工上的原则就是见框就插,反复插,花式插,换平台插(例如app插完数据来手机看,PC浏览器插完去手机浏览器看,见过一个地方web端没问题,手机浏览器打开就会多出一段网页上不可见代码,通过手机上安装firefox看源代码才看到的,并且借此成功弹框,而且只是Android才会有问题,ios没事,但Android适用人群之广,同样使得问题十分严重),搞URL参数,搞完了发现所有地方正常显示没弹框也不要急,耐心打开源代码,ctrl+F寻找插入的关键词,可能在某个网页没有显示的地方,你只不过因为某个标签没闭合才没弹框。脚本基本就是扫站,burp的activescan是个好东西,虽然我之前并没有在里面看到可用的xss但是确实是有扫描xss的功能的。说起来一直没搞懂的东西就是fuzzing xss是怎么搞,我的设想是直接使用burpsuit列个可能成功的xss字典,然后使用暴力挨个空挨个插的方法找结果,然而比较尴尬的地方在于好像没办法根据返回状态来判定是否成功插进去,看起来需要爬虫才行。二来就是过滤绕过,常见过滤有长度过滤,特殊字符屏蔽(删除),字符转义,字符输入限制。

长度过滤的话可以考虑拼接参见http://www.wooyun.org/bugs/wooyun-2010-045687,尤其是将命令写成多个字符串然后eval函数拼接+执行的方法确实给力。

payload:

特殊字符屏蔽,例如吞掉script字符串的,就要靠花式payload了,例如添加反斜杠,大小写混合(html对大小写不敏感,但是script内部内容为javascript对大小写敏感)。之前还见过只吞第一个

你可能感兴趣的:(安全)