Los fragmentos de código JS en mi proyecto en vivo no aparecen en mi código que reside en mi servidor de producción

6

Tengo un proyecto de sitio web de Django que está activo (llamémoslo example.com). Es un foro donde los usuarios pueden enviar comentarios y responderlos. Tiene una base de datos Postgresql y un proxy inverso gunicorn + nginx como el servidor web configurado. Estoy alojado en una máquina virtual con tecnología Azure, con Ubuntu 14.04 basado en Debian como sistema operativo. Por último, tenga en cuenta que la aplicación web y el servidor se encuentran en dos instancias de máquinas virtuales separadas.

Sospecho que mis servidores pueden estar comprometidos: estoy en la etapa de recopilación de datos en la que estoy averiguando si (i) de hecho mis servidores están comprometidos (ii) si mis datos también están comprometidos (iii) cómo se comprometieron Sucede, para que no me vuelvan a hackear.

En las aplicaciones de Django, hay un archivo base.html que todos los demás archivos .html heredan (o extend en Django). Este archivo base.html contiene la etiqueta <head> con metaetiquetas requeridas, etc., por lo que no es necesario replicarlo en cada archivo de plantilla.

Mi archivo base.html tiene algún código javascript que no escribí . De hecho, no uso javascript en mi código en absoluto. Este fragmento malintencionado de JavaScript redirige a mis usuarios a los anuncios (es un truco para hacer dinero). Si inicio sesión en el servidor de producción de mi aplicación web y nano en el archivo base.html (es decir, lo abro en un editor de texto), los fragmentos ofensivos de javascript no aparecen allí .

En segundo lugar, cuando inspecciono el elemento en mi sitio web en vivo (navegador: Firefox), veo un botón ev junto a la etiqueta contraída de mi sitio web:

Aparentemente,esteesunbotóndeeventosparadepurarJSenelinspectordecódigodeMozilla.Silopresiono,veo:

Noestoysegurodequées:37(puerto37?).Además,sipresionoelbotóndepausa(depuración)delantedeclick,medirigenaunodelosfragmentosdecódigoJSqueresidenenmicódigobase.html:

Mi confusión es sobre cómo estos fragmentos de código JS pueden formar parte de mi sitio web en vivo cuando los archivos de mi servidor de producción parecen ser sin ellos?

Supongo que encontrar la fuente del hackeo requeriría profundizar más en esto. No he instalado SSL todavía, pero sospecho que mi problema no puede ser solucionado por eso. Este es un proyecto de dos personas, y la otra persona es una especialista en antropología cultural no tecnológica, especializada en estudios del sur de Asia, así que estoy segura de que no tiene nada que ver con eso.

He establecido rules.v4 para iptables en:

*filter
# Allow all outgoing, but drop incoming and forwarding packets by default
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

# Custom per-protocol chains
:UDP - [0:0]
:TCP - [0:0]
:ICMP - [0:0]

# Acceptable UDP traffic

# Acceptable TCP traffic
-A TCP -p tcp --dport 22 -j ACCEPT
-A TCP -p tcp --dport 80 -j ACCEPT

# Acceptable ICMP traffic

# Boilerplate acceptance policy
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT

# Drop invalid packets
-A INPUT -m conntrack --ctstate INVALID -j DROP

# Pass traffic to protocol-specific chains
## Only allow new connections (established and related should already be handled)
## For TCP, additionally only allow new SYN packets since that is the only valid
## method for establishing a new TCP connection
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP

# Reject anything that's fallen through to this point
## Try to be protocol-specific w/ rejection message
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable

# Commit the changes
COMMIT

*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
1COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT

*security
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
    
pregunta Sarah Micj 16.02.2016 - 15:45
fuente

1 respuesta

1

El código que has sacado de su página es el monitoreo del navegador New Relic. Se trata de Javascript, que permite al sitio web realizar un seguimiento del rendimiento de las páginas para sus sitios en vivo y para los clientes que lo utilizan.

Devuelve datos de rendimiento sobre cuánto tiempo tardó en cargarse la página, en qué parte del mundo te encuentras y el tiempo que carga cada elemento para mostrar dónde puede estar cualquier rendimiento degradado.

Puede encontrar más información sobre este producto en enlace

    
respondido por el pila 17.02.2016 - 16:28
fuente

Lea otras preguntas en las etiquetas