Montag, 9. Juni 2008

Virus Registration via WebInterface (ClamAV)

Ab und zu kann es nützlich sein seine eigene ClamAV Datenbank zu haben.
Besonders wenn man einen neuen Virus entdeckt.
Mit folgendem gefrlickel lassen sich neue Files in die ClamAV Datenbank aufnehmen.

HTML Code :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Postfix Log Tracer</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#ffffff">
<form action="/cgi-bin/newvir.pl" method="post" enctype="multipart/form-data">
<p>Virus Hochladen:<br>
Binary File <input type="file" name="newvir" accept"text/*" maxlength="1000000"><br>
Virus Name <input type="text" name="virname" maxlength="100"><br>
<input type="Submit"><input type="Reset">
</p>
</form>
</body></html>


Das Perl Programm sieht folgendermassen aus :

#!/usr/bin/perl -w

use strict;
use CGI;

my $cgi = new CGI;

print $cgi->header(-type => 'text/html');

my $file = $cgi->param("newvir");
my $virname = $cgi->param("virname");
my $fname = '/var/tmp/'.$virname;
open DAT,'>'.$fname or die 'Error processing file: ',$!;

binmode $file;
binmode DAT;

my $data;
while(read $file,$data,1024) {
print DAT $data;
}
close DAT;

system("/usr/bin/sigtool --md5 ".$fname." >> /var/tmp/unseredb.hdb");

print <<"HTML";
<html>
<head>
<title>Fileupload</title>
</head>
<body bgcolor="#FFFFFF">
Die Datei $file wurde erfolgreich hochgeladen und registriert.<br>
</body>
</html>
HTML


Achtung! Dieses Script wurde schnell erstellt! Die Sicherheit ist lausig. Also nur auf eigenes Risiko einsetzen!