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

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

很多网站系统把一些功能放在客服端执行(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 这样的前端语言,因为用户随意查看和修改前端的源码,这个更加危险!!!

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

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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 453 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 596 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    27 引用 • 66 回帖 • 1 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 8 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 638 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    83 引用 • 894 回帖
  • wolai

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

    1 引用 • 11 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1736 回帖 • 7 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    124 引用 • 3607 回帖 • 1 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 10 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    60 引用 • 287 回帖
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    15 引用 • 66 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 96 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    3 引用 • 72 回帖
  • Rust

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

    57 引用 • 22 回帖 • 2 关注
  • 笔记

    好记性不如烂笔头。

    303 引用 • 777 回帖
  • 电影

    这是一个不能说的秘密。

    120 引用 • 597 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    21 引用 • 58 回帖
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 30 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 12 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 680 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖 • 2 关注
  • OnlyOffice
    4 引用 • 14 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 1 关注