绕过某通用信息管理系统实现XSS


这篇文章将为大家详细讲解有关绕过某通用信息管理系统实现XSS,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。序言实战渗透某站点时遇到的,经过几天研究最终成功绕过限制并打到管理员cookie,特此记录下备忘。将一些琐碎的trick和知识点进行了有机结合与综合实践,希望本文能对读者有所帮助,若有谬误,还请指正。准备工作首先看看站点,事先测过了SQL等漏洞,这里只测试XSS。
先尝试填充一些正常数据以判断是否会回显payload,经过测试,该站点提交信息会直接跳转回首页,无法查看payload解析执行情况。注意:测试xss时往往不要一上来就怼看不到回显难道就要盲打嘛?这里提供一个思路:尝试获取该系统的源码并本地搭建进行测试。好的,既然思路明确了,我们就尝试去获取该系统的源码。扫描敏感目录及文件,查看是否存在.git / .svn等代码工程文件,如果存在的话,是 可以直接通过该敏感文件还原出系统源码的。相关工具:https://github.com/lijiejie/GitHackSeay-svn还原工具,大家可以自行下载从源码本身着手,寻找版权相关信息,之后去网上寻找并下载源码。渗透该站时便使用了方法2免费云主机域名,尝试访问后台时网页便爆出了我们想要的信息。
搜索相关源码并下载,成功在本地搭建。
好了,这样我们就可以放心测试xss了。好戏开演
准备好payload:这里推荐一个网站缩短服务:x.co访问设置url即可
要是有更短的网址缩短服务可以留言分享下,毕竟在测试xss中有时仅仅缩短一个字符便能决定渗透成功与否。提交payload后我们到后台查看效果。
对比一下:可以发现= 与url中的‘/’被过滤掉
并且页面解析了我们的这里有个技巧:使用chrome等浏览器的开发者工具查看源代码时,如果标签是彩色的,说明被解析了,如果是黑色的,则标签已被转义而不是解析。那么我们便来考虑如何绕过限制。使用其他不包含= / 的标签进行xss编码绕过先从思路1入手:”=”符合常见于属性处,而绝大多数xsspayload所运用的便是标签的属性,想找到一个不使用”=”的标签并不容易。但是还是存在几个特例的其实这里就已经结合了编码绕过的思路,故不再赘述编码绕过
我们这里使用第一个payload,该payload完美的绕过了“=”与“/”的限制,因为特殊符号全被编码成了对应的ascii码提交payload,到后台查看效果
显然,我们的payload执行成功。你以为这样就完了吗??我们现在去目标站测试下
再看看payload的长度
所以好戏才刚刚开始啊…也许有读者会问为什么同样的payload却遇到了限制呢?这点可以在管理后台获得解答。说明目标站的数据项做了长度限制。经过测试,目标站所有的数据项长度都被限制到了40个字符,那么我们来考虑绕过。这里提供一种巧妙的思路:payload分割起来并储存在相应的变量中,拼接变量后执行。所用的payload一般为:注:此payload要求所有字符注入进同一页面。思路确定了,但是对于目标系统来说,该如何绕过’=’与’/’的限制呢?之前提过,使用编码绕过特殊字符是一座较为有效的思路,那么我们便考虑将分割注入与编码这两种思路相结合。补充知识:Unicode编码绕过url编码绕过Ascii码绕过hex绕过八进制base64绕过通过观察我们可以发现,url编码,ascii编码,base64编码后的字符在执行时需要相应函数或方法进行解码,无疑增加了payload的长度,反而在整体长度有限制的情况下不利于执行。那么有没有一种可被直接解析并且编码后长度适中的编码方式呢?有!hex编码8进制unicode编码!以unicode编码为例(原理与hex,8进制大同小异,有兴趣的读者可以自行测试)我们先将’=’替换掉注:使用unicode,hex,8进制等编码时需要用到eval()函数其实这里的payload并不可用,还需要经过处理,只是为了展现思路历程下一步处理一些细节:eval内的引号需要转义进一步的缩短payload请大家思考:只用一个变量z进行存储,在之后的每一步中拼接字符串是否为最优的方法?个人认为,在总长度允许的情况下,可以将不同的payload存储在不同的变量中,例如:这样便可以省去”z+”这两个字符最后进行拼接拼接字符时只是单纯的变量加减,并不需要转义等复杂操作增添新的字符,payload的长度还在可以接受的范围内。
如果读者对整个过程存在疑问,推荐自己写一个过滤掉“=”与url中“/”的环境进行测试,能帮助你更好的理解本文。贴一下最终的payload:你以为这样就完了吗?不!还没完!我们提交下该payload
为什么会报错某些变量没有被定义呢?我们的payload在本地chrome测试是完美成功的啊不应该存在语法上的错误啊这就要讲到另一个知识点了:原来JS引擎并非一行行去分析和执行程序,而是一段一段的执行(如3),而且在同一段程序的分析执行中,定义式的函数语句会被优先执行。函数定义执行完以后才会按顺序执行其他语句代码。在经过预处理后,js引擎才会从上到下依次执行。想想我们的注入顺序?
最终执行变量的语句却放在了页面上端,js引擎在执行时自然会报错。所以把之前的payload倒序注入即可。(相信我这真的是最后一次了)成功打到cookie.
关于绕过某通用信息管理系统实现XSS就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关推荐: NETWORK笔记3:IP地址分类(A类 B类 C类 D类 E类)

IP地址分类(A类 B类 C类 D类 E类)IP地址由四段组成,每个字段是一个字节,8位,最大值是255,,IP地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。二者是主从关系。IP地址的四大…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/02 21:46
下一篇 02/02 21:48