[Perl+PHP] Vanuit shell perfect, vanaf web niet

Pagina: 1
Acties:
  • 136 views sinds 30-01-2008
  • Reageer

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
Ja, titel lijkt op een topic voor P&W, maar ik vraag het toch hier, omdat het denk ik aan de permission ligt.

Nou, ik ben dus een vhost manager aan het maken, nou is de front-end PHP en de backend Perl (als cronjobs en enkele handige dingen). Nu ben ik met het POP-box add gedoe bezig, en wilde dus de POP-box bekijken welke nog niet gebruikt is. Had ik dus een Perl scrippie geschreven. Met 3 params eraan (domainid,maxemail,username). Als ik via de shell (als root) dit doe:
code:
1
perl popname.pl domainid=1 maxemail=10 username=server

Krijg ik mooi server-002 terug.

Doe ik vanuit PHP hetvolgende:
PHP:
1
2
3
4
<?
$dest = exec("cd ../lib;perl popname.pl domainid=1 maxemail=10 username=server");
echo $dest;
?>

Dan krijg ik dus geen output |:(.

De permission die op popname.pl staat is 755, met als owner manager. Help :?

zeroxcool.net - curity.eu


  • dinges
  • Registratie: September 2000
  • Niet online
Mag apache (als je die tenminste gebruikt) wel cd .. doen?
die zit toch meestal opgesloten in zijn eigen dir?
probeer het anders eens met een absoluut pad en niet relatief
dus cd /blaat/lib in plaats van cd ../lib

of in 1 keer exec("perl ../lib/whatever");

PSN: Houtvlot


  • MikeN
  • Registratie: April 2001
  • Laatst online: 22:38
Onder welke user draait apache?
Onder welke user draait PHP (waarschijnlijk dezelfde!!)?

Onder welke user zit jij op de prompt?

Verder weet ik niet hoe het zit met suid bits?

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
Op zaterdag 16 februari 2002 22:03 schreef dinges het volgende:
Mag apache (als je die tenminste gebruikt) wel cd .. doen?
die zit toch meestal opgesloten in zijn eigen dir?
probeer het anders eens met een absoluut pad en niet relatief
dus cd /blaat/lib in plaats van cd ../lib

of in 1 keer exec("perl ../lib/whatever");
$dest = system("perl ../lib/popname.pl domainid=1 maxemail=10 username=server");

werkt ook niet..

zeroxcool.net - curity.eu


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
Op zaterdag 16 februari 2002 22:22 schreef MikeN het volgende:
Onder welke user draait apache?
Onder welke user draait PHP (waarschijnlijk dezelfde!!)?

Onder welke user zit jij op de prompt?

Verder weet ik niet hoe het zit met suid bits?
staat niets (suidbits is toch de d voor rwx?)

zeroxcool.net - curity.eu


  • MikeN
  • Registratie: April 2001
  • Laatst online: 22:38
Het gaat erom: Onder welke user zit jij het script te testen en onder welke user voer jij het via PHP uit? Misschien heeft de Apache user wel helemaal geen toegang tot de bestanden waar jij in wil komen, en dan kan het zijn dat je niets terug krijgt.

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
Ik zal er maar even bij vertellen dat het gewerkt heeft, en alles de user van Apache zal wel apache zijn (= nobody), PHP zou ik niet weten...

zeroxcool.net - curity.eu


  • MikeN
  • Registratie: April 2001
  • Laatst online: 22:38
Ik zal er maar even bij vertellen dat het gewerkt heeft
|:(
Komt ie nu mee, pfff...

Nou, dan moet je even kijken wat er is verandert tussen het moment dat het WEL werkte en het moment dat het NIET meer werkte. :)

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
eigenlijk niets, misschien de permissions (ja, ik weet het |:(, alcohol maakt meer kapot dan je lief is :))

zeroxcool.net - curity.eu


  • MikeN
  • Registratie: April 2001
  • Laatst online: 22:38
Nu is de vraag nog: onder welke user id voer je het script uit via de shell?
En welke rechten denk je dat er nodig zijn om de bestanden te benaderen die je nodig hebt, kan nobody daar idd bij?
En zit perl wel in je path? Of zou /usr/bin/perl beter zijn?

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
Dit is m'n perl script:
code:
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/perl

use CGI qw(:standard);
use strict;
use DBI;

require "config.pl";

my $domainid = param("domainid");
my $maxemail = param("maxemail");
my $username = param("username");

sub email_list {
    my($domain) = @_;
    my $line;
    my %data;
    my @row;

    my $dbh = DBI->connect("DBI:mysql:$config::db_name", $config::db_user, $config::db_pass);
    my $sth = $dbh->prepare("select dest,alias,type from mail where domainid='$domain'");
    $sth->execute();

    while(@row = $sth->fetchrow_array) {
        my $to = $row[0];
        my $address = $row[1];
        my $type = $row[2];
        if($type eq "bounce") {
            $to = "bounce";
        }
        $data{$to} = $address."|".$data{$to};
    }
    
    $sth->finish();
    $dbh->disconnect();
    return %data;
}

sub element_in_hash {
    my($cdata, $str) = @_;
    my %data = %$cdata;
    my $val;

    foreach $val (keys %data) {
        if($val eq $str) {
            return 1;
        }
    }
    return 0;
}

sub last_pop {
    my($maxemail,$domainid,$username) = @_;

    my $available = "null";
    my %data = email_list($domainid);

    my $i;
    my $j;
    for ($i=1; $i <= $maxemail; $i++) {
        if ($i < 10) {
            $j = $username."-00".$i;
        } else {
            if ($i > 99) {
                $j = $username."-".$i;
            } else {
                $j = $username."-0".$i;
            }
        }

        if (!element_in_hash(\%data, $j)) {
            $available = $j;
            $i = $maxemail + 1;
        }
    }

    print $available;
}

last_pop($maxemail,$domainid,$username);

Code is nog niet perfect. Ach goed, hij moet gewoon werken...

zeroxcool.net - curity.eu


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
Even off-topic MikeN, maar waar heb je die traffic graphs (op je site) van?

zeroxcool.net - curity.eu


  • dinges
  • Registratie: September 2000
  • Niet online
Op zaterdag 16 februari 2002 23:09 schreef ZeRoXcOoL het volgende:
Even off-topic MikeN, maar waar heb je die traffic graphs (op je site) van?
ziet eruit als MRTG
heb ik ook net geinstalleerd *D
[edit]
die bovenste is wel met iets anders gemaakt zo te zien :)
Afbeeldingslocatie: http://www.normi.net/mrtg/gb.php?host=localhost_1&amp;month=2&amp;year=2002
mag ik de source? :)

PSN: Houtvlot


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
Op zaterdag 16 februari 2002 23:13 schreef dinges het volgende:

[..]

ziet eruit als MRTG
heb ik ook net geinstalleerd *D
[edit]
die bovenste is wel met iets anders gemaakt zo te zien :)
[afbeelding]
mag ik de source? :)
Die onderste is MRTG ja, dat wist ik, ik bedoelde die bovenste ook :9.

zeroxcool.net - curity.eu


  • MikeN
  • Registratie: April 2001
  • Laatst online: 22:38
MRTG hosters edition, moet je ff op zoeken via google, het is iets als http://mrtg.mentenberg.nl ofzo.

Maar het is lastig aan de praat te krijgen. Je moet delen van een oude versie van mrtg gebruiken enzo.

[edit]
En over dat Perl script: Daar heb ik geen kaas van gegeten :)
Perl is een beetje een apart taaltje, het heeft me al een week gekost om dat mooie grafiekie van m'n dataverkeer te krijgen.

  • dinges
  • Registratie: September 2000
  • Niet online
Op zaterdag 16 februari 2002 23:21 schreef MikeN het volgende:
MRTG hosters edition, moet je ff op zoeken via google, het is iets als http://mrtg.mentenberg.nl ofzo.

Maar het is lastig aan de praat te krijgen. Je moet delen van een oude versie van mrtg gebruiken enzo.

[edit]
En over dat Perl script: Daar heb ik geen kaas van gegeten :)
Perl is een beetje een apart taaltje, het heeft me al een week gekost om dat mooie grafiekie van m'n dataverkeer te krijgen.
damn wat werkt die zut ingewikkeld :D
ik blijf maar editten

PSN: Houtvlot


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
Weer even on-topic, niemand?

zeroxcool.net - curity.eu


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
^ SCHOP ;) ^

zeroxcool.net - curity.eu


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-08 15:59
Werkt, er stond een of andere permissie fout, 2 dagen op zitten klooien |:(.

zeroxcool.net - curity.eu

Pagina: 1