先在phpstudy上搭建一个gamerycms的一个平台,文件可以在github上获得:https://github.com/bensonarts/GalleryCMS
搭建完成之后我们就有以下的界面
这将是我们进行xss存储型攻击的目标,当然也需要一个工具这边国内外都有网站,我用的国外的网站,https://xsshunter.com/直接注册,为了之后的方便建议把自定义xss域名设置短一点,然后我们就可以进行尝试绕过了;
先一步把靶机配置好环境,然后我们进到xsshunter中在里边我们能获取到Payloads,这是推荐给我们的语句,是可以直接使用的。
通常情况下,程序员在编写前端的时候,都会限制我们用户输入的字符长度,所以我们要选择最短的一条语句输入;
这条是最短的(别问我为什么域名这么长,申请不到)
之后就前往搭建好的网站上测试
在里边输入我们复制的最短的语句并Add;
很明显说输入的长度不能超过45字节,我们输入的超过了45字节,那我们就应该怎么样去减少长度,这时候我们想方设法(上帝模式)去查看网站对输入的标签的过滤规则
很明显它过滤了很多的标签,但是忘记了这个标签所以我们可以从这里下手,很明显
这个标签就比
短这么些直接就去尝试一番
很明显长度还是超过了,此路不通,换个思路,从编码的角度上去想,因为在unicode编码里可以将将三个字符编码成一个字符的编码格式就像是:
- ff expands to `ff`
- ℠ expands to `sm`
- ㏛ expands to `sr`
- st expands to `st`
- ㎭ expands to `rad`
- ℡ expands to `tel`
这些前边是编码后的内容,被认定为一个字节,后边是他们原本的字节长度,所以我们就可以继续从域名方面下手,再次缩短他的长度,就像是℡㎭.cn
这一共才5个字节,而且是完全可以使用的,我们只需要去域名注册,寻找telrad.xx
这样的域名去注册购买再去成上述的步骤就可以,但是这样就出现了一个问题,加上你的域名只能产生一个弹窗,并不能访问我们的
.js
文件,所以我们就需要去买一个服务器,把我们的域名绑定到服务器上,在服务器上安装一个beef的程序,将hook.js
写入到index.html
中,当我们把需要输入的语句输进去之后,就会访问我们服务器,而我们的服务器上的beef中的hook.js
就会将的访问重定向到我们事先准备的地方然后就会获得我们所需要的东西,这样就绕过了;当然你要是问我为什么没有过程只有文字描述,那是因为我没有服务器,买不起域名~~[哭]
想想xsshunter该怎么做;
可以使用域名重定向(国内要备案)所以用国外的域名;
首先购买一个外网的域名(当然要短,也尽量满足我们unicode编码的形式)然后将域名用DNS将域名重定向到我们xsshunter申请的网站上,在长度满足的情况下完全是没有问题的;
所以就我现在申请的1122334zmbgxyh233
这样的域名很明显是难以完场20个字符这样艰巨的任务的,这样的话我们就只有两种方式来解决这件事(上帝模式)网站是我们自己搭建的可以修改插入字符的长度,但显然这样没有什么意思,所以我们就去xsshunter上重新申请一个满足要求的域名.
申请完成之后还有个前提是网站在没有现在标签的前提下我们去尝试一下
现在我们的字节长度是25,当然如果是上边的两种方法肯定是可以更短
现在可以明显看到已经开始访问我们xsshunter了;去看一下
我们的xsshunter已经有了返回值
这是里边的内容 我们已经获得了网站的cookies这样基本上这个网站就已经是我们的囊中物了;//虽然他本来就是//
利用网页开发时留下的漏洞,通过注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序
JavaScrept、 Java、 VBScript、ActiveX、 Flash、HTML
攻击者可能得到包括但不限于更高的权限,私密网页内容,会话和cookie等各种内容。
攻击发起容易,隐秘性强
HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始、与之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。
(1)持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。
(2)非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
(3)DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。(基于DOM的XSS漏洞是指受害者端的网页脚本在修改本地页面DOM环境时未进行合理的处置,而使得攻击脚本被执行。在整个攻击过程中,服务器响应的页面并没有发生变化,引起客户端脚本执行结果差异的原因是对本地DOM的恶意篡改利用。)
1、盗用cookie,获取敏感信息。
2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。
(1)不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、REFER、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用POST而非GET提交表单;对“<”,“>”,“;”,“””等字符做过滤;任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来。
(2)实现Session 标记(session tokens)、CAPTCHA(验证码)系统或者HTTP引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。
(3)cookie 防盗。避免直接在cookie中泄露用户隐私,例如email、密码,等等;通过使cookie和系统IP绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,很难拿来直接进行重放攻击。
(4)确认接收的内容被妥善地规范化,仅包含最小的、安全的Tag(没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript),使用HTTPonly的cookie。