mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
114 lines
5.6 KiB
Markdown
114 lines
5.6 KiB
Markdown
# Jira & Confluence
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Yetki Kontrolü
|
||
|
||
Jira'da, **yetkiler herhangi bir kullanıcı tarafından**, kimlik doğrulaması yapılmış veya yapılmamış olsun, `/rest/api/2/mypermissions` veya `/rest/api/3/mypermissions` uç noktaları aracılığıyla kontrol edilebilir. Bu uç noktalar kullanıcının mevcut yetkilerini ortaya koyar. **Kimlik doğrulaması yapılmamış kullanıcıların yetkilere sahip olması** önemli bir endişe kaynağıdır ve bu durum **güvenlik açığı** olarak değerlendirilebilir, bu da potansiyel olarak bir **ödül** için uygun olabilir. Benzer şekilde, **kimlik doğrulaması yapılmış kullanıcılar için beklenmedik yetkiler** de bir **açığı** vurgular.
|
||
|
||
**1 Şubat 2019** tarihinde önemli bir **güncelleme** yapıldı ve 'mypermissions' uç noktasının bir **'permission' parametresi** içermesi gerektiği belirtildi. Bu gereklilik, sorgulanan yetkilerin belirtilmesiyle **güvenliği artırmayı** amaçlamaktadır: [check it here](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
|
||
|
||
- 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
|
||
|
||
Örnek: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS`
|
||
```bash
|
||
#Check non-authenticated privileges
|
||
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
|
||
```
|
||
## Otomatik numaralandırma
|
||
|
||
- [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
||
- [https://github.com/bcoles/jira_scan](https://github.com/bcoles/jira_scan)
|
||
|
||
## Atlasian Eklentileri
|
||
|
||
Bu [**blogda**](https://cyllective.com/blog/posts/atlassian-audit-plugins) belirtildiği gibi, [Eklenti modülleri ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/plugin-modules/) hakkında belgelerde, aşağıdaki gibi farklı eklenti türlerini kontrol etmek mümkündür:
|
||
|
||
- [REST Eklenti Modülü ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): RESTful API uç noktalarını açığa çıkarır
|
||
- [Servlet Eklenti Modülü ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Bir eklenti parçası olarak Java servletlerini dağıtır
|
||
- [Makro Eklenti Modülü ↗](https://developer.atlassian.com/server/confluence/macro-module/): Confluence Makrolarını uygular, yani parametreli HTML şablonları
|
||
|
||
Bu, makro eklenti türüne bir örnektir:
|
||
```java
|
||
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; }
|
||
}
|
||
```
|
||
Bu eklentilerin, XSS gibi yaygın web güvenlik açıklarına karşı savunmasız olabileceği gözlemlenebilir. Örneğin, önceki örnek, kullanıcının verdiği verileri yansıttığı için savunmasızdır.
|
||
|
||
Bir XSS bulunduğunda, [**bu github repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) XSS'nin etkisini artırmak için bazı payload'lar bulabilirsiniz.
|
||
|
||
## Arka Kapı Eklentisi
|
||
|
||
[**Bu yazı**](https://cyllective.com/blog/posts/atlassian-malicious-plugin), kötü niyetli bir Jira eklentisinin gerçekleştirebileceği farklı (kötü niyetli) eylemleri tanımlamaktadır. [**Bu repoda kod örneği bulabilirsiniz**](https://github.com/cyllective/malfluence).
|
||
|
||
Kötü niyetli bir eklentinin gerçekleştirebileceği bazı eylemler şunlardır:
|
||
|
||
- **Yönetimcilerden Eklentileri Gizleme**: Kötü niyetli eklentiyi, bazı ön uç javascript'leri enjekte ederek gizlemek mümkündür.
|
||
- **Ekleri ve Sayfaları Sızdırma**: Tüm verilere erişim sağlamak ve sızdırmak.
|
||
- **Oturum Token'larını Çalma**: Yanıt içinde başlıkları (çerezle birlikte) yansıtan bir uç nokta eklemek ve bunu iletişim kuracak ve çerezleri sızdıracak bazı javascript'ler eklemek.
|
||
- **Komut Çalıştırma**: Elbette, kod çalıştıracak bir eklenti oluşturmak mümkündür.
|
||
- **Ters Shell**: Ya da ters bir shell almak.
|
||
- **DOM Proxying**: Eğer confluence özel bir ağ içindeyse, buna erişimi olan bir kullanıcının tarayıcısı aracılığıyla bir bağlantı kurmak ve örneğin sunucu komutunu çalıştırmak mümkündür.
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|