Un análisis de código estático para WordPress Complementos / Temas (y PHP)
Instalación
Simplemente clonar el repositorio, instalar los requisitos y ejecutar la secuencia de comandos
$ git clone https://github.com/webarx-security/wpbullet wpbullet$ cd wpbullet$ pip install -r requirements.txt$ python wpbullet.py
Uso
Opciones disponibles:
--path (required) System path or download URL
Examples:
--path="/path/to/plugin"
--path="https://wordpress.org/plugins/example-plugin"
--path="https://downloads.wordpress.org/plugin/example-plugin.1.5.zip"
--enabled (optional) Check only for given modules, ex. --enabled="SQLInjection,CrossSiteScripting"
--disabled (optional) Don't check for given modules, ex. --disabled="SQLInjection,CrossSiteScripting"
--cleanup (optional) Automatically remove content of .temp folder after scanning remotely downloaded plugin
$ python wpbullet.py --path="/var/www/wp-content/plugins/plugin-name"
La creación de módulos La
creación de un módulo es flexible y permite anular los
BaseClassmétodos para cada módulo, así como crear sus propios métodos.Cada módulo del
Modulesdirectorio está implementando propiedades y métodoscore.modules.BaseClass, por lo tanto, cada parámetro requerido es unaBaseClassvez creado, el módulo debe importarse.
modules/__init__.py. El módulo y el nombre de la clase deben ser coherentes para que el módulo se cargue. Si está abriendo una solicitud de extracción para agregar un nuevo módulo, también proporcione pruebas unitarias para su módulo.
Plantilla de módulo
Modules/ExampleVulnerability.pyfrom core.modules import BaseClass
class ExampleVulnerability(object):
# Vulnerability name
name = "Cross-site Scripting"
# Vulnerability severity
severity = "Low-Medium"
# Functions causing vulnerability
functions = [
"print"
"echo"
]
# Functions/regex that prevent exploitation
blacklist = [
"htmlspecialchars",
"esc_attr"
]
Anulación de patrón de coincidencia de
expresiones regulares El patrón de expresiones regulares se genera
core.modules.BaseClass.build_patterny, por lo tanto, se puede sobrescribir en cada clase de módulo.Modules/ExampleVulnerability.pyimport copy
...
# Build dynamic regex pattern to locate vulnerabilities in given content
def build_pattern(self, content, file):
user_input = copy.deepcopy(self.user_input)
variables = self.get_input_variables(self, content)
if variables:
user_input.extend(variables)
if self.blacklist:
blacklist_pattern = r"(?!(\s?)+(.*(" + '|'.join(self.blacklist) + ")))"
else:
blacklist_pattern = ""
self.functions = [self.functions_prefix + x for x in self.functions]
pattern = r"((" + '|'.join(self.functions) + ")\s{0,}\(?\s{0,1}" + blacklist_pattern + ".*(" + '|'.join(user_input) + ").*)"
return pattern
Pruebas de
unidad de prueba de prueba:
$ python3 -m unittest
Comentarios
Publicar un comentario
Todos sus comentarios seran bienvenidos, no se admiten insultos todo con el debido respeto que se merece cada persona, o de lo contrario seran eliminado cada comentario inrespetuoso hacia los demas. y autores del blog tambien puedes seguirnos en:
Facebook: https://www.facebook.com/groups/HackingTeamCyber/
Grupo de Telegram: https://t.me/TheHackForceOfficial
Canal de Youtube: https://www.youtube.com/channel/UCXy8Lg28OuGuI5Z-2EWJaNA?view_as=subscriber
Canal Vimeo: https://vimeo.com/403136547?activityReferer=1
Red Social Twitter: https://twitter.com/TheHackForce