专栏首页网站漏洞修补网站上传漏洞扫描与检测 以及webshell解决办法
原创

网站上传漏洞扫描与检测 以及webshell解决办法

前段时间我们SINE安全收到客户的渗透测试服务委托,在这之前,客户网站受到攻击,数据被篡改,要求我们对网站进行全面的渗透测试,包括漏洞的检测与测试,逻辑漏洞.垂直水平越权漏洞,文件上传漏洞.等等服务项目,在进行安全测试之前,我们对客户的网站大体的了解了一下,整个平台网站,包括APP,安卓端,IOS端都采用的JSP+oracle数据库架构开发,前端使用VUE,服务器是linux centos系统.下面我们将渗透测试过程里,对文件上传漏洞的检测与webshell的分析进行记录,希望更多的人了解什么是渗透测试.

我们直击漏洞根源,查看代码在uplpod.php文件里,可以看到有个lang变量给了language.php,并附加条件,设置的指定文件都存在,才可以将参数值传递过去,代码截图如下:

仔细看,我们看到代码调用了save_file的调用方式,由此可以导致langup值可以伪造,追踪溯源看到该值是对应的WEB前端用户的文件上传功能,在用户文件上传这里,并没有做安全效验与安全白名单拦截机制,导致可以重命名,直接将.jsp的脚本文件上传到网站的根目录下,包括APP也存在该漏洞.

我们SINE安全技术来渗透测试复现一下该文件上传漏洞是如何利用的,首先登录会员,并打开个人资料页面,有个文件上传功能,里面只允许上传图片格式的文件,只允许上传JPG,PNG,GIF,等后缀名的文件,以普通的图片文件来上传,我们抓取POST的上传数据包,将cont1的路径地址改为/beifen/1.jsp,并提交过去,返回数据为成功上传.复制路径,浏览器里打开,发现我们上传的JSP脚本文件执行了,也再一次的证明该漏洞是足以导致网站数据被篡改的,在这之前客户的网站肯定被上传了webshell网站木马文件,随即我们对客户的网站源代码进行全面的人工安全检测与分析,对一句话木马特制eval,加密,包括文件上传的时间点,进行检查,发现在网站的JS目录下存在indax.jsp,浏览器里打开访问,是一个JSP的脚本木马,可以对网站进行篡改,下载代码,新建文件,等网站管理员的操作,同理APP端也是存在同样的漏洞.调用的文件上传功能接口是一样.具体的webshell截图如下:

到这里我们只是渗透测试的一方面,主要是检测的文件上传功能是否存在漏洞,是否可以重命名,自定义上传路径以及文件格式绕过,关于渗透测试中发现的文件上传漏洞如何修复,我们SINE安全给大家一些修复建议与办法,首先对文件的上传格式进行限制,只允许白名单里的jpg,png,gif等格式的文件上传,对自定义的路径地址进行变量覆盖,不允许更改路径地址.对上传的目录做脚本的安全限制,去除JSP的脚本执行权限.

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java集合必会14问(精选面试题整理)

    答:通过分析源码我们知道了HashMap通过resize()方法进行扩容或者初始化的操作,下面是对源码进行的一些简单分析:

    乔戈里
  • Java调用native本地方法实例:控制台下的中英文字符对齐问题

    小伙伴们在初学Java的时候一般都是采用Eclipse或其他IDE环境,中英文混合时的对齐问题想必都或多或少地困扰过大家。

    老九君
  • Java 14 可能带来什么新特性?

    JDK/Java 13 在一个月前已经发布,该版本带来了 5 大新特性,笔者观察到其中的 Text Blocks(文本块)特性似乎被讨论最多。

    Java技术栈
  • springboot搭建jsp项目

    在这里引用《孟子》:天降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行指乱其所为,所以动心忍性,曾益其所不能。

    高楼Zee
  • 链表的实现

    链表分为单向链表、双向链表和循环链表。链表这种数据结构就像是火车车厢一样,每个车厢可以插入到任意的的位置。与数组不同的是,数组的数据存储是连续的存储单元,就好比...

    多云转晴
  • Lombok学习

    Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques等常规方法,同时可以自动化...

    神秘的寇先森
  • 一文看懂Java序列化之serialVersionUID

    serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进...

    一个优秀的废人
  • POJ 2752 Seek the Name, Seek the Fame(KMP求公共前后缀)

    题意是给了一个字符串,求出前i位的前缀刚好是后i位的后缀,输出这些位置,比如abcab当i为2的时候前缀为ab后缀也为ab

    Ch_Zaqdt
  • React VS Vue:2020年应该选哪个?[每日前端夜话0xD3]

    Javascript 框架以及 HTML 和 CSS 已成为每个现代软件项目前端开发的重要组成部分。2020 年将会是为你的 Web 项目选择正确的 javas...

    疯狂的技术宅
  • Java同步和异步,阻塞和非阻塞

    同步是指: 发送方发出数据后, 等待接收方发回响应后才发下一个数据包的通讯方式. 就是在发出一个调用时, 在没有得到结果之前, 该调用就不返回, 但是一旦调用返...

    烟草的香味

扫码关注云+社区

领取腾讯云代金券