PDA

Voir la version complète : Sécurité asterisk: qui a lu le README-SERIOUSLY.bestpractices.txt ?



jean
30/06/2011, 15h57
Je dois avouer, pas moi (dit le chat...)....

Document dans la racine des sources asterisk, a lire impérativement...

Notamment, on peut faire du "dialplan injection" dans asterisk:


[....]
For example, instead of just sending a request
to dial extension 500 (which in our example above would create the string
SIP/500 and is then used by the Dial() application to place a call), someone
could potentially send a string like "500&SIP/itsp/14165551212".

The string "500&SIP/itsp/14165551212" would then be contained within the
${EXTEN} channel variable, which is then utilized by the Dial() application in
our example, thereby giving you the dialplan line of:

exten => _X.,n,Dial(SIP/500&SIP/itsp/14165551212)



bonne lecture.....

Reaper
30/06/2011, 16h38
Ça fait un bon moment, c'est pour cette raison il ne faut pas utiliser "_X."

ffossard
30/06/2011, 22h17
Ni même tout masque qui n'est pas limité dans sa longueur et ses caractères autorisés ...
C'est pour ça que je déconseille aussi aux débutants les comptes sip numériques, c'est beau la facilité de faire "exten => _5XX,1,dial(SIP/${EXTEN})", mais bonjour la sécurité ...

Reaper
30/06/2011, 22h34
Mais bon, il faut deviner nom de itsp, et puis trouver un qui accepte les apels par défaut ect.

jean
30/06/2011, 22h41
;-) c'est ce qu'ils disaient chez sony pour le PSP network....

Reaper
30/06/2011, 22h44
Mais pour serveur apache xD

therebel23
01/07/2011, 08h25
C'est toujours vrai sur les dernieres versions d'asterisk cette histoire de concatener un &SIP/isp/1222432 ?

Concretement sur un softphone ou un téléphone SIP, on peut envoyer ce genre de chaine ?

ffossard
01/07/2011, 13h29
Bien sûr qu'on peut l'envoyer, la chaine de numérotation n'est pas du tout limitée aux chiffres, on a l'habitude des chiffres mais le protocole prévoit les autres caractères.

therebel23
01/07/2011, 14h37
Ça fait un bon moment, c'est pour cette raison il ne faut pas utiliser "_X."

Qu'est ce qu'il faut utiliser si l'on souhaite à la fois les numéros au national (10 chiffres) et les numéros à l'international (longueur variable), et le tout en une seule expression ?

Reaper
01/07/2011, 14h39
Utiliser deux expressions.

therebel23
01/07/2011, 14h45
Pour l'international, à longueur variable je trouve pas le patern :

si je mets _00. ça n'empeche pas de concatener un &.

quintana
01/07/2011, 16h40
Sinon tu peux aussi faire une agi ou un bout de dialplan pour vérifier si le résultat de EXTEN est ce que tu souhaites avant de la passer dans Dial().

jean
01/07/2011, 19h43
en lisant le fichier, on trouve:


Using FILTER()
--------------

The FILTER() dialplan function is used to filter strings by only allowing
characters that you have specified. This is a perfect candidate for controlling
which characters you want to pass to the Dial() application, or any other
application which will contain dynamic information passed to Asterisk from an
external source. Lets take a look at how we can use FILTER() to control what
data we allow.

Using our previous example to accept any string length of 2 or more characters,
starting with a number of zero through nine, we can use FILTER() to limit what
we will accept to just numbers. Our example would then change to something like:

[incoming]
exten => _X.,1,Verbose(2,Incoming call to extension ${EXTEN})
exten => _X.,n,Dial(SIP/${FILTER(0-9,${EXTEN})})
exten => _X.,n,Hangup()

Note how we've wrapped the ${EXTEN} channel variable with the FILTER() function
which will then only pass back characters that fit into the numerical range that
we've defined.

Alternatively, if we didn't want to utilize the FILTER() function within the
Dial() application directly, we could save the value to a channel variable,
which has a side effect of being usable in other locations of your dialplan if
necessary, and to handle error checking in a separate location.

......

ffossard
01/07/2011, 20h25
Ah très bien ça :jap:

jean
01/07/2011, 20h31
je commence à prendre l'habitude, quand j'ai une question, à aller voir les fichiers source asterisk... sans lire le code, mais par exemple:

- tous les parametres de sip.conf sont bien expliqués dans le sip.conf.sample

- toutes les applications/fonctions ont leurs parametres détaillés depuis le CLI: core show application dial - par exemple, sinon, au début du fichier apps/app_dial.c

Ca a l'air bete comme chou.... mais ca aide vachement !!!

:-)

_AK_
04/07/2011, 10h13
Je ne connaissais pas le filter, maintenant c'est fait grâce a toi, merci du retour :)

Thera
13/07/2011, 12h53
Non, non, il pose une vrai question, la dernière chaîne d'un numéro international est variable dans sa longueur.