Exploiter la commande WGET

La commande wget est un programme en ligne de commande disponible sur les systèmes Unix/Linux et Windows. De façon générale, cette commande permet de télécharger des fichiers depuis un site internet.

Utilisation de base de la commande wget

En natif sur certains systèmes d’exploitation et téléchargeable sur d’autres, wget s’utilise de la manière suivante:

wget http://un.exemple.fr/page.php

Une fois la commande envoyée, le fichier « page.php » est téléchargé dans le répertoire courant.

Dans les environnements de production, on préfère configurer des accès en https port 443 plutôt que des accès en  http port 80, ceci pour des questions de sécurité.

Et il arrive parfois de tomber sur des certificats SSL non valide.

Bypasser un Certificat SSL

L’option –no-check-certificate porte bien son nom. Cette option permet de ne pas vérifier la validité d’un certificat SSL et de télécharger le fichier ciblé.

wget --no-check-certificate https://un.exemple.fr/page.php

Mais les administrateurs système ne s’arrêtent pas à un simple certificat pour sécuriser leurs ressources. L’authentification des utilisateurs reste le meilleur moyen de les protéger.

Voici deux techniques répandues de sécurisation par mot de passe

  • Authentification par le serveur web 
  • Authentification via un formulaire

Vous l’aurez deviné, wget possède les options nécessaires pour s’authentifier auprès d’un serveur web ou via un formulaire.

Authentification Serveur

Ces demandes d’authentifications sont générées sous forme de pop-up par le navigateur et initiées par le serveur web.

Les deux commandes ci-dessous ont le même rôles et permettent d’envoyer des paramètres d’authentification au serveur en utilisant les options –http-user et –http-password ou en glissant les informations directement  dans l’URL

wget http://username:password@un.exemple.fr/pages.php/

wget --http-user=user --http-password=password http://un.exemple.fr/pages.php/

Authentification Formulaire

Dans le cas d’une authentification via un formulaire, c’est l’option –post-data ‘variable=valeur..’ qui va nous intéresser.

Il faut avant tout connaître le nom des variables. Celles-ci sont visibles dans le code source du formulaire et envoyées au serveur par méthode POST avant d’être interprétées.

Pour cela il faut commencer par visualiser le code source du formulaire d’authentification et repérer ces variables :

<script type="text/javascript" src="js/checkmk.js"></script>
<script type="text/javascript" src="js/hover.js"></script>
</head>
<body class="main "><script language="javascript">
if(top != self) {
    window.top.location.href = location;
}
</script>
<div id=login><img id=login_window src="images/login_window.png"><div id=version>1.2.0p3</div><form id="form_login" name="login" class="login" action="index.py" method="POST" enctype="multipart/form-data">
<input type=hidden name=filled_in value="login"><input type=hidden name=_login value="1"><input type=hidden name=_origtarget value="index.py?"><label id=label_user class=legend for=_username>Username:</label><br /><input type=text class=text value="" name="_username" id='input_user'><label id=label_pass class=legend for=_password>Password:</label><br /><input type=password class=text value="" name="_password" id='input_pass'><div id=button_text><label for="_login" class=image_button><input onfocus="if (this.blur) this.blur();" type=submit name="_login" id="_login" value="Login" class="">
</label></div><div id=foot>Version: 1.2.0p3 - &copy; <a href="http://mathias-kettner.de">Mathias Kettner</a><br><br>You can use, modify and distribute Check_MK under the terms of the <a href='http://mathias-kettner.de/gpl.html'>GNU GPL Version 2</a>.</div></div></form>
<script language="javascript" type="text/javascript">
<!--
if (document.login._username) {    document.login._username.focus();
    document.login._username.select();
}
// -->
</script>
</body></html>

En langage HTML, il faut savoir que les balises <input> correspondent aux champs à remplir par votre nom d’utilisateur et mot de passe avant de cliquer sur le bouton Login.

Ces balises contiennent le nom des variables à envoyer dans notre commande wget

Dans cet exemple  il s’agit des champs _password, _username et _login. Le dernier champ, « _login » est nécessaire pour confirmer l’envoi des données et doit être initialisé à la valeur « submit ».

wget --post-data '_username=username&_password=password&_login=submit' https://un.exemple.fr/login.php

Cookie

Ensuite, afin de conserver la trace de notre authentification, comme le fait n’importe quel  navigateur, wget est aussi capable de créer des cookies et de sauvegarder une session dans un fichier texte.

Pour cela, on utilise dans un premier temps les options –cookies=on , –keep-sessions-cookie et –save-cookies « cookie.txt » tout en conservant les paramètres précédent –post-data qui permettent d’authentifier l’utilisateur.

wget --keep-session-cookies --cookies=on --save-cookies cookies.txt --post-data '_username=username&_password=password&_login=submit' http://un.exemple.fr/pages.php

Une fois le cookie créé, on fait appel à l’option load-cookie « cookie.txt » pour télécharger autant de page et de fichier que l’on désire sur le site ciblé.

wget --keep-session-cookies --cookies=on --load-cookies cookie.txt http://un.exemple.fr/pages.php

Une réflexion sur “ Exploiter la commande WGET ”

  1. Bonjour,

    J’ai essayé avec vos explications de me connecter de manière automatique sur ma banque mais sans succès.

    Je réalise cette fonctionnalité en VBA, mais je suis passé sur Ubuntu et je n’arrive pas à retrouver cette possibilité.

    Si vous pouvez m’apporter une aide j’en serai ravi.

     

    Cordialement

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *