iOS UIPasteboard

Support HackTricks

Kushiriki data ndani na kati ya programu kwenye vifaa vya iOS kunarahisishwa na mekanizma ya UIPasteboard, ambayo imegawanywa katika makundi mawili makuu:

  • Pasteboard ya jumla ya mfumo: Hii inatumika kwa kushiriki data na programu yoyote na imeundwa kudumisha data hata baada ya vifaa kuanzishwa upya na kufutwa kwa programu, kipengele ambacho kimekuwa kinapatikana tangu iOS 10.

  • Pasteboards za Kawaida / Zilizotajwa: Hizi ni maalum kwa kushiriki data ndani ya programu au na programu nyingine inayoshiriki kitambulisho sawa cha timu, na hazijaundwa kudumisha zaidi ya maisha ya mchakato wa programu unaozizalisha, kufuatia mabadiliko yaliyoanzishwa katika iOS 10.

Mambo ya usalama yana jukumu muhimu wakati wa kutumia pasteboards. Kwa mfano:

  • Hakuna mekanizma kwa watumiaji kudhibiti ruhusa za programu kufikia pasteboard.

  • Ili kupunguza hatari ya ufuatiliaji usioidhinishwa wa nyuma wa pasteboard, ufikiaji umewekwa mipaka wakati programu iko mbele (tangu iOS 9).

  • Matumizi ya pasteboards za kudumu zenye majina yanakabiliwa na kupuuziliwa mbali kwa ajili ya vyombo vya kushiriki kutokana na wasiwasi wa faragha.

  • Kipengele cha Universal Clipboard kilichozinduliwa na iOS 10, kinachoruhusu maudhui kushirikiwa kati ya vifaa kupitia pasteboard ya jumla, kinaweza kudhibitiwa na wabunifu kuweka muda wa kuisha wa data na kuzima uhamishaji wa maudhui kiotomatiki.

Kuhakikisha kwamba taarifa nyeti hazihifadhiwi bila kukusudia kwenye pasteboard ya ulimwengu ni muhimu. Zaidi ya hayo, programu zinapaswa kubuniwa ili kuzuia matumizi mabaya ya data ya pasteboard ya ulimwengu kwa vitendo visivyokusudiwa, na wabunifu wanahimizwa kutekeleza hatua za kuzuia kunakiliwa kwa taarifa nyeti kwenye clipboard.

Uchambuzi wa Kijamii

Kwa uchambuzi wa kijamii, tafuta msimbo wa chanzo au binary kwa:

  • generalPasteboard ili kubaini matumizi ya pasteboard ya jumla ya mfumo.

  • pasteboardWithName:create: na pasteboardWithUniqueName kwa kuunda pasteboards za kawaida. Thibitisha ikiwa kudumu kumewashwa, ingawa hii imeondolewa.

Uchambuzi wa Kijamii

Uchambuzi wa kijamii unahusisha kuunganisha au kufuatilia mbinu maalum:

  • Fuata generalPasteboard kwa matumizi ya mfumo mzima.

  • Fuata pasteboardWithName:create: na pasteboardWithUniqueName kwa utekelezaji wa kawaida.

  • Angalia wito wa mbinu ya zamani setPersistent: ili kuangalia mipangilio ya kudumu.

Maelezo muhimu ya kufuatilia ni pamoja na:

  • Majina ya pasteboard na maudhui (kwa mfano, kuangalia nyuzi, URLs, picha).

  • Idadi ya vitu na aina za data zilizopo, ukitumia ukaguzi wa aina za data za kawaida na za kawaida.

  • Muda wa kuisha na chaguo za ndani pekee kwa kukagua mbinu ya setItems:options:.

Mfano wa matumizi ya zana ya kufuatilia ni monitor ya pasteboard ya objection, ambayo inachunguza generalPasteboard kila sekunde 5 kwa mabadiliko na kutoa data mpya.

Hapa kuna mfano rahisi wa skripti ya JavaScript, iliyochochewa na mbinu ya objection, kusoma na kurekodi mabadiliko kutoka kwa pasteboard kila sekunde 5:

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);

References

Support HackTricks

Last updated