Hi Bro.
Nuevamente, una opinion costructiva hacia tus Scripts.
- Parte del Script que Realmente hace el scan.
print "Scan Dir you want?\nDir= ";
$input = <stdin>;
chop ($input);
$dir = "/*";
$deep = 0;
while($deep != $taranacakdizin){
@dosyalar = <$input$dir>;
foreach $dosya ( @dosyalar) {
if(-f $dosya){
print "Checking: " .$dosya . "\n";
open(MYINPUTFILE, "$dosya");
while(<MYINPUTFILE>)
{
my($line) = $_;
chomp($line);
if(($line =~ m/include_once \$/i) || ($line =~ m/require_once \$/i) || ($line =~ m/include_once\(\$/i) || ($line =~ m/require_once\(\$/i) || ($line =~ m/require \$/i) || ($line =~ m/require\(\$/i) || ($line =~ m/require \$/i) || ($line =~ m/include \$/i) || ($line =~ m/include\(\$/i))
{
if(($line =~ /\$_GET/) || ($line =~ /\$_POST/) || ($line =~ /\$_REQUEST/)){
open(DAT,">>$sonucdosyasi") || die("File Can not Opened");
print DAT "<td>$dosya</td><td><b><font color=red>$line</b></font></td><tr>";
close(DAT);
} elsif($line =~ /^\/\//){
open(DAT,">>$sonucdosyasi") || die("File Can not Opened");
print DAT "<td>$dosya</td><td><font color=grey>$line</font></td><tr>";
close(DAT);
}
else {
open(DAT,">>$sonucdosyasi") || die("File Can not Opened");
print DAT "<td>$dosya</td><td>$line</td><tr>";
close(DAT);
}
Al Parte Mas Importante por lo que veo.
if(($line =~ m/include_once \$/i)
|| ($line =~ m/require_once \$/i)
|| ($line =~ m/include_once\(\$/i)
|| ($line =~ m/require_once\(\$/i)
|| ($line =~ m/require \$/i)
|| ($line =~ m/require\(\$/i)
|| ($line =~ m/require \$/i)
|| ($line =~ m/include \$/i)
|| ($line =~ m/include\(\$/i))
- Tipos de Peticion...
if(($line =~ /\$_GET/) || ($line =~ /\$_POST/) || ($line =~ /\$_REQUEST/)){
- De partida veo que es Local, osea si tu escribes un script y lo kieres revisar por "posibles" RFI:
buscando en sus lineas la lista de require...include.. y de los tipos de peticiones.
- Porque dificilmente sirve para Scanear una Web online, porque no tiene ningun nexo hacia internet, ningun modulo lwp, etc. o Socket Inclusive.
En lo Personal encuentro que sirve para ver las url que tienen include.. y te entrega la Url. y Nada mas.
- Pero¡ Podes mejorarlo totalmente.
. Sancando Tanto Code que realmente no sirve.
.Haciendo una Especie de dirccionario con todas los rfi conocidos, como los tipicos RFI SCAN.
----------------------------------------------------------------------------------------------------------------
.Podes Tambien hacer un Test de COnexion, provano con alguna shell.
Me explico.
Vos te conectas a la web, revisas el code, parsear todos los include..require_once que tenga,. y luego vas provando con la shell. si este te da 200 OK

es posible que pueda tener RFI.
pero lo logras, haciendole un Get a la web con la shell incluida, si este por ej en el <head> de la SHell pusiste tu Nick. nada mas lo buscar =~/, y si esta

, RFI; si no sigue provando con las otras Url.
Saludos¡