Translated ['src/pentesting-cloud/aws-security/aws-services/aws-efs-enum

This commit is contained in:
Translator
2025-02-02 18:22:45 +00:00
parent d19083948a
commit d454ec01b8

View File

@@ -12,7 +12,7 @@ Amazon Elastic File System (EFS) को AWS द्वारा **पूर्ण
### Network Access
EFS एक VPC में बनाया जाता है और **डिफ़ॉल्ट रूप से सभी VPC उपनेटवर्क में सुलभ होगा**। हालाँकि, EFS का एक सुरक्षा समूह होगा। EFS को माउंट करने के लिए **EC2** (या किसी अन्य AWS सेवा) को **एक इनबाउंड NFS** (2049 पोर्ट) **नियम को EFS सुरक्षा समूह में अनुमति देना आवश्यक है**
एक EFS एक VPC में बनाया जाता है और **डिफ़ॉल्ट रूप से सभी VPC उपनेटवर्क में सुलभ होगा**। हालाँकि, EFS का एक सुरक्षा समूह होगा। EFS को माउंट करने के लिए **EC2** (या किसी अन्य AWS सेवा) को **EFS सुरक्षा समूह में एक इनबाउंड NFS** (2049 पोर्ट) **नियम क अनुमति देना आवश्यक है**
इसके बिना, आप **NFS सेवा से संपर्क नहीं कर पाएंगे**
@@ -39,7 +39,7 @@ aws efs describe-replication-configurations
sudo nmap -T4 -Pn -p 2049 --open 10.10.10.0/20 # or /16 to be sure
```
> [!CAUTION]
> यह हो सकता है कि EFS माउंट पॉइंट उसी VPC के अंदर हो लेकिन एक अलग सबनेट में। यदि आप सुनिश्चित करना चाहते हैं कि आप सभी **EFS पॉइंट्स खोजें, तो `/16` नेटमास्क को स्कैन करना बेहतर होगा**।
> यह हो सकता है कि EFS माउंट पॉइंट उसी VPC के अंदर हो लेकिन एक अलग सबनेट में। यदि आप सुनिश्चित होना चाहते हैं कि आप सभी **EFS पॉइंट्स खोजें, तो `/16` नेटमास्क को स्कैन करना बेहतर होगा**।
### Mount EFS
```bash
@@ -57,8 +57,8 @@ sudo mount -t efs <file-system-id/EFS DNS name>:/ /efs/
```
### IAM Access
डिफ़ॉल्ट रूप से, **EFS** तक **नेटवर्क एक्सेस** रखने वाला कोई भी व्यक्ति इसे माउंट, **पढ़ और लिख** सकेगा, यहां तक कि रूट उपयोगकर्ता के रूप में भी। हालाँकि, फ़ाइल प्रणाली नीतियाँ लागू की जा सकती हैं **जो केवल विशिष्ट अनुमतियों वाले प्रिंसिपल को** इसे एक्सेस करने की अनुमति देती हैं।\
उदाहरण के लिए, यह फ़ाइल प्रणाली नीति **यहां तक कि माउंट करने की अनुमति नहीं देगी** यदि आपके पास **IAM अनुमति** नहीं है:
**डिफ़ॉल्ट** के रूप में, EFS तक **नेटवर्क एक्सेस** रखने वाला कोई भी व्यक्ति इसे माउंट, **पढ़ और लिख** सकेगा, यहां तक कि रूट उपयोगकर्ता के रूप में भी। हालाँकि, फ़ाइल प्रणाली नीतियाँ लागू की जा सकती हैं **जो केवल विशिष्ट अनुमतियों वाले प्रिंसिपल को** इसे एक्सेस करने की अनुमति देती हैं।\
उदाहरण के लिए, यह फ़ाइल प्रणाली नीति **यहां तक कि माउंट करने की अनुमति नहीं देगी** यदि आपके पास **IAM अनुमति नहीं है**:
```json
{
"Version": "2012-10-17",
@@ -85,7 +85,7 @@ sudo mount -t efs <file-system-id/EFS DNS name>:/ /efs/
<figure><img src="../../../images/image (278).png" alt=""><figcaption></figcaption></figure>
ध्यान दें कि IAM द्वारा सरक्षित फ़ाइल सिस्टम को माउंट करने के लिए आपको माउंट कमांड में "efs" प्रकार का उपयोग करना होगा:
ध्यान दें कि IAM द्वारा सरक्षित फ़ाइल सिस्टम को माउंट करने के लिए आपको माउंट कमांड में "efs" प्रकार का उपयोग करना होगा:
```bash
sudo mkdir /efs
sudo mount -t efs -o tls,iam <file-system-id/EFS DNS name>:/ /efs/
@@ -94,38 +94,136 @@ sudo mount -t efs -o tls,iam <file-system-id/EFS DNS name>:/ /efs/
```
### Access Points
**Access points** एक **application**-विशिष्ट प्रवेश बिंदु हैं **एक EFS फ़ाइल प्रणाली में** जो साझा डेटा सेट्स तक एप्लिकेशन पहुंच प्रबंधित करना आसान बनाते हैं।
**Access points** वे **application**-विशिष्ट प्रवेश बिंदु हैं **एक EFS फ़ाइल प्रणाली** में जो साझा डेटा सेट्स तक एप्लिकेशन पहुंच प्रबंधित करना आसान बनाते हैं।
जब आप एक access point बनाते हैं, तो आप फ़ाइलों और निर्देशिकाओं के लिए **स्वामी और POSIX अनुमतियाँ** निर्दिष्ट कर सकते हैं जो access point के माध्यम से बनाई जाती हैं। आप access point के लिए **एक कस्टम रूट निर्देशिका** भी परिभाषित कर सकते हैं, या तो एक मौजूदा निर्देशिका निर्दिष्ट करके या इच्छित अनुमतियों के साथ एक न बनाकर। यह आपको **आपकी EFS फ़ाइल प्रणाली तक पहुंच को प्रति-एप्लिकेशन या प्रति-उपयोगकर्ता आधार पर नियंत्रित करने** की अनुमति देता है, जिससे आपके साझा फ़ाइल डेटा को प्रबंधित और सुरक्षित करना आसान हो जाता है।
जब आप एक access point बनाते हैं, तो आप फ़ाइलों और निर्देशिकाओं के लिए **स्वामी और POSIX अनुमतियाँ** निर्दिष्ट कर सकते हैं जो access point के माध्यम से बनाई जाती हैं। आप access point के लिए **एक कस्टम रूट निर्देशिका** भी परिभाषित कर सकते हैं, या तो एक मौजूदा निर्देशिका निर्दिष्ट करके या इच्छित अनुमतियों के साथ एक नया बनाकर। यह आपको **आपकी EFS फ़ाइल प्रणाली तक पहुंच को प्रति-एप्लिकेशन या प्रति-उपयोगकर्ता आधार पर नियंत्रित करने** की अनुमति देता है, जिससे आपके साझा फ़ाइल डेटा को प्रबंधित और सुरक्षित करना आसान हो जाता है।
**आप एक access point से फ़ाइल प्रणाली को इस तरह माउंट कर सकते हैं:**
**आप access point से फ़ाइल प्रणाली को कुछ इस तरह माउंट कर सकते हैं:**
```bash
# Use IAM if you need to use iam permissions
sudo mount -t efs -o tls,[iam],accesspoint=<access-point-id> \
<file-system-id/EFS DNS> /efs/
```
> [!WARNING]
> ध्यान दें कि एक एक्सेस पॉइंट को माउंट करने की कोशिश करपर भी आपको **नेटवर्क के माध्यम से NFS सेवा से संपर्क करने में सक्षम होना चाहिए**, और यदि EFS में एक फ़ाइल प्रणाली **नीति** है, तो आपको इसे माउंट करने के लिए **पर्याप्त IAM अनुमतियाँ** चाहिए।
> ध्यान दें कि एक एक्सेस पॉइंट को माउंट करने की कोशिश करसमय, आपको **नेटवर्क के माध्यम से NFS सेवा से संपर्क करने में सक्षम होना चाहिए**, और यदि EFS में एक फ़ाइल प्रणाली **नीति** है, तो आपको इसे माउंट करने के लिए **पर्याप्त IAM अनुमतियाँ** चाहिए।
एक्सेस पॉइंट का उपयोग निम्नलिखित उद्देश्यों के लिए किया जा सकता है:
- **अनुमतियों के प्रबंधन को सरल बनाना**: प्रत्येक एक्सेस पॉइंट के लिए एक POSIX उपयोगकर्ता और समूह को परिभाषित करके, आप बिना अंतर्निहित फ़ाइल प्रणाली की अनुमतियों को संशोधित किए विभिन्न अनुप्रयोगों या उपयोगकर्ताओं के लिए पहुँच अनुमतियों को आसानी से प्रबंधित कर सकते हैं।
- **एक रूट निर्देशिका को लागू करना**: एक्सेस पॉइंट EFS फ़ाइल प्रणाली के भीतर एक विशिष्ट निर्देशिका तक पहुँच को प्रतिबंधित कर सकते हैं, यह सुनिश्चित करते हुए कि प्रत्येक अनुप्रयोग या उपयोगकर्ता अपने निर्दिष्ट फ़ोल्डर के भीतर कार्य करता है। यह आकस्मिक डेटा एक्सपोजर या संशोधन को रोकने में मदद करता है।
- **फ़ाइल प्रणाली तक पहुँच को आसान बनाना**: एक्सेस पॉइंट को AWS Lambda फ़ंक्शन या AWS Fargate कार्य के साथ जोड़ा जा सकता है, सर्वरलेस और कंटेनरयुक्त अनुप्रयोगों के लिए फ़ाइल प्रणाली तक पहुँच को सरल बनातुए
- **एक रूट निर्देशिका को लागू करना**: एक्सेस पॉइंट EFS फ़ाइल प्रणाली के भीतर एक विशिष्ट निर्देशिका तक पहुँच को प्रतिबंधित कर सकते हैं, यह सुनिश्चित करते हुए कि प्रत्येक अनुप्रयोग या उपयोगकर्ता अपने निर्दिष्ट फ़ोल्डर के भीतर कार्य करता है। यह आकस्मिक डेटा एक्सपोजर या संशोधन को रोकने में मदद करता है।
- **फ़ाइल प्रणाली तक पहुँच को आसान बनाना**: एक्सेस पॉइंट को AWS Lambda फ़ंक्शन या AWS Fargate कार्य के साथ जोड़ा जा सकता है, जो सर्वरलेस और कंटेनरयुक्त अनुप्रयोगों के लिए फ़ाइल प्रणाली तक पहुँच को सरल बनात
## Privesc
## EFS IP पता
EFS IP पते से संबंधित जानकारी का उपयोग करते हुए, निम्नलिखित Python स्क्रिप्ट EFS प्रणाली के बारे में विवरण प्राप्त करने में सहायता कर सकती है। यह जानकारी माउंट सिस्टम कमांड बनाने या सबनेट ID के ज्ञान के साथ आगे की गणना करने के लिए उपयोगी है। इसके अतिरिक्त, स्क्रिप्ट एक्सेस पॉइंट दिखाती है, जो तब मूल्यवान हो सकती है जब रूट निर्देशिका या प्राथमिक माउंट पथ प्रतिबंधित हो। ऐसे मामलों में, एक्सेस पॉइंट संवेदनशील जानकारी तक पहुँचने के लिए वैकल्पिक पथ प्रदान करते हैं।
```bash
Usage: python efs_ip_enum.py <IP_ADDRESS>
```
```python
import boto3
import sys
def get_efs_info(ip_address):
try:
session = boto3.Session(profile_name="profile")
ec2_client = session.client('ec2')
efs_client = session.client('efs')
print(f"[*] Enumerating EFS information for IP address: {ip_address}\n")
try:
response = ec2_client.describe_network_interfaces(Filters=[
{'Name': 'addresses.private-ip-address', 'Values': [ip_address]}
])
if not response['NetworkInterfaces']:
print(f"[!] No network interface found for IP address {ip_address}")
return
network_interface = response['NetworkInterfaces'][0]
network_interface_id = network_interface['NetworkInterfaceId']
print(f"[+] Found network interface: {network_interface_id}\n")
except Exception as e:
print(f"[!] Error retrieving network interface: {str(e)}")
return
try:
efs_response = efs_client.describe_file_systems()
file_systems = efs_response['FileSystems']
except Exception as e:
print(f"[!] Error retrieving EFS file systems: {str(e)}")
return
for fs in file_systems:
fs_id = fs['FileSystemId']
try:
mount_targets = efs_client.describe_mount_targets(FileSystemId=fs_id)['MountTargets']
for mt in mount_targets:
if mt['NetworkInterfaceId'] == network_interface_id:
try:
policy = efs_client.describe_file_system_policy(FileSystemId=fs_id).get('Policy', 'No policy attached')
except Exception as e:
policy = f"Error retrieving policy: {str(e)}"
print("[+] Found matching EFS File System:\n")
print(f" FileSystemId: {fs_id}")
print(f" MountTargetId: {mt['MountTargetId']}")
print(f" DNSName: {fs_id}.efs.{session.region_name}.amazonaws.com")
print(f" LifeCycleState: {mt['LifeCycleState']}")
print(f" SubnetId: {mt['SubnetId']}")
print(f" SecurityGroups: {', '.join(mt.get('SecurityGroups', [])) if mt.get('SecurityGroups') else 'None'}")
print(f" Policy: {policy}\n")
try:
access_points = efs_client.describe_access_points(FileSystemId=fs_id)['AccessPoints']
if access_points:
print(f"[+] Access Points for FileSystemId {fs_id}:")
for ap in access_points:
print(f" AccessPointId: {ap['AccessPointId']}")
print(f" Name: {ap.get('Name', 'N/A')}")
print(f" OwnerId: {ap['OwnerId']}")
posix_user = ap.get('PosixUser', {})
print(f" PosixUser: UID={posix_user.get('Uid', 'N/A')}, GID={posix_user.get('Gid', 'N/A')}")
root_dir = ap.get('RootDirectory', {})
print(f" RootDirectory: Path={root_dir.get('Path', 'N/A')}")
creation_info = root_dir.get('CreationInfo', {})
print(f" CreationInfo: OwnerUID={creation_info.get('OwnerUid', 'N/A')}, OwnerGID={creation_info.get('OwnerGid', 'N/A')}, Permissions={creation_info.get('Permissions', 'N/A')}\n")
else:
print(f"[!] No Access Points found for FileSystemId {fs_id}\n")
except Exception as e:
print(f"[!] Error retrieving access points for FileSystemId {fs_id}: {str(e)}\n")
except Exception as e:
print(f"[!] Error processing file system {fs_id}: {str(e)}\n")
except Exception as e:
print(f"[!] General Error: {str(e)}\n")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python efs_enum.py <IP_ADDRESS>")
sys.exit(1)
ip_address = sys.argv[1]
get_efs_info(ip_address)
```
## प्रिवेस्क
{{#ref}}
../aws-privilege-escalation/aws-efs-privesc.md
{{#endref}}
## Post Exploitation
## पोस्ट एक्सप्लोइटेशन
{{#ref}}
../aws-post-exploitation/aws-efs-post-exploitation.md
{{#endref}}
## Persistence
## पर्सिस्टेंस
{{#ref}}
../aws-persistence/aws-efs-persistence.md