[QwyZ]
19.12.2009, 20:48
хелло ворлд, вот написал тут скриптик для своего сайта - чтобы филтровал запросы:
<?php
function split_req($s){$s=explode("&",$s);return($s);}
$request=$_SERVER['QUERY_STRING'];
$prequest=$_POST;
foreach($prequest as $pv => $pn){$preq=$preq.$pv."=".$pn;}
$request=stripslashes($preq).$request;
$request=urldecode($request);
$request=strtolower($request);
$vars=split_req($request);
$xss_attack = array("<script","</script>","location.href","document.cookie","src=",".js","http://","alert(","%3E","%3C");
$rfi_attack = array("../","./","etc/passwd","%00","http://","ftp://","://","data:");
$sql_attack = array("'","union","select","from","%27");
foreach($vars as $kk=>$vv)
{$cvd=explode("=",$vv);$cvn=$cvd[0];$cvv=$cvd[1];
foreach($xss_attack as $kkk=>$vvv){if (strstr($cvv,$vvv)){$xss_inf=1;$xss_poison=$vv;bre ak;}}
foreach($rfi_attack as $kkkk=>$vvvv){if (strstr($cvv,$vvvv)){$rfi_inf=1;$rfi_poison=$vv;br eak;}}
foreach($sql_attack as $kkkkk=>$vvvvv){if (strstr($cvv,$vvvvv)){$sql_inf=1;$sql_poison=$vv;b reak;}}
if ($xss_inf=="1")
{
$report="<br><b>".$_SERVER['REMOTE_ADDR'] . "</b> tried to attack system by <i>XSS attack</i> via this request:<br> <font color=red>" . stripslashes(htmlspecialchars($xss_poison)) . "</font><br>By date: ".date("F j, Y, g:i a")."<br>on page: <font color=blue>".htmlspecialchars($_SERVER['HTTP_REFERER'])."</font><br><br>";
$logfile=fopen("./logs/edbe01a269a70b0780c47bf6e11792a9.php","a+");
fputs($logfile,base64_encode($report)."\n");
echo("<center><font color=red size=-1 face=tahoma>Request denied because of infected as XSS - Attack</font></center>");
exit;
}
if ($rfi_inf=="1")
{
$report="<br><b>".$_SERVER['REMOTE_ADDR'] . "</b> tried to attack system by <i>PHP Include</i> via this request:<br> <font color=red>" . stripslashes(htmlspecialchars($rfi_poison)) . "</font><br>By date: ".date("F j, Y, g:i a")."<br>on page: <font color=blue>".htmlspecialchars($_SERVER['HTTP_REFERER'])."</font><br><br>";
$logfile=fopen("./logs/edbe01a269a70b0780c47bf6e11792a9.php","a+");
fputs($logfile,base64_encode($report)."\n");
echo("<center><font color=red size=-1 face=tahoma>Request denied because of infected as RFI / LFI attack</font></center>");
exit;
}
if ($sql_inf=="1")
{
$report="<br><b>".$_SERVER['REMOTE_ADDR'] . "</b> tried to attack system by <i>SQL Injection</i> via this request:<br> <font color=red>" . stripslashes(htmlspecialchars($sql_poison)) . "</font><br>By date: ".date("F j, Y, g:i a")."<br>on page: <font color=blue>".htmlspecialchars($_SERVER['HTTP_REFERER'])."</font><br><br>";
$logfile=fopen("./logs/edbe01a269a70b0780c47bf6e11792a9.php","a+");
fputs($logfile,base64_encode($report)."\n");
echo("<center><font color=red size=-1 face=tahoma>Request denied because of infected as SQL - Injection attack</font></center>");
exit;
}
$xss_inf=0;
$rfi_inf=0;
$sql_inf=0;
}
?>
ну и логфайл - вьювер:
<html>
<style>
.ffl
{
border: solid 1px orange;
background-color:FFF0C6;
padding:3px;
margin-left:20px;
margin-right:20px;
}
</style>
<center><h3>Attacks logfile viewer:</h3></center><br><br>
<font face=verdana size=-1>
<?php
@$logfile=file("./logs/edbe01a269a70b0780c47bf6e11792a9.php");
$i=0;
for($i=0;$i<count($logfile);$i++)
{
$crep=stripslashes(trim(base64_decode(trim($logfil e[$i]))));
echo("<div class=ffl>".$crep."</div><br><br>");
}
?>
</font>
</html>
если че-нить пропустил или есть какие - то советы/пожелания, отпишитесь
<?php
function split_req($s){$s=explode("&",$s);return($s);}
$request=$_SERVER['QUERY_STRING'];
$prequest=$_POST;
foreach($prequest as $pv => $pn){$preq=$preq.$pv."=".$pn;}
$request=stripslashes($preq).$request;
$request=urldecode($request);
$request=strtolower($request);
$vars=split_req($request);
$xss_attack = array("<script","</script>","location.href","document.cookie","src=",".js","http://","alert(","%3E","%3C");
$rfi_attack = array("../","./","etc/passwd","%00","http://","ftp://","://","data:");
$sql_attack = array("'","union","select","from","%27");
foreach($vars as $kk=>$vv)
{$cvd=explode("=",$vv);$cvn=$cvd[0];$cvv=$cvd[1];
foreach($xss_attack as $kkk=>$vvv){if (strstr($cvv,$vvv)){$xss_inf=1;$xss_poison=$vv;bre ak;}}
foreach($rfi_attack as $kkkk=>$vvvv){if (strstr($cvv,$vvvv)){$rfi_inf=1;$rfi_poison=$vv;br eak;}}
foreach($sql_attack as $kkkkk=>$vvvvv){if (strstr($cvv,$vvvvv)){$sql_inf=1;$sql_poison=$vv;b reak;}}
if ($xss_inf=="1")
{
$report="<br><b>".$_SERVER['REMOTE_ADDR'] . "</b> tried to attack system by <i>XSS attack</i> via this request:<br> <font color=red>" . stripslashes(htmlspecialchars($xss_poison)) . "</font><br>By date: ".date("F j, Y, g:i a")."<br>on page: <font color=blue>".htmlspecialchars($_SERVER['HTTP_REFERER'])."</font><br><br>";
$logfile=fopen("./logs/edbe01a269a70b0780c47bf6e11792a9.php","a+");
fputs($logfile,base64_encode($report)."\n");
echo("<center><font color=red size=-1 face=tahoma>Request denied because of infected as XSS - Attack</font></center>");
exit;
}
if ($rfi_inf=="1")
{
$report="<br><b>".$_SERVER['REMOTE_ADDR'] . "</b> tried to attack system by <i>PHP Include</i> via this request:<br> <font color=red>" . stripslashes(htmlspecialchars($rfi_poison)) . "</font><br>By date: ".date("F j, Y, g:i a")."<br>on page: <font color=blue>".htmlspecialchars($_SERVER['HTTP_REFERER'])."</font><br><br>";
$logfile=fopen("./logs/edbe01a269a70b0780c47bf6e11792a9.php","a+");
fputs($logfile,base64_encode($report)."\n");
echo("<center><font color=red size=-1 face=tahoma>Request denied because of infected as RFI / LFI attack</font></center>");
exit;
}
if ($sql_inf=="1")
{
$report="<br><b>".$_SERVER['REMOTE_ADDR'] . "</b> tried to attack system by <i>SQL Injection</i> via this request:<br> <font color=red>" . stripslashes(htmlspecialchars($sql_poison)) . "</font><br>By date: ".date("F j, Y, g:i a")."<br>on page: <font color=blue>".htmlspecialchars($_SERVER['HTTP_REFERER'])."</font><br><br>";
$logfile=fopen("./logs/edbe01a269a70b0780c47bf6e11792a9.php","a+");
fputs($logfile,base64_encode($report)."\n");
echo("<center><font color=red size=-1 face=tahoma>Request denied because of infected as SQL - Injection attack</font></center>");
exit;
}
$xss_inf=0;
$rfi_inf=0;
$sql_inf=0;
}
?>
ну и логфайл - вьювер:
<html>
<style>
.ffl
{
border: solid 1px orange;
background-color:FFF0C6;
padding:3px;
margin-left:20px;
margin-right:20px;
}
</style>
<center><h3>Attacks logfile viewer:</h3></center><br><br>
<font face=verdana size=-1>
<?php
@$logfile=file("./logs/edbe01a269a70b0780c47bf6e11792a9.php");
$i=0;
for($i=0;$i<count($logfile);$i++)
{
$crep=stripslashes(trim(base64_decode(trim($logfil e[$i]))));
echo("<div class=ffl>".$crep."</div><br><br>");
}
?>
</font>
</html>
если че-нить пропустил или есть какие - то советы/пожелания, отпишитесь