
la única webshell php que necesitas.
webshell en PHP
Como metí la pata y olvidé hablar sobre el uso, aquí va.
Para que este shell funcione, necesitas 2 cosas: una víctima que permita la subida de archivos PHP (tú mismo, en un entorno educativo) y una forma de enviar peticiones HTTP a este webshell (el script cliente es la mejor manera de comunicarse con este shell).
Gracias por todo el apoyo que la comunidad nos ha brindado, significa mucho para nosotros. Ahora, sobre las cosas que se añadirán a este shell para hacerlo aún más increíble:
Relación de detección actual en VT: 2/59 (versión más reciente)
Relación de detección actual en VT (versión ofuscada): 1/59 // Esta es una versión refinada del dropper reducido. La longitud total del archivo es de poco menos de 2 KB. Slopshell ahora asigna correctamente un user-agent aleatorio con un valor de user-agent real, es decir, un user-agent real como Mozilla, Opera, Chrome, Chromium, etc.
El problema con esta detección es que no he encontrado una solución viable para la palabra clave eval; si no hubiera una llamada a eval, este script sería indetectable.
Bien, aquí vamos, amigos. Tenía la necesidad de escribir algo en PHP, así que aquí está. Este webshell tiene algunos añadidos, y cada día se agregan más. Necesitarás un servidor pgsql en ejecución que controles. Cómo lo implementes depende de ti.
Debian: apt install -y postgresql php php-pear python3-pip php-readline php-curl libsodium libsodium-dev && python -m pip install proxybroker --user
Sistemas RHEL: dnf -y -b install postgresql-server postgresql php php-pear python3-pip php-readline php-curl libsodium libsodium-devel && python -m pip install proxybroker --user
WIN: Instala el MSI de PHP y asegúrate de tener un servidor PostgreSQL activo al que puedas conectarte en algún lugar.
Una vez que hayas configurado todo correctamente y puedas confirmar que está funcionando, te recomiendo usar pg_ctl para crear la base de datos, o al menos inicializarla e iniciarla. Luego todas las consultas a la base de datos funcionarán bien.
Debes acceder a /lib/ y ejecutar composer install para instalar las dependencias del lado del servidor que serán necesarias para que el cliente funcione. El cliente ahora es mucho más rápido que antes.
Puede que notes que estos son una reimplementación de otro backdoor de WordPress, y cuando encuentre el repositorio otra vez, me aseguraré de dar crédito por la función de ejecución de comandos que está presente en estos shells. No me gusta copiar código y creo que se debe dar crédito donde corresponde. Gracias, buen señor: me has ayudado bastante con esto al poner tus scripts a disposición del público.
Mientras hacía algunos cambios, pensé: "¿por qué no añadir una forma de que el propio shell se oculte de un administrador poco observador?" Limpié los métodos de ejecución de código, limpié todo el script. Ya no mostrará una página 500 falsa, ya que esto atrae demasiada atención de un administrador atento (más aún por mi experiencia como administrador de un stack de desarrollo PHP en un servidor). Los mensajes de error 500 atraen mucha atención, lo que significa que es más probable que se descubra el shell. Sin embargo, una respuesta 404 es mucho menos probable que llame la atención del administrador del servidor. Esto hace que el shell sea mucho más difícil de detectar y encontrar, además del cambio de nombre de archivo; encontrar este shell será una pesadilla absoluta. La personalización del User-Agent aún debe hacerse, o se puede usar un valor de cookie único en lugar del valor de User-Agent, pero eso no lo estableceré yo y dejaré que usuarios más experimentados personalicen este shell a su gusto. De nuevo, si notas algún problema o deficiencia (la mayoría los he solucionado y he actualizado este shell a PHP8 en su mayor parte; las sugerencias de tipo aún no puedo añadirlas por razones de compatibilidad hacia atrás), por favor abre un issue y cuéntame qué está mal, y veré cómo solucionarlo. Gracias, haz el bien, lucha contra el mal, diviértete.
Esto es lo que pude idear para las rutinas evasivas adicionales:
.scache creado..scache ahora está en la ruta de inclusión, por lo que ahora puedes almacenar y llamar funciones desde esa carpeta.A medida que crezco en el lenguaje PHP, también crecerá todo este proyecto y las clases se convertirán en clases adecuadas, con espacios de nombres y todo. Solo necesito tiempo mientras arreglo el código para que cumpla con los estándares más comunes de desarrollo PHP. Probablemente añadiré una forma de empaquetar este shell como un plugin de WordPress, para que pueda usarse también en WordPress (un plugin adecuado). El cliente ahora crea plugins de WordPress adecuados, que enganchan la función init del sitio de WordPress. No he probado esto completamente, así que si hay algún problema, no dudes en abrir un nuevo issue y describir el problema. El activador del plugin de WordPress se deja en blanco porque estoy buscando formas de hacer que el activador sea un valor único seguro/cifrado que no se pueda replicar. Por favor, ten paciencia.
Cuando se llama a la función cqI, imprime información más relevante en lugar de... ya sabes, basura.
Ejemplo:
Max file uploads: 20
Safemode: cannot set safemode.
File_Uploads: true
Upload Temp Dir: cannot set upload_tmp_dir
Maximum File upload size: 2M
Include Path: .:/usr/share/php8:/usr/share/php/PEAR:/var/www/somesite/html/public/.scache/
---------------- SLOP DEFINES ---------------------
slopMTLS: true
slopEncryption: true
slopOS: LIN
slopShell: bash
slopTor: false
slopPGP: false
.scache full path: /var/www/somesite/html/public/.scache/
Estos tendrán color dependiendo de la salida: false por defecto en rojo, true en verde, con pequeñas excepciones para slopOS y slopShell, que siempre están en verde.
Uso del script cliente:

Conexión inversa iniciada desde el script cliente:

Páginas de aterrizaje aleatorias:

Yo, como mantenedor, no soy responsable en absoluto del mal uso de este producto. Esto se publicó con fines legítimos de pruebas de penetración/red teaming y/o con valor educativo. Conoce las leyes aplicables en tu país de residencia antes de usar este script y no infrinjas la ley mientras lo uses. Gracias y que tengas un buen día.
Dado que la mayoría de los servidores bloquean la capacidad de los scripts para escribir en el directorio servido (como deberían), por defecto uso el shell completo.
La versión WordPress de este shell seguirá funcionando correctamente; solo engancha la función init en lugar de ser solo un shell a merced del viento.