Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. Support
  3. Dump user's password to try to crack them

Dump user's password to try to crack them

Scheduled Pinned Locked Moved Solved Support
22 Posts 7 Posters 3.8k Views 7 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • potemkin_aiP Online
    potemkin_aiP Online
    potemkin_ai
    wrote on last edited by
    #1

    I would like to dump user's password's hashes to try to run the kind of Johny The Ripper on them.

    Could you please, advice the easiest way to do that? Ideally - some command line for that purpose?

    1 Reply Last reply
    0
    • girishG Offline
      girishG Offline
      girish
      Staff
      wrote on last edited by
      #2

      The mysql database has the hashes. mysql -uroot -ppassword (sic) . Then, in the box database you will have the users table with the info you need.

      potemkin_aiP 1 Reply Last reply
      0
      • murgeroM Offline
        murgeroM Offline
        murgero
        App Dev
        wrote on last edited by
        #3

        I feel like if you don't know how to do this, you probably shouldn't do it.

        --
        https://urgero.org
        ~ Professional Nerd. Freelance Programmer. ~

        potemkin_aiP 1 Reply Last reply
        0
        • murgeroM murgero

          I feel like if you don't know how to do this, you probably shouldn't do it.

          potemkin_aiP Online
          potemkin_aiP Online
          potemkin_ai
          wrote on last edited by
          #4

          @murgero if I != know specific system insides, it != mean I don't have to do security audit.

          1 Reply Last reply
          0
          • girishG girish

            The mysql database has the hashes. mysql -uroot -ppassword (sic) . Then, in the box database you will have the users table with the info you need.

            potemkin_aiP Online
            potemkin_aiP Online
            potemkin_ai
            wrote on last edited by
            #5

            @girish thanks! And where do I get mysql password for that purpose? What is the IP to connect to?

            1 Reply Last reply
            0
            • nebulonN Offline
              nebulonN Offline
              nebulon
              Staff
              wrote on last edited by
              #6

              The password is literally password here and the host is localhost. The database is not exposed anywhere so setting a password as such does not add any extra security, which is why it is password to make that clear and avoid obfuscation.

              1 Reply Last reply
              0
              • girishG girish marked this topic as a question on
              • girishG girish has marked this topic as solved on
              • potemkin_aiP Online
                potemkin_aiP Online
                potemkin_ai
                wrote on last edited by
                #7

                mysql -uroot -ppassword box -e "select username,password from users;" > users.list - is a ready to use command, shall anyone be interested.

                @nebulon , @girish , I know it might sound silly, but you would just save me quite some time - and what's the encryption standard in use?

                1 Reply Last reply
                0
                • nebulonN Offline
                  nebulonN Offline
                  nebulon
                  Staff
                  wrote on last edited by
                  #8

                  The settings are https://git.cloudron.io/cloudron/box/-/blob/master/src/users.js#L98 so you can search through that file to see how passwords are handled internally.

                  1 Reply Last reply
                  0
                  • potemkin_aiP Online
                    potemkin_aiP Online
                    potemkin_ai
                    wrote on last edited by
                    #9

                    Thanks! Code worth thousands words 🙂

                    1 Reply Last reply
                    0
                    • potemkin_aiP Online
                      potemkin_aiP Online
                      potemkin_ai
                      wrote on last edited by
                      #10

                      Apologies, one more question:

                      pbkdf2Async(password, salt, CRYPTO_ITERATIONS, CRYPTO_KEY_LENGTH, CRYPTO_DIGEST)
                      

                      Am I right that salt is a random piece of bytes that is stored somewhere (if so - where?) and password - is user's password?

                      girishG 1 Reply Last reply
                      1
                      • potemkin_aiP potemkin_ai

                        Apologies, one more question:

                        pbkdf2Async(password, salt, CRYPTO_ITERATIONS, CRYPTO_KEY_LENGTH, CRYPTO_DIGEST)
                        

                        Am I right that salt is a random piece of bytes that is stored somewhere (if so - where?) and password - is user's password?

                        girishG Offline
                        girishG Offline
                        girish
                        Staff
                        wrote on last edited by
                        #11

                        @potemkin_ai said in Dump user's password to try to crack them:

                        Am I right that salt is a random piece of bytes that is stored somewhere (if so - where?) and password - is user's password?

                        Passwords are stored in databases as a one way hash i.e you can only verify if the password is correct but cannot obtain the original password. In very naive terms, if the password (in numbers) is 10+32, imagine storing just 42 in the database. You don't know if 42 came from 40+2 or 50-8 and so on. With this approach, you don't the original math but it's always possible to verify given raw password if the password is correct.

                        Turns out it's possible to pre-compute this "42" offline. Basically, you take millions of raw passwords and hash them . Then, you can just compare against a leaked database very quickly (it's just a string compare). This is called a rainbow table. To prevent this, you create a "salt". Think of salt as a random number thrown into the hash computation. Say 10 is our salt, we would store 52. Now, an attacker has to create a table for <rawpassword>+<hash>. We are talking very very large numbers here, so this is not possible anymore.

                        Initially, people started with a single salt for the whole application. These days, you have a unique salt per user. The salt you see above is the per user unique salt. It's a field in the same table. Hope that answers!

                        marcusquinnM 1 Reply Last reply
                        3
                        • potemkin_aiP Online
                          potemkin_aiP Online
                          potemkin_ai
                          wrote on last edited by potemkin_ai
                          #12

                          @girish , thank you! Yeah, I'm aware about the theory, I was wondering how it's done on Cloudron.

                          so this is not possible anymore

                          That's exactly what I would like to check 🙂
                          You know - people are always the weakest part of the chain...

                          1 Reply Last reply
                          0
                          • potemkin_aiP Online
                            potemkin_aiP Online
                            potemkin_ai
                            wrote on last edited by
                            #13

                            @girish , I know, it's been a while, but I've got my hands on server with a GPU, so I wanted to run a brute force on the hashes I've got - could you please, help me to identify which of the algorithms are you using in Cloudron?

                            https://hashcat.net/wiki/doku.php?id=example_hashes

                            My idea was that it's IPMI2 RAKP HMAC-SHA1 (7300 mode) - but hashcat refuses to agree with me on that 🙂

                            1 Reply Last reply
                            0
                            • nebulonN Offline
                              nebulonN Offline
                              nebulon
                              Staff
                              wrote on last edited by
                              #14

                              The code link has changed I guess, so here we are now https://git.cloudron.io/platform/box/-/blob/master/src/users.js#L800

                              potemkin_aiP 1 Reply Last reply
                              0
                              • fbartelsF Offline
                                fbartelsF Offline
                                fbartels
                                App Dev
                                wrote on last edited by fbartels
                                #15

                                An interesting discussion and it confirms my expectation that Cloudron is following modern and good security practices.

                                in case others are coming back to this discussion later, gitlab also offers permalinks to code files and lines, so that will always work: https://git.cloudron.io/platform/box/-/blob/e536c94028b3ce56f468011af8ca656abb78b37f/src/users.js#L800 (only exception would be if this commit somehow gets completely removed from the repo).

                                The database is not exposed anywhere so setting a password as such does not add any extra security, which is why it is password to make that clear and avoid obfuscation.

                                You could switch to https://mariadb.com/kb/en/authentication-plugin-unix-socket/ to get rid of the password completely. this would also strengthen security further by limiting which local users have access.

                                Edit: does Cloudron have some internal logic like complexity rules apart from the "Password must be at least 8 and at most 265 characters" check of the ui?

                                nebulonN 1 Reply Last reply
                                2
                                • nebulonN nebulon

                                  The code link has changed I guess, so here we are now https://git.cloudron.io/platform/box/-/blob/master/src/users.js#L800

                                  potemkin_aiP Online
                                  potemkin_aiP Online
                                  potemkin_ai
                                  wrote on last edited by
                                  #16

                                  @nebulon Thank you! Would you mind helping with selecting proper resulting encryption, please?

                                  It'something at that page: https://hashcat.net/wiki/doku.php?id=example_hashes and I though it shall be 7300, but it isn't...

                                  P.S. Yeah, forcing some password complexity would be nice!

                                  potemkin_aiP 1 Reply Last reply
                                  0
                                  • girishG girish

                                    @potemkin_ai said in Dump user's password to try to crack them:

                                    Am I right that salt is a random piece of bytes that is stored somewhere (if so - where?) and password - is user's password?

                                    Passwords are stored in databases as a one way hash i.e you can only verify if the password is correct but cannot obtain the original password. In very naive terms, if the password (in numbers) is 10+32, imagine storing just 42 in the database. You don't know if 42 came from 40+2 or 50-8 and so on. With this approach, you don't the original math but it's always possible to verify given raw password if the password is correct.

                                    Turns out it's possible to pre-compute this "42" offline. Basically, you take millions of raw passwords and hash them . Then, you can just compare against a leaked database very quickly (it's just a string compare). This is called a rainbow table. To prevent this, you create a "salt". Think of salt as a random number thrown into the hash computation. Say 10 is our salt, we would store 52. Now, an attacker has to create a table for <rawpassword>+<hash>. We are talking very very large numbers here, so this is not possible anymore.

                                    Initially, people started with a single salt for the whole application. These days, you have a unique salt per user. The salt you see above is the per user unique salt. It's a field in the same table. Hope that answers!

                                    marcusquinnM Offline
                                    marcusquinnM Offline
                                    marcusquinn
                                    wrote on last edited by
                                    #17

                                    @girish & @nebulon should have a podcast. SO much knowledge to share!

                                    Web Design https://www.evergreen.je
                                    Development https://brandlight.org
                                    Life https://marcusquinn.com

                                    1 Reply Last reply
                                    1
                                    • fbartelsF fbartels

                                      An interesting discussion and it confirms my expectation that Cloudron is following modern and good security practices.

                                      in case others are coming back to this discussion later, gitlab also offers permalinks to code files and lines, so that will always work: https://git.cloudron.io/platform/box/-/blob/e536c94028b3ce56f468011af8ca656abb78b37f/src/users.js#L800 (only exception would be if this commit somehow gets completely removed from the repo).

                                      The database is not exposed anywhere so setting a password as such does not add any extra security, which is why it is password to make that clear and avoid obfuscation.

                                      You could switch to https://mariadb.com/kb/en/authentication-plugin-unix-socket/ to get rid of the password completely. this would also strengthen security further by limiting which local users have access.

                                      Edit: does Cloudron have some internal logic like complexity rules apart from the "Password must be at least 8 and at most 265 characters" check of the ui?

                                      nebulonN Offline
                                      nebulonN Offline
                                      nebulon
                                      Staff
                                      wrote on last edited by
                                      #18

                                      @fbartels said in Dump user's password to try to crack them:

                                      Edit: does Cloudron have some internal logic like complexity rules apart from the "Password must be at least 8 and at most 265 characters" check of the ui?

                                      https://git.cloudron.io/platform/box/-/blob/master/src/users.js#L183 so we only have the length check. Some way for an admin to specify length and complexity would indeed be quite nice, but it would have to be a bit flexible, since we have seen various different requirements from users, depending on the environment where Cloudron operates in.

                                      1 Reply Last reply
                                      1
                                      • necrevistonnezrN Offline
                                        necrevistonnezrN Offline
                                        necrevistonnezr
                                        wrote on last edited by
                                        #19

                                        Length > Complexity. Always.
                                        Both is better.
                                        https://bitwarden.com/blog/how-long-should-my-password-be/
                                        https://pages.nist.gov/800-63-3/sp800-63b.html#appA

                                        1 Reply Last reply
                                        2
                                        • potemkin_aiP Online
                                          potemkin_aiP Online
                                          potemkin_ai
                                          wrote on last edited by
                                          #20

                                          Length > Complexity. Always.

                                          Yeah, that helps for the password to appear on monitors as a 3M sticks 🤗

                                          necrevistonnezrN 1 Reply Last reply
                                          1
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Bookmarks
                                          • Search