1649523600
Este es el primero de una serie de artículos relacionados con la seguridad.
Esta es una parte resumida de esta serie de artículos con una comparación entre SSRF, CSRF, XSS y XFS.
Ignoraremos la definición de adjuntar para vulnerabilidades, uno puede verificar las definiciones en los artículos relacionados, solo nos enfocamos en las diferencias de los mecanismos de adjuntar.
Los puntos son que el atacante puede
Los puntos son que el atacante puede
Los puntos son que el atacante puede
Los puntos son que el atacante puede
resumido como
Objetivo de ataque | Tipo de ataque | |
SSRF | Servidor | Funcionalidad de abuso |
CSRF | Servidor | Cambian de estado |
XSS | Navegador | Controle la funcionalidad y los datos de la aplicación |
XFS | iFrame del navegador | Robar datos grabando pulsaciones de teclas |
Debido a la protección del firewall del sistema, un atacante externo no puede usar solicitudes directas, sino que realiza su ataque a través de un servidor web vulnerable .
En un ataque SSRF típico, el atacante puede hacer que el servidor establezca una conexión con servicios solo internos dentro de la infraestructura de la organización. En otros casos, pueden obligar al servidor a conectarse a sistemas externos arbitrarios, lo que podría filtrar datos confidenciales, como credenciales de autorización.
La falsificación de solicitudes entre sitios (también conocida como CSRF) permite a un atacante inducir a los usuarios a realizar acciones que no tienen la intención de realizar. Permite que un atacante eluda parcialmente la misma política de origen, que está diseñada para evitar que diferentes sitios web interfieran entre sí.
Las secuencias de comandos entre sitios funcionan mediante la manipulación de un sitio web vulnerable para que devuelva JavaScript malicioso a los usuarios. Cuando el código malicioso se ejecuta dentro del navegador de la víctima, el atacante puede comprometer completamente su interacción con la aplicación.
Un ataque de secuencias de comandos entre marcos comienza al incorporar una página web válida en un iframe en una página maliciosa y engañar al usuario para que visite un sitio que controla el atacante, generalmente como parte de un ataque de phishing. JavaScript está configurado en el servidor del atacante para escuchar eventos iniciados por el usuario, generalmente pulsaciones de teclas, y el atacante puede expandir el iframe para cubrir toda la página para obtener el máximo realismo.
En combinación con un error de navegador adecuado, esto puede permitir que el atacante obtenga credenciales de inicio de sesión y otra información confidencial del usuario desprevenido que interactúa con el sitio legítimo enmarcado como de costumbre. Desde este punto de vista, XFS puede considerarse una variedad de clickjacking .
Se introduce una vulnerabilidad SSRF cuando se utilizan datos controlables por el usuario para crear la URL de destino. Para realizar un ataque SSRF, un atacante puede cambiar el valor de un parámetro en la aplicación web vulnerable para crear o controlar solicitudes desde el servidor vulnerable.
Los recursos externos a los que accede una aplicación web pueden incluir servicios internos, por ejemplo, una fuente RSS de otro sitio web. Un desarrollador podría usar la siguiente URL para recuperar una fuente remota:
https://example.com/feed.php?url=externalsite.com/feed/to
HTTP
Dupdo
Si el atacante puede cambiar el url
parámetro a localhost
(la interfaz de bucle invertido), esto puede permitirle ver los recursos locales alojados en el servidor, haciéndolo vulnerable a la falsificación de solicitudes del lado del servidor.
Para que un ataque CSRF sea posible, deben darse tres condiciones clave:
Los ataques XSS son ataques de inyección que insertan código de script malicioso en una página web procesada por el navegador de un usuario. La parte “ cross-site ” significa que el código de ataque tiene un origen diferente al del sitio visitado. Normalmente, esto debería ser imposible debido a la política del mismo origen (SOP) , una función de seguridad fundamental del navegador que solo permite que las aplicaciones web carguen scripts que tienen el mismo origen.
En un ataque XFS típico, una vez que el usuario del navegador visita la página web controlada por el atacante, ocurre lo siguiente:
Fuente: https://www.c-sharpcorner.com/article/comparisons-among-ssrf-csrf-xss-and-xfs/
1649523600
Este es el primero de una serie de artículos relacionados con la seguridad.
Esta es una parte resumida de esta serie de artículos con una comparación entre SSRF, CSRF, XSS y XFS.
Ignoraremos la definición de adjuntar para vulnerabilidades, uno puede verificar las definiciones en los artículos relacionados, solo nos enfocamos en las diferencias de los mecanismos de adjuntar.
Los puntos son que el atacante puede
Los puntos son que el atacante puede
Los puntos son que el atacante puede
Los puntos son que el atacante puede
resumido como
Objetivo de ataque | Tipo de ataque | |
SSRF | Servidor | Funcionalidad de abuso |
CSRF | Servidor | Cambian de estado |
XSS | Navegador | Controle la funcionalidad y los datos de la aplicación |
XFS | iFrame del navegador | Robar datos grabando pulsaciones de teclas |
Debido a la protección del firewall del sistema, un atacante externo no puede usar solicitudes directas, sino que realiza su ataque a través de un servidor web vulnerable .
En un ataque SSRF típico, el atacante puede hacer que el servidor establezca una conexión con servicios solo internos dentro de la infraestructura de la organización. En otros casos, pueden obligar al servidor a conectarse a sistemas externos arbitrarios, lo que podría filtrar datos confidenciales, como credenciales de autorización.
La falsificación de solicitudes entre sitios (también conocida como CSRF) permite a un atacante inducir a los usuarios a realizar acciones que no tienen la intención de realizar. Permite que un atacante eluda parcialmente la misma política de origen, que está diseñada para evitar que diferentes sitios web interfieran entre sí.
Las secuencias de comandos entre sitios funcionan mediante la manipulación de un sitio web vulnerable para que devuelva JavaScript malicioso a los usuarios. Cuando el código malicioso se ejecuta dentro del navegador de la víctima, el atacante puede comprometer completamente su interacción con la aplicación.
Un ataque de secuencias de comandos entre marcos comienza al incorporar una página web válida en un iframe en una página maliciosa y engañar al usuario para que visite un sitio que controla el atacante, generalmente como parte de un ataque de phishing. JavaScript está configurado en el servidor del atacante para escuchar eventos iniciados por el usuario, generalmente pulsaciones de teclas, y el atacante puede expandir el iframe para cubrir toda la página para obtener el máximo realismo.
En combinación con un error de navegador adecuado, esto puede permitir que el atacante obtenga credenciales de inicio de sesión y otra información confidencial del usuario desprevenido que interactúa con el sitio legítimo enmarcado como de costumbre. Desde este punto de vista, XFS puede considerarse una variedad de clickjacking .
Se introduce una vulnerabilidad SSRF cuando se utilizan datos controlables por el usuario para crear la URL de destino. Para realizar un ataque SSRF, un atacante puede cambiar el valor de un parámetro en la aplicación web vulnerable para crear o controlar solicitudes desde el servidor vulnerable.
Los recursos externos a los que accede una aplicación web pueden incluir servicios internos, por ejemplo, una fuente RSS de otro sitio web. Un desarrollador podría usar la siguiente URL para recuperar una fuente remota:
https://example.com/feed.php?url=externalsite.com/feed/to
HTTP
Dupdo
Si el atacante puede cambiar el url
parámetro a localhost
(la interfaz de bucle invertido), esto puede permitirle ver los recursos locales alojados en el servidor, haciéndolo vulnerable a la falsificación de solicitudes del lado del servidor.
Para que un ataque CSRF sea posible, deben darse tres condiciones clave:
Los ataques XSS son ataques de inyección que insertan código de script malicioso en una página web procesada por el navegador de un usuario. La parte “ cross-site ” significa que el código de ataque tiene un origen diferente al del sitio visitado. Normalmente, esto debería ser imposible debido a la política del mismo origen (SOP) , una función de seguridad fundamental del navegador que solo permite que las aplicaciones web carguen scripts que tienen el mismo origen.
En un ataque XFS típico, una vez que el usuario del navegador visita la página web controlada por el atacante, ocurre lo siguiente:
Fuente: https://www.c-sharpcorner.com/article/comparisons-among-ssrf-csrf-xss-and-xfs/
1649493660
This is a summary part of this series of articles with comparison among SSRF, CSRF, XSS, and XFS.
We will ignore the definition of the attach for vulnerabilities, one can check the definitions in the related articles, we just focus on the differences of the attaching mechanisms.
The points are that attacker can
The points are that attacker can
The points are that attacker can
The points are that attacker can
Summarized as
Attack Target | Attack Type | |
SSRF | Server | Abuse Functionality |
CSRF | Server | Change State |
XSS | Browser | Control App's Functionality and Data |
XFS | Browser iFrame | Steal Data by Recording keystrokes |
Due to the protection of system firewall, an external attacker can’t use direct requests, instead, they make their attack via a vulnerable web server.
In a typical SSRF attack, the attacker might cause the server to make a connection to internal-only services within the organization's infrastructure. In other cases, they may be able to force the server to connect to arbitrary external systems, potentially leaking sensitive data such as authorization credentials.
Cross-site request forgery (also known as CSRF) allows an attacker to induce users to perform actions that they do not intend to perform. It allows an attacker to partly circumvent the same origin policy, which is designed to prevent different websites from interfering with each other.
Cross-site scripting works by manipulating a vulnerable website so that it returns malicious JavaScript to users. When the malicious code executes inside a victim's browser, the attacker can fully compromise their interaction with the application.
A cross-frame scripting attack starts by embedding a valid webpage into an iframe on a malicious page and tricking the user into visiting a site that the attacker controls, usually as part of a phishing attack. JavaScript is set up on the attacker’s server to listen for user-initiated events, usually keypresses, and the attacker can expand the iframe to cover the entire page for maximum realism.
In combination with a suitable browser bug, this may allow the attacker to obtain login credentials and other sensitive information from the unsuspecting user who is interacting with the framed legitimate site as usual. From this point of view, XFS can be considered a variety of clickjacking.
An SSRF vulnerability is introduced when user-controllable data is used to build the target URL. To perform an SSRF attack, an attacker can then change a parameter value in the vulnerable web application to create or control requests from the vulnerable server.
External resources accessed by a web application may include internal services, for example an RSS feed from another website. A developer might use the following URL to retrieve a remote feed:
https://example.com/feed.php?url=externalsite.com/feed/to
HTTP
Copy
If the attacker is able to change the url
parameter to localhost
(the loopback interface), this may allow them to view local resources hosted on the server, making it vulnerable to server-side request forgery.
For a CSRF attack to be possible, three key conditions must be in place:
XSS attacks are injection attacks that insert malicious script code into a web page processed by a user’s browser. The “cross-site” part means that the attack code has a different origin than the visited site. Normally, this should be impossible due to same-origin policy (SOP) – a fundamental browser security feature that only allows web applications to load scripts that have the same origin.
In a typical XFS attack, once the browser user visits the web page controlled by the attacker, the following happens:
Source: https://www.c-sharpcorner.com/article/comparisons-among-ssrf-csrf-xss-and-xfs/
1649514780
これは、一連のセキュリティ関連の記事の最初のものです。
これは、SSRF、CSRF、XSS、およびXFSを比較した、この一連の記事の要約部分です。
脆弱性のアタッチの定義は無視します。関連記事で定義を確認できます。アタッチメカニズムの違いに焦点を当てます。
ポイントは、攻撃者ができることです
ポイントは、攻撃者ができることです
ポイントは、攻撃者ができることです
ポイントは、攻撃者ができることです
として要約
攻撃対象 | 攻撃タイプ | |
SSRF | サーバ | 不正使用機能 |
CSRF | サーバ | 状態の変更 |
XSS | ブラウザ | アプリの機能とデータを制御する |
XFS | ブラウザiFrame | キーストロークを記録してデータを盗む |
システムファイアウォールの保護により、外部の攻撃者は直接リクエストを使用できません。代わりに、 脆弱なWebサーバーを介して攻撃を行います。
一般的なSSRF攻撃では、攻撃者がサーバーに組織のインフラストラクチャ内の内部専用サービスへの接続を確立させる可能性があります。また、サーバーを強制的に任意の外部システムに接続させて、認証資格情報などの機密データを漏洩させる可能性がある場合もあります。
クロスサイトリクエストフォージェリ(CSRFとも呼ばれます)を使用すると、攻撃者はユーザーに意図しないアクションを実行させることができます。これにより、攻撃者は、異なるWebサイトが相互に干渉するのを防ぐように設計された同一生成元ポリシーを部分的に回避できます。
クロスサイトスクリプティングは、脆弱なWebサイトを操作して、悪意のあるJavaScriptをユーザーに返すことで機能します。悪意のあるコードが被害者のブラウザ内で実行されると、攻撃者はアプリケーションとのやり取りを完全に侵害する可能性があります。
クロスフレームスクリプティング攻撃は、悪意のあるページのiframe に有効なWebページを埋め込み 、通常はフィッシング攻撃の一部として、攻撃者が制御するサイトにユーザーを騙してアクセスさせることから始まります。JavaScriptは、ユーザーが開始したイベント(通常はキー押下)をリッスンするように攻撃者のサーバーに設定され、攻撃者はiframeを拡張してページ全体をカバーし、最大限のリアリズムを実現できます。
これは、適切なブラウザのバグと組み合わせて、攻撃者が通常どおりフレーム化された正当なサイトと対話している疑いを持たないユーザーからログイン資格情報やその他の機密情報を取得する可能性があります。この観点から、XFSはさまざまなクリックジャッキングと見なすことができ ます。
SSRFの脆弱性は、 ユーザーが制御可能なデータ を使用してターゲットURLを構築する場合に発生します。SSRF攻撃を実行するために、攻撃者は脆弱なWebアプリケーションのパラメーター値を変更して、脆弱なサーバーからの要求を作成または制御できます。
Webアプリケーションによってアクセスされる外部リソースには、別のWebサイトからのRSSフィードなどの内部サービスが含まれる場合があります。開発者は、次のURLを使用してリモートフィードを取得する場合があります。
https://example.com/feed.php?url=externalsite.com/feed/to
HTTP
コピー
攻撃者が url
パラメータを localhost
(ループバックインターフェイス)に変更できる場合、サーバーでホストされているローカルリソースを表示できる可能性があり、サーバー側のリクエストフォージェリに対して脆弱になります。
CSRF攻撃を可能にするには、次の3つの重要な条件が整っている必要があります。
XSS攻撃は 、ユーザーのブラウザによって処理されるWebページに悪意のあるスクリプトコードを挿入するインジェクション攻撃です。「クロスサイト」の部分は、攻撃コードが訪問したサイトとは異なる発信元を持っていることを意味します。通常、これは同一生成元ポリシー(SOP)のために不可能です。これは 、Webアプリケーションが同じ生成元を持つスクリプトのみをロードできるようにする基本的なブラウザーセキュリティ機能です。
一般的なXFS攻撃では、ブラウザユーザーが攻撃者によって制御されているWebページにアクセスすると、次のようになります。
ソース:https ://www.c-sharpcorner.com/article/comparisons-among-ssrf-csrf-xss-and-xfs/
1621755828
Entre Institute is an Entrepreneurship Educational Platform that currently teaching 150,000 people around the world to build their online business successfully. Jeff Lerner is the mastermind behind The Entre Institute. After a decade of building multiple online businesses to over 8 figures and twice landing on the INC 5000, Jeff turned his focus to educating and inspiring entrepreneurs about the power of entrepreneurship in the modern economy. In 2018 he founded ENTRE Institute where over 50,000 students are developing their ENTREpreneurial skills.
More Details: Entre Institute Review
#entre institute review #entre institute #entre #entre blueprint #entrepreneurship
1648573260
Un día estaba trabajando en una función en el trabajo. Tenía muchas sucursales creadas en los tickets de JIRA, así que quería abrir un montón de PR (Solicitudes de extracción) todas a la vez en diferentes pestañas.
Así es como suelo trabajar: tengo muchas pestañas abiertas y esto acelera las cosas, porque no necesito esperar a que se cargue la siguiente página.
Pero después de crear el primer PR en BitBucket e intentar pasar a la página siguiente, recibí un mensaje de error sobre un token CSRF no válido. Este es un problema común con las aplicaciones web que tienen protección CSRF.
Entonces, en este artículo, aprenderá qué es CSRF y cómo solucionar este error.
CSRF es un acrónimo de Cross-Site Request Forgery . Es un vector de ataque que los atacantes suelen utilizar para acceder a su sistema.
La forma en que generalmente se protege contra CSRF es enviar un token único generado por cada solicitud HTTP. Si el token que está en el servidor no coincide con el de la solicitud, le muestra un error al usuario.
Esta es una forma de protegerse contra CSRF con un token:
const inital_token = '...';
const secure_fetch = (token => {
const CSRF_HEADER = 'X-CSRF-TOKEN';
return (url) => {
const response = await fetch(url, {
method: 'POST',
headers: {
[CSRF_HEADER]: token
}
});
response.then(res => {
token = res.headers[CSRF_HEADER]
});
return response;
};
})(inital_token);
Este código usa la API de obtención para enviar y recibir un token seguro en los encabezados HTTP . En el respaldo, debe generar el primer token inicial cuando se carga la página. En el servidor, en cada solicitud de AJAX , debe verificar si el token es válido.
Esto funciona bien a menos que tenga más de una pestaña abierta. Cada pestaña puede enviar solicitudes al servidor, lo que romperá esta solución. Y es posible que los usuarios avanzados no puedan usar su aplicación de la manera que quieren.
Pero hay una solución simple a este problema que es la comunicación cruzada.
Puede usar la biblioteca Sysend , una solución de código abierto que he creado específicamente para este propósito. Simplifica la comunicación entre tabulaciones cruzadas.
Si lo desea, puede usar una API de navegador nativa como Broadcast Channel para hacer lo mismo. Más información sobre cómo hacerlo más adelante en este artículo.
Pero la biblioteca Sysend funcionará para navegadores que no admitan Broadcast Channel. También funciona en IE (tiene algunos errores, lo cual no es una sorpresa). Es posible que también deba admitir algunos navegadores móviles antiguos. También tiene una API mucho más simple.
Este es el ejemplo más simple:
let token;
sysend.on('token', new_token => {
token = new_token;
});
// ...
sysend.broadcast('token', token);
Ejemplo simple de usar la función base de la biblioteca sysend
Y así es como usaría esta biblioteca para arreglar la protección CSRF:
const inital_token = '...';
const secure_fetch = (token => {
const CSRF_HEADER = 'X-CSRF-TOKEN';
const EVENT_NAME = 'csrf';
sysend.on(EVENT_NAME, new_token => {
// get new toke from different tab
token = new_token;
});
return (url) => {
const response = await fetch(url, {
method: 'POST',
headers: {
[CSRF_HEADER]: token
}
});
response.then(res => {
token = res.headers[CSRF_HEADER];
// send new toke to other tabs
sysend.broadcast(EVENT_NAME, token);
});
return response;
};
})(inital_token);
función secure_fetch con protección CSRF usando sysend
Todo lo que tienes que hacer es enviar y recibir un solo mensaje de otras pestañas al enviar la solicitud. Y su aplicación protegida CSRF funcionará en muchas pestañas.
Y eso es. Esto permitirá que los usuarios avanzados usen su aplicación que tiene protección CSRF cuando quieran abrir muchas pestañas.
Este es el ejemplo más simple posible del uso de Broadcast Channel:
const channel = new BroadcastChannel('my-connection');
channel.addEventListener('message', (e) => {
console.log(e.data); // 'some message'
});
channel.postMessage('some message');
Uso básico del canal de transmisión
Entonces, con esta API simple, puede hacer lo mismo que hicimos antes:
const inital_token = '...';
const secure_fetch = (token => {
const CSRF_HEADER = 'X-CSRF-TOKEN';
const channel = new BroadcastChannel('csrf-protection');
channel.addEventListener('message', (e) => {
// get new toke from different tab
token = e.data;
});
return (url) => {
const response = await fetch(url, {
method: 'POST',
headers: {
[CSRF_HEADER]: token
}
});
response.then(res => {
token = res.headers[CSRF_HEADER];
// send new token to other tabs
channel.postMessage(token);
});
return response;
};
})(inital_token);
Función secure_fetch con protección CSRF usando BroadcastChannel
Como puede ver en el ejemplo anterior, Broadcast Channel no tiene ningún espacio de nombres para eventos. Entonces, si desea enviar más de un tipo de evento, debe crear tipos de eventos.
Aquí hay un ejemplo del uso de Broadcast Channel para hacer más que la solución de protección CSRF que hemos discutido hasta ahora.
Puede sincronizar el inicio y cierre de sesión para su aplicación. Si inicia sesión en una pestaña, sus otras pestañas también lo iniciarán. De la misma manera, puede sincronizar el carrito de compras en algunos sitios web de comercio electrónico.
const channel = new BroadcastChannel('my-connection');
const CSRF = 'app/csrf';
const LOGIN = 'app/login';
const LOGOUT = 'app/logout';
let token;
channel.addEventListener('message', (e) => {
switch (e.data.type) {
case CSRF:
token = e.data.payload;
break;
case LOGIN:
const { user } = e.data.payload;
autologin(user);
break;
case LOGOUT:
logout();
break;
}
});
channel.postMessage({type: 'login', payload: { user } });
Uso de Broadcast Channel con diferentes tipos de mensajes
Es genial si protege su aplicación contra los atacantes. Pero tenga en cuenta cómo la gente usará su aplicación también para que no la haga innecesariamente difícil de usar. Esto se aplica no sólo a este problema en particular.
Fuente: https://www.freecodecamp.org/news/csrf-protection-problem-and-how-to-fix-it/