mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
79 lines
8.7 KiB
Markdown
79 lines
8.7 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
iOS उपकरणों पर अनुप्रयोगों के भीतर और उनके बीच डेटा साझा करने की प्रक्रिया [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard) तंत्र द्वारा की जाती है, जिसे दो मुख्य श्रेणियों में विभाजित किया गया है:
|
|
|
|
- **सिस्टमव्यापी सामान्य पेस्टबोर्ड**: इसका उपयोग **किसी भी अनुप्रयोग** के साथ डेटा साझा करने के लिए किया जाता है और इसे डिवाइस पुनरारंभ और ऐप अनइंस्टॉलेशन के दौरान डेटा को बनाए रखने के लिए डिज़ाइन किया गया है, यह सुविधा iOS 10 से उपलब्ध है।
|
|
- **कस्टम / नामित पेस्टबोर्ड**: ये विशेष रूप से **एक ऐप के भीतर या किसी अन्य ऐप के साथ** डेटा साझा करने के लिए होते हैं जो समान टीम आईडी साझा करते हैं, और इन्हें उन अनुप्रयोग प्रक्रियाओं के जीवन से परे बनाए रखने के लिए डिज़ाइन नहीं किया गया है, जो इन्हें बनाती हैं, iOS 10 में पेश किए गए परिवर्तनों के अनुसार।
|
|
|
|
**सुरक्षा विचार** पेस्टबोर्ड का उपयोग करते समय महत्वपूर्ण भूमिका निभाते हैं। उदाहरण के लिए:
|
|
|
|
- उपयोगकर्ताओं के लिए **पेस्टबोर्ड** तक पहुँचने के लिए ऐप अनुमतियों को प्रबंधित करने का कोई तंत्र नहीं है।
|
|
- पेस्टबोर्ड की अनधिकृत पृष्ठभूमि निगरानी के जोखिम को कम करने के लिए, पहुँच को तब तक सीमित किया गया है जब तक अनुप्रयोग अग्रभूमि में है (iOS 9 से)।
|
|
- गोपनीयता चिंताओं के कारण साझा कंटेनरों के पक्ष में स्थायी नामित पेस्टबोर्ड के उपयोग की सिफारिश नहीं की जाती है।
|
|
- iOS 10 के साथ पेश की गई **यूनिवर्सल क्लिपबोर्ड** सुविधा, जो सामान्य पेस्टबोर्ड के माध्यम से उपकरणों के बीच सामग्री साझा करने की अनुमति देती है, डेटा समाप्ति सेट करने और स्वचालित सामग्री स्थानांतरण को अक्षम करने के लिए डेवलपर्स द्वारा प्रबंधित की जा सकती है।
|
|
|
|
यह सुनिश्चित करना कि **संवेदनशील जानकारी अनजाने में** वैश्विक पेस्टबोर्ड पर संग्रहीत न हो, महत्वपूर्ण है। इसके अतिरिक्त, अनुप्रयोगों को इस तरह से डिज़ाइन किया जाना चाहिए कि वैश्विक पेस्टबोर्ड डेटा का दुरुपयोग अनपेक्षित क्रियाओं के लिए न हो, और डेवलपर्स को संवेदनशील जानकारी को क्लिपबोर्ड पर कॉपी करने से रोकने के लिए उपाय लागू करने के लिए प्रोत्साहित किया जाता है।
|
|
|
|
### स्थैतिक विश्लेषण
|
|
|
|
स्थैतिक विश्लेषण के लिए, स्रोत कोड या बाइनरी में खोजें:
|
|
|
|
- `generalPasteboard` का उपयोग **सिस्टमव्यापी सामान्य पेस्टबोर्ड** की पहचान करने के लिए।
|
|
- `pasteboardWithName:create:` और `pasteboardWithUniqueName` का उपयोग **कस्टम पेस्टबोर्ड** बनाने के लिए। सत्यापित करें कि क्या स्थिरता सक्षम है, हालांकि यह अप्रचलित है।
|
|
|
|
### गतिशील विश्लेषण
|
|
|
|
गतिशील विश्लेषण में विशिष्ट विधियों को हुक करना या ट्रेस करना शामिल है:
|
|
|
|
- सिस्टम-व्यापी उपयोग के लिए `generalPasteboard` की निगरानी करें।
|
|
- कस्टम कार्यान्वयन के लिए `pasteboardWithName:create:` और `pasteboardWithUniqueName` को ट्रेस करें।
|
|
- स्थिरता सेटिंग्स की जांच के लिए अप्रचलित `setPersistent:` विधि कॉल पर ध्यान दें।
|
|
|
|
निगरानी करने के लिए प्रमुख विवरण में शामिल हैं:
|
|
|
|
- **पेस्टबोर्ड नाम** और **सामग्री** (उदाहरण के लिए, स्ट्रिंग, यूआरएल, छवियों की जांच करना)।
|
|
- **आइटम की संख्या** और **डेटा प्रकार** जो मौजूद हैं, मानक और कस्टम डेटा प्रकार जांच का लाभ उठाते हुए।
|
|
- `setItems:options:` विधि की जांच करके **समाप्ति और स्थानीय-केवल विकल्प**।
|
|
|
|
निगरानी उपकरण के उपयोग का एक उदाहरण है **objection का पेस्टबोर्ड मॉनिटर**, जो हर 5 सेकंड में generalPasteboard के लिए परिवर्तनों की जांच करता है और नए डेटा को आउटपुट करता है।
|
|
|
|
यहां एक सरल JavaScript स्क्रिप्ट का उदाहरण है, जो objection के दृष्टिकोण से प्रेरित है, जो हर 5 सेकंड में पेस्टबोर्ड से परिवर्तनों को पढ़ता और लॉग करता है:
|
|
```javascript
|
|
const UIPasteboard = ObjC.classes.UIPasteboard
|
|
const Pasteboard = UIPasteboard.generalPasteboard()
|
|
var items = ""
|
|
var count = Pasteboard.changeCount().toString()
|
|
|
|
setInterval(function () {
|
|
const currentCount = Pasteboard.changeCount().toString()
|
|
const currentItems = Pasteboard.items().toString()
|
|
|
|
if (currentCount === count) {
|
|
return
|
|
}
|
|
|
|
items = currentItems
|
|
count = currentCount
|
|
|
|
console.log(
|
|
"[* Pasteboard changed] count: " +
|
|
count +
|
|
" hasStrings: " +
|
|
Pasteboard.hasStrings().toString() +
|
|
" hasURLs: " +
|
|
Pasteboard.hasURLs().toString() +
|
|
" hasImages: " +
|
|
Pasteboard.hasImages().toString()
|
|
)
|
|
console.log(items)
|
|
}, 1000 * 5)
|
|
```
|
|
## संदर्भ
|
|
|
|
- [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
|
|
- [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
|
|
- [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
|
|
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|