<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/index.php?action=history&amp;feed=atom&amp;title=4.8.12.1_Tester_l%27inclusion_de_fichiers_locaux</id>
		<title>4.8.12.1 Tester l'inclusion de fichiers locaux - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/index.php?action=history&amp;feed=atom&amp;title=4.8.12.1_Tester_l%27inclusion_de_fichiers_locaux"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=4.8.12.1_Tester_l%27inclusion_de_fichiers_locaux&amp;action=history"/>
		<updated>2026-05-05T15:22:52Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=4.8.12.1_Tester_l%27inclusion_de_fichiers_locaux&amp;diff=187922&amp;oldid=prev</id>
		<title>Jcpraud at 19:02, 12 January 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=4.8.12.1_Tester_l%27inclusion_de_fichiers_locaux&amp;diff=187922&amp;oldid=prev"/>
				<updated>2015-01-12T19:02:45Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 19:02, 12 January 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot; &gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Comment tester ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Comment tester ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Comme les LFI adviennent quand des chemins passés à des instructions &amp;quot;include&amp;quot; ne sont pas correctement validés, dans &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;un &lt;/del&gt;approche en boite noire, il faudra rechercher les scripts qui prennent des noms de fichiers en paramètres.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Comme les LFI adviennent quand des chemins passés à des instructions &amp;quot;include&amp;quot; ne sont pas correctement validés, dans &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;une &lt;/ins&gt;approche en boite noire, il faudra rechercher les scripts qui prennent des noms de fichiers en paramètres.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jcpraud</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=4.8.12.1_Tester_l%27inclusion_de_fichiers_locaux&amp;diff=187921&amp;oldid=prev</id>
		<title>Jcpraud at 18:59, 12 January 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=4.8.12.1_Tester_l%27inclusion_de_fichiers_locaux&amp;diff=187921&amp;oldid=prev"/>
				<updated>2015-01-12T18:59:21Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 18:59, 12 January 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot; &gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Cela peut entraîner &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;une &lt;/del&gt;impact &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;comme &lt;/del&gt;l'affichage du contenu du fichier, mais selon &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;lé &lt;/del&gt;criticité, cela peut aussi causer :&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Cela peut entraîner &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;comme &lt;/ins&gt;impact l'affichage du contenu du fichier, mais selon &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;la &lt;/ins&gt;criticité, cela peut aussi causer :&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* L'exécution de code sur le serveur web&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* L'exécution de code sur le serveur web&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jcpraud</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=4.8.12.1_Tester_l%27inclusion_de_fichiers_locaux&amp;diff=187920&amp;oldid=prev</id>
		<title>Jcpraud: Created page with &quot;{{Template:OWASP Testing Guide v4}} == Sommaire ==   Une vulnérabilité d'inclusion de fichier permet à un attaquant d'inclure un fichier, usuellement en eploitant un mécan...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=4.8.12.1_Tester_l%27inclusion_de_fichiers_locaux&amp;diff=187920&amp;oldid=prev"/>
				<updated>2015-01-12T18:49:10Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Template:OWASP Testing Guide v4}} == Sommaire ==   Une vulnérabilité d&amp;#039;inclusion de fichier permet à un attaquant d&amp;#039;inclure un fichier, usuellement en eploitant un mécan...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
== Sommaire ==&lt;br /&gt;
 &lt;br /&gt;
Une vulnérabilité d'inclusion de fichier permet à un attaquant d'inclure un fichier, usuellement en eploitant un mécanisme d'inclusion dynamique de fichier implémenté dans l'application visée. La vulnérabilité survient à cause d'entrées utilisateur utilisées sans validation correcte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cela peut entraîner une impact comme l'affichage du contenu du fichier, mais selon lé criticité, cela peut aussi causer :&lt;br /&gt;
&lt;br /&gt;
* L'exécution de code sur le serveur web&lt;br /&gt;
* L'exécution de code côté client, comme du JavaScript, qui peut permettre d'autres attaques comme le cross site scripting (XSS)&lt;br /&gt;
* Un déni de service (DOS)&lt;br /&gt;
* Des fuites d'informations sensibles&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'inclusion de fichiers locaux (aussi connue sous le nom de LFI : '''Local File Inclusion''') est le processus par lequel on va inclure des fichiers déjà présents sur le serveur, en exploitant des procédures d'inclusion vulnérables implémentée par l'application. Cette vulnérabilité advient, par exemple, lorsqu'une page reçoit en entrée le chemin d'un fichier devant être inclus et que cette entrée n'est pas validée correctement, autorisant l'injection de caractères permettant de changer de répertoire (tels que point-point-slash). Bien que la plupart de nos exemples soient en PHP, c'est une vulnérabilité commune à d'autres technologies comme JSP, ASP, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comment tester ==&lt;br /&gt;
 &lt;br /&gt;
Comme les LFI adviennent quand des chemins passés à des instructions &amp;quot;include&amp;quot; ne sont pas correctement validés, dans un approche en boite noire, il faudra rechercher les scripts qui prennent des noms de fichiers en paramètres.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Considérons l'exemple suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://vulnerable_host/preview.php?file=example.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cela semble être l'endroit parfait pour tenter un LFI. Si un attaquant a assez de chance, et que le script inclut directement le paramètre au lieu de sélectionner la page dans un tableau, il est possible d'inclure arbitrairement tout fichier du serveur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une preuve de concept typique est de charger le fichier des mots de passe :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://vulnerable_host/preview.php?file=../../../../etc/passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si les conditions mentionnées plus haut sont réunies, un attaquant verra quelque chose ressemblant à :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root:x:0:0:root:/root:/bin/bash&lt;br /&gt;
bin:x:1:1:bin:/bin:/sbin/nologin&lt;br /&gt;
daemon:x:2:2:daemon:/sbin:/sbin/nologin&lt;br /&gt;
alex:x:500:500:alex:/home/alex:/bin/bash&lt;br /&gt;
margo:x:501:501::/home/margo:/bin/bash&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Très souvent, même quand de telles vulnérabilités existent, leurr exploitation est un peu plus complexe. Considérons le morceau de code suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php “include/”.include($_GET['filename'].“.php”); ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans ce cas, un simple remplacement du nom du fichier ne fonctionnera pas puisque le suffixe '.php' est ajouté. Pour contourner cela, on utilise une technique avec des terminateurs octets nuls. Comme %00 indique la fin de la chaîne, tout caractère suivant cet octet spécial sera ignoré. Ainsi, la requête suivante retournera aussi la liste des attributs basiques des utilisateurs :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://vulnerable_host/preview.php?file=../../../../etc/passwd%00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
* Wikipedia - http://www.wikipedia.org/wiki/Local_File_Inclusion&lt;br /&gt;
* Hakipedia - http://hakipedia.com/index.php/Local_File_Inclusion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Remédiation ==&lt;br /&gt;
&lt;br /&gt;
La solution la plus efficace pour éliminer les vulnérabilités d'inclusion de fichier est d'éviter de passer des entrées utilisateurs à toute API de système de fichiers. Si ce n'est pas possible, l'application peut maintenir une liste blanche de fichiers pouvant être inclus dans la page, et utiliser un identifiant (par exemple l'index) pour accéder au fichier sélectionné. Toute requête contenant un identifiant invalide devra être rejetée, ainsi il n'y aura pas de surface d'attaque permettant aux utilisateurs malicieux de manipuler le chemin.&lt;/div&gt;</summary>
		<author><name>Jcpraud</name></author>	</entry>

	</feed>