92

两次前端绕过渗透小结

 6 years ago
source link: http://www.freebuf.com/articles/web/158508.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

两次前端绕过渗透小结 - FreeBuf网络安全行业门户user形状结合怀旧限时体验热度Fill 3编组备份 4APP库新版Fill 6网页灯泡形状结合形状结合小蜜蜂

主站
漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全
头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课
行业服务
政 府
CNCERT CNNVD
会员体系(甲方) 会员体系(厂商) 产品名录 企业空间
知识大陆
试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
两次前端绕过渗透小结
喜欢文章?可以收藏噢~
可以收录到专辑噢~
两次前端绕过渗透小结
alerttest 2018-01-04 08:30:19 699673 13

*本文作者:0d9y;本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

一直想发一些渗透过程的东西和大家分享,可是渗透成功呢要过很久才能发布,然后就忘记了,最近遇到了两次和前端JS对抗的渗透过程。虽然最终没有成功,不过蛮有意思的,和大家分享一下。

先上URL地址http://www.XXXXXX.com/fastreg.html?to=w2i&css=www.wanmei.com/public/style/fastreg/skin1.css&wmrid=RP42970167

看到url中有一个css链接加上css这个关键属性字眼,于是等待网页加载结束后,直接右键查看源代码。

两次前端绕过渗透小结

一上来就看到了一段JS代码,getArgs 再看到window.location.search就觉得这段代码需要看一看,很简单的一段代码,就是第一个函数事先获取问号以后的所有字符串,然后分割开存到args字典后返回,第二个函数把所有的特殊符号用html编码了,可以看到接下来还用了一个isinstyle的函数,没有在源代码中找到,说明他引用了外部的文件就在第五行,跟进去后看到是这样的

两次前端绕过渗透小结

js代码很简洁简单就不多加介绍,就是看URLcss的参数链接里是不是没有特殊符号且域属于173和wanmei,有的话就不应用url中的css,用其自带的一个style。至此,感觉是过滤的非常严格了,如果没有\反斜杠过滤还可以构造xxx.xxx\.173.com/1.css,可是它过滤了除/意外的任何特殊字符,于是我便想,如果在173或者wmei上传一个含有恶意代码css代码的话,那是不是就可以无视这套规则了呢?可是上传一个css文件肯定是很困难的,那如果后缀是jpg的文件呢?浏览器会不会解析呢?于是先本地测试了一下,是成功解析了的。背景已经被换成了我们想要的颜色,css文件是jpg结尾的

两次前端绕过渗透小结

然后去找173或者wanmei的上传点,发现对jpg的头部二进制标志有着很严格的限制,只改后缀是不行的,这时候又有一个新的问题,如果说用了二进制标志,那么css样式文件就会出错,一开始是想在头尾加上/**/注释掉再在尾巴加上style样式,可是现在头部写死了必须要用jpg的标示开头,这就陷入了一个死结。找了几个图片上传点,发现都是严格测试了jpg的头部,突然又想到另外一个版本,如上图,在头部标示后加上{}表示这是一个正常的css代码,前面的表示是其选择器的属性,然后再加上/*的注释符号尾部加上*/来结束并且写入我们要构造的恶意style代码,在本地构造参数测试成功后上传,却发现style文件并没有执行。浏览器解析后发现是0个规则,打开控制台发现错误报告,说返回的类型不是css,所以本地可以而上传到了网站就失效的原因。因为要控制返回头的类型不是很容易,所以这条路子基本上难以往下,不过构造payload和一些大胆的猜测其实还是有必要的,虽然这次疏忽了返回头这个点,至少下次就可以记住不能疏忽这个地方(tip:ie8是可以的。。。)

两次前端绕过渗透小结

这是一个注册页面,随便输入一个的昵称,可以看到如下图所示的界面,burpsuit没有任何的ajax请求,直接弹出了不正确

两次前端绕过渗透小结

所以这个验证肯定是前端方面的验证,先构造一个符合标准的数据进行提交看看他的POST包长什么样

两次前端绕过渗透小结

可以看到所有的数据都进行了加密,一开始我以为是都进行了md5加密,然后去md5加密网站把密码加密对比了一下,发现并不是md5,而是一种前端的验证。感觉游戏,因为前端验证严格的后段可能就忽略了,所有用浏览器审计一下

先全局查找一下按钮的id看看绑定的是什么事件,可以看到是validateregisterfrom事件,跟进去查找一下就出来了这个函数

发现他在前端设置flag,然后最后提交的时候眼flag是不是为true,是的话就利用加密函数加密所有信息,然后提交表单。

两次前端绕过渗透小结
两次前端绕过渗透小结
两次前端绕过渗透小结

这里有两种办法可以绕过去,一种是浏览器打断点,把flase改成true就可以绕过这个验证,或者先输入正确的最后在上传的那个ajax语句前打断点修改表单数据,如下图

两次前端绕过渗透小结

还可以把加密的函数拉出来写在自己本地的html里面或者本地html应用js文件通过调用encrypt函数,获得某个字符串加密后的数据,直接修改post数据包。

两次前端绕过渗透小结

之后就是去找输出点了,这种昵称可以写数据的危害比较大,因为输出点比较多 一旦有一个地方没过滤好就GG不过我还没有找到。

很多时候基础才是最重要的,基础决定你少走的不必要的弯路的让你找漏洞更加猥琐,想必那些大佬们基础一定磅礴到我们无法相信的地步了。

如果每天都坚持,心中有信仰,有目标,并且沉淀下来,不断的打牢固基础,最后一定可以成为你心中的那个人,那个独当一面的人。

*本文作者:0d9y;本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

本文作者:alerttest, 转载请注明来自FreeBuf.COM

# 渗透 # 前端绕过

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK