8.6 KiB
Jira & Confluence
{{#include ../../banners/hacktricks-training.md}}
Check Privileges
Jira में, privileges को किसी भी उपयोगकर्ता द्वारा जांचा जा सकता है, चाहे वह प्रमाणित हो या न हो, /rest/api/2/mypermissions
या /rest/api/3/mypermissions
के endpoints के माध्यम से। ये endpoints उपयोगकर्ता के वर्तमान privileges को प्रकट करते हैं। एक महत्वपूर्ण चिंता तब उत्पन्न होती है जब गैर-प्रमाणित उपयोगकर्ताओं के पास privileges होते हैं, जो एक सुरक्षा कमजोरी को इंगित करता है जो संभावित रूप से बाउंटी के लिए योग्य हो सकता है। इसी तरह, प्रमाणित उपयोगकर्ताओं के लिए अप्रत्याशित privileges भी एक कमजोरी को उजागर करते हैं।
1 फरवरी 2019 को एक महत्वपूर्ण अपडेट किया गया, जिसमें 'mypermissions' endpoint को एक 'permission' parameter शामिल करने की आवश्यकता थी। यह आवश्यकता सुरक्षा को बढ़ाने के लिए है, जो पूछे जा रहे privileges को निर्दिष्ट करती है: check it here
- ADD_COMMENTS
- ADMINISTER
- ADMINISTER_PROJECTS
- ASSIGNABLE_USER
- ASSIGN_ISSUES
- BROWSE_PROJECTS
- BULK_CHANGE
- CLOSE_ISSUES
- CREATE_ATTACHMENTS
- CREATE_ISSUES
- CREATE_PROJECT
- CREATE_SHARED_OBJECTS
- DELETE_ALL_ATTACHMENTS
- DELETE_ALL_COMMENTS
- DELETE_ALL_WORKLOGS
- DELETE_ISSUES
- DELETE_OWN_ATTACHMENTS
- DELETE_OWN_COMMENTS
- DELETE_OWN_WORKLOGS
- EDIT_ALL_COMMENTS
- EDIT_ALL_WORKLOGS
- EDIT_ISSUES
- EDIT_OWN_COMMENTS
- EDIT_OWN_WORKLOGS
- LINK_ISSUES
- MANAGE_GROUP_FILTER_SUBSCRIPTIONS
- MANAGE_SPRINTS_PERMISSION
- MANAGE_WATCHERS
- MODIFY_REPORTER
- MOVE_ISSUES
- RESOLVE_ISSUES
- SCHEDULE_ISSUES
- SET_ISSUE_SECURITY
- SYSTEM_ADMIN
- TRANSITION_ISSUES
- USER_PICKER
- VIEW_AGGREGATED_DATA
- VIEW_DEV_TOOLS
- VIEW_READONLY_WORKFLOW
- VIEW_VOTERS_AND_WATCHERS
- WORK_ON_ISSUES
Example: https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS
#Check non-authenticated privileges
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
स्वचालित गणना
एटलसियन प्लगइन्स
जैसा कि इस ब्लॉग में संकेत दिया गया है, प्लगइन मॉड्यूल्स ↗ के बारे में दस्तावेज़ में विभिन्न प्रकार के प्लगइन्स की जांच करना संभव है, जैसे:
- REST प्लगइन मॉड्यूल ↗: RESTful API एंडपॉइंट्स को उजागर करें
- सर्वलेट प्लगइन मॉड्यूल ↗: एक प्लगइन के हिस्से के रूप में जावा सर्वलेट्स को तैनात करें
- मैक्रो प्लगइन मॉड्यूल ↗: Confluence मैक्रोज़ को लागू करें, यानी पैरामीटरयुक्त HTML टेम्पलेट्स
यह मैक्रो प्लगइन प्रकार का एक उदाहरण है:
package com.atlassian.tutorial.macro;
import com.atlassian.confluence.content.render.xhtml.ConversionContext;
import com.atlassian.confluence.macro.Macro;
import com.atlassian.confluence.macro.MacroExecutionException;
import java.util.Map;
public class helloworld implements Macro {
public String execute(Map<String, String> map, String body, ConversionContext conversionContext) throws MacroExecutionException {
if (map.get("Name") != null) {
return ("<h1>Hello " + map.get("Name") + "!</h1>");
} else {
return "<h1>Hello World!<h1>";
}
}
public BodyType getBodyType() { return BodyType.NONE; }
public OutputType getOutputType() { return OutputType.BLOCK; }
}
यह देखना संभव है कि ये प्लगइन्स सामान्य वेब कमजोरियों जैसे XSS के प्रति संवेदनशील हो सकते हैं। उदाहरण के लिए, पिछले उदाहरण में यह संवेदनशील है क्योंकि यह उपयोगकर्ता द्वारा दिए गए डेटा को दर्शा रहा है।
एक बार जब XSS मिल जाता है, तो इस github repo में आप XSS के प्रभाव को बढ़ाने के लिए कुछ पेलोड्स पा सकते हैं।
बैकडोर प्लगइन
यह पोस्ट विभिन्न (दुष्ट) क्रियाओं का वर्णन करती है जो एक दुष्ट Jira प्लगइन कर सकता है। आप कोड उदाहरण इस repo में पा सकते हैं।
ये कुछ क्रियाएँ हैं जो एक दुष्ट प्लगइन कर सकता है:
- एडमिन से प्लगइन्स छिपाना: यह संभव है कि कुछ फ्रंट-एंड जावास्क्रिप्ट इंजेक्ट करके दुष्ट प्लगइन को छिपाया जाए।
- अटैचमेंट और पृष्ठों का एक्सफिल्ट्रेट करना: सभी डेटा तक पहुंचने और उसे एक्सफिल्ट्रेट करने की अनुमति देना।
- सत्र टोकन चुराना: एक एंडपॉइंट जोड़ें जो प्रतिक्रिया में हेडर को (कुकी के साथ) इको करेगा और कुछ जावास्क्रिप्ट जो इसे संपर्क करेगा और कुकीज़ को लीक करेगा।
- कमांड निष्पादन: निश्चित रूप से, एक प्लगइन बनाना संभव है जो कोड निष्पादित करेगा।
- रिवर्स शेल: या एक रिवर्स शेल प्राप्त करें।
- DOM प्रॉक्सीकरण: यदि कॉन्फ्लुएंस एक निजी नेटवर्क के अंदर है, तो यह संभव होगा कि कुछ उपयोगकर्ता के ब्राउज़र के माध्यम से कनेक्शन स्थापित किया जाए जो इसके लिए पहुंच रखता है और उदाहरण के लिए सर्वर कमांड निष्पादित करने के लिए संपर्क करे।
{{#include ../../banners/hacktricks-training.md}}