老树开花一个js函数引发的命案

本贴最后更新于 3196 天前,其中的信息可能已经时移世易

很多网站系统把一些功能放在客服端执行(javascript),而服务端没有相应的验证,从而被非法利用。本文就是一个 js 函数使用不当,导致网站以及整个服务器沦陷的案例。

前端漏洞挖掘

最新安全测试一个站旁注扫出一个 www.xxx.com/Utility/UploadFile/FileList.asp

图一

这个编辑器功能很强大,看能不能找到点其他可以利用的地方,习惯性的查看源码。看到一段 Javascript,目测有猫腻。

  1. ="menumouseover(this)"onMouseOut="menumouseout(this)">
  2. ="selFolder"type="checkbox"id="selFolder"
  3. value="D:\website9\www.xxx.com\UpFile\1"">
  4. ="javascript:transferFolder('/UpFile/1');">
  5. ="dir.gif"width="17"height="14"border="0"
  6. align="absmiddle">1

这个是点击图一中的文件夹的 js 源码,爆出绝对路径,可能有用,然后又看到一个强大的 j 函数 transferFolder(),经过测试这个函数是点击击编辑器中的文件夹 js 是向服务端发送需要浏览文件夹,然后 asp 服务器返回传回文件夹的文件列表,以浏览文件。

  1. //改变当前文件夹
  2. functiontransferFolder(f)
  3. {
  4. document.formList.fder.value=f
  5. document.formList.submit();
  6. }

看 transferFolder 函数源码,每个载入浏览器的 HTML 文档都会成为 Document 对象,使我们可以从脚本中对 HTML 页面中的所有元素进行访问。把传入的文件夹赋值给 Document.formList 用来操作 formList 表单,formList 和 fder 为何物?

  1. ;overflow:auto;"name="formList"method="post"action="">
  2. ="rootFder"type="hidden"id="rootFder"value="/UpFile">
  3. ="fder"type="hidden"id="fder"value="/UpFile">

还是目测 fromList 是浏览文件的表单 fder 则是需要浏览的文件夹,由 transferFolder 函数赋值,测试下这个函数是否可以传入任意浏览服务端文件夹,由于需要经常改代码,换了个 opera 浏览器,原来的 transferFolder 参数如下。

  1. transferFolder('/UpFile/1');

传入 transferFolder(‘/Utility/UploadFile’);(这个目录绝对存在),猛烈的点击…..悲剧了!!什么都没有,欲罢而不能,继续目测之.rootFder 是根目录,而 fder 是当前目录,这里需要人工修改,遂把/UpFile 改为/Utility

改写

再次猛烈点击,奇迹般的出现了

如图四 ¥#*&¥#@!*无比鸡动!!!,这个函数果然有鬼,接下来就是扩大战果。

JS 函数利用

整理一下思路先,如图五所示,编辑器可以重命名,通过 transferFolder 函数可以遍历整个网站目录文件,如果有权限还可以下载服务端的文件(有权限重命名),搞清此套程序的目录结构,如果是数据库 access 直接下载数据文件,进后台再说,是 sqlserver 看 1433 能不能利用,干!!!!

为了搞清此套系统的目录结构,不久拿下一个和这个系统的其他网站的 webshell,如图七。

在 System\Config.asp 找到其配置

看到图七,我很欣慰,回到安全监测的那个站,通过 transferFolder()这淫荡的函数,找到 Config.asp

如图八果断改为 txt 直接访问…………………..

总结

这个程序有多处致命漏洞,包括 fck 编辑器和以前的老漏洞,还有本文的 js 函数服务端缺乏验证导致任意文件可下载,查看(有的无权限),网上使用的众多,我们程序猿除了需要注 sql,编辑器等服务端的代码安全,也需要关注像 javascript 这样的前端语言,因为用户随意查看和修改前端的源码,这个更加危险!!!

笔者能力有限,文中难免有纰漏,恐贻笑于大方之家,万望海涵…

  • 黑客
    32 引用 • 316 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
someone
嘿!我是社区系统匿名内容占位账号,大家使用匿名发帖和回帖时将自动使用我作为作者进行填充占位,细节请浏览社区隐私保护系统 https://ld246.com/article/1469346159566

推荐标签 标签

  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 531 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 4 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 8 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    693 引用 • 537 回帖 • 1 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    170 引用 • 1150 回帖 • 1 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    89 引用 • 150 回帖
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 636 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    170 引用 • 1529 回帖
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 812 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖
  • AWS
    11 引用 • 28 回帖 • 6 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 57 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 740 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 6 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 17 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    345 引用 • 748 回帖
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    13 引用 • 57 回帖 • 8 关注
  • Follow
    4 引用 • 12 回帖 • 11 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 248 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    557 引用 • 675 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    369 引用 • 1846 回帖 • 3 关注
  • 996
    13 引用 • 200 回帖 • 8 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 658 关注
  • 安全

    安全永远都不是一个小问题。

    203 引用 • 818 回帖 • 1 关注