@@ -18,97 +18,71 @@ Target : [https://web1.ctf.p7z.pw](https://web1.ctf.p7z.pw)
1818
1919![ ] ( https://cdn-images-1.medium.com/max/800/1*MIA-GGdTygl9TsJOnUpJFg.png )
2020
21- หลังจากเข้าเว็ปมาก็จะเห็นหน้า login
21+ หลังจากเข้าเว็ปมาก็จะเห็นหน้า login ซึ่งเราไม่มี username, password แล้วเราจะ login ได้ยังไง ?
2222
23- ซึ่งเราไม่มี username, password แล้วเราจะ login ได้ยังไง ?
24-
25- ขั้นตอนแรกเรามารวบรวมหาข้อมูลให้มากที่สุดก่อน (Information Gathering)
26-
27- เริ่มจากลอง inspect หน้าเว็ปดูเผื่อจะเจออะไร
23+ ขั้นตอนแรกเรามารวบรวมหาข้อมูลให้มากที่สุดก่อน (Information Gathering) เริ่มจากลอง inspect หน้าเว็ปดูเผื่อจะเจออะไร
2824
2925![ ] ( https://cdn-images-1.medium.com/max/800/1*dqASwHKhA-0YkurFc0i-1w.png )
3026
31- เมื่อลองดูใน Source code เราจะเห็น comment ของ credentials อยู่ คือ username และ password
32-
33- ลองเอา username และ password ที่ได้มา login ดู และ ติ๊ก Remember Me ด้วย
27+ เมื่อลองดูใน Source code เราจะเห็น comment ของ credentials อยู่ คือ username และ password ลองเอา username และ password ที่ได้มา login ดู และ ติ๊ก Remember Me ด้วย
3428
3529![ ] ( https://cdn-images-1.medium.com/max/800/1*qBCMf8ulCnAjzEl_uYdSWg.png )
3630
37- หลังจาก login แล้ว เราจะเห็นว่ามีข้อมูลเกี่ยวกับการ login ของเราขึ้นมา
38-
39- คือ username “test”, Role “user”
31+ หลังจาก login แล้ว เราจะเห็นว่ามีข้อมูลเกี่ยวกับการ login ของเราขึ้นมา คือ username “test”, Role “user”
4032
4133![ ] ( https://cdn-images-1.medium.com/max/800/1*V9pCf388lfTMN3p6CzXecA.png )
4234
43- แต่ใน Flag นี้เราจะต้อง login ด้วย Admin user แล้วเราจะสามารถ login ด้วย Admin ได้ยังไง ?
44-
45- ลอง inspect หน้าเว็ปดูอีกรอบเผื่อจะมีอะไรซ่อนอยู่อีก
35+ แต่ใน Flag นี้เราจะต้อง login ด้วย Admin user แล้วเราจะสามารถ login ด้วย Admin ได้ยังไง ? ลอง inspect หน้าเว็บดูอีกรอบเผื่อจะมีอะไรซ่อนอยู่อีก
4636
4737![ ] ( https://cdn-images-1.medium.com/max/800/1*tPAnEqOqZCeNaFMxgSg_BQ.png )
4838
4939เมื่อลองส่องๆดูเราจะเห็นไฟล์ javascript “script.js” และเราเห็นว่าในไฟล์นี้มี function อยู่ 2 function คือ
5040
51- ** debugFetchUserTest()**
41+ ** debugFetchUserTest()** - function นี้จะทำการ fetch data จาก ** api.php?action=get_userinfo&user=test **
5242
5343![ ] ( https://cdn-images-1.medium.com/max/800/1*XEHSmAeddFaafO57Y1d9Ng.png )
5444
55- function นี้จะทำการ fetch data จาก ** api.php?action=get_userinfo&user=test**
56-
57- ลองยิง api ไปที่ endpoint นี้ดู
5845
59- https://web1.ctf.p7z.pw/api.php?action=get_userinfo&user=test
46+ ลองยิง api ไปที่ endpoint นี้ดู ` https://web1.ctf.p7z.pw/api.php?action=get_userinfo&user=test `
6047
6148ผลลัพธ์ที่ได้ :
6249
6350![ ] ( https://cdn-images-1.medium.com/max/800/1*RjiFslSA3qieWE09l66fAQ.png )
6451
65- แสดงว่า function นี้เป็น function ที่ทำหน้าที่ดึงข้อมูลของ user นั้นๆ
66-
67- ทีนี้ลองไปดูอีก function ว่ามันทำอะไรได้บ้าง ?
52+ แสดงว่า function นี้เป็น function ที่ทำหน้าที่ดึงข้อมูลของ user นั้นๆ ทีนี้ลองไปดูอีก function ว่ามันทำอะไรได้บ้าง ?
6853
69- ** debugFetchAllUsers()**
54+ ** debugFetchAllUsers()** - function นี้จะทำการ fetch data จาก ** api.php?action=get_alluser **
7055
7156![ ] ( https://cdn-images-1.medium.com/max/800/1*ztm59x3xqb5ipCb0fzgnHA.png )
7257
73- function นี้จะทำการ fetch data จาก ** api.php?action=get_alluser**
74-
75- ลองยิง api ไปที่ endpoint นี้ดู
76-
77- https://web1.ctf.p7z.pw/api.php?action=get_alluser
58+ ลองยิง api ไปที่ endpoint นี้ดู ` https://web1.ctf.p7z.pw/api.php?action=get_alluser `
7859
7960ผลลัพธ์ที่ได้ :
8061
8162![ ] ( https://cdn-images-1.medium.com/max/800/1*2nzCK4WD1WhV1tRgjVCayQ.png )
8263
8364แสดงว่า function นี้เป็น function ที่ทำหน้าที่ fetch user ทั้งหมดในระบบ
8465
85- จากผลลัพธ์ของ function ** debugFetchAllUsers()**
86-
87- เราจะเห็นว่า มี user อยู่อีก 1 user ซึ่งอาจจะเป็น admin user
88-
89- เราจะลองเอา username นี้ไปยิง api เพื่อขอข้อมูลของ user ดู
66+ จากผลลัพธ์ของ function ** debugFetchAllUsers()** เราจะเห็นว่า มี user อยู่อีก 1 user ซึ่งอาจจะเป็น admin user เราจะลองเอา username นี้ไปยิง api เพื่อขอข้อมูลของ user ดู
9067
91- https://web1.ctf.p7z.pw/api.php?action=get_userinfo&user=admin-uat
68+ ` https://web1.ctf.p7z.pw/api.php?action=get_userinfo&user=admin-uat `
9269
9370ผลลัพธ์ที่ได้ :
9471
9572![ ] ( https://cdn-images-1.medium.com/max/800/1*iKnZgCthfsCiMGCq0L4vuw.png )
9673
97- ดูจากข้อมูลนี้เราจะเห็น remember_me_token ซึ่งอาจจะเป็น token ที่ใช้ sign jwt token ของ admin-uat
98-
99- แสดงว่าเราอาจจะใช้ token นี้มา sign token เพื่อ login เป็น admin-uat ได้
100-
101- แต่เราไม่มี jwt secret key สำหรับใช้ sign token แล้วเราจะหามันได้ยังไง ?
102-
103- คำตอบก็คือ bruteforce ยังไงหล่ะ
74+ ดูจากข้อมูลนี้เราจะเห็น remember_me_token ซึ่งอาจจะเป็น token ที่ใช้ sign jwt token ของ admin-uat แสดงว่าเราอาจจะใช้ token นี้มา sign token เพื่อ login เป็น admin-uat ได้
10475
76+ แต่เราไม่มี jwt secret key สำหรับใช้ sign token แล้วเราจะหามันได้ยังไง ? คำตอบก็คือ ** bruteforce** ยังไงหล่ะ
10577ก่อนอื่นเราต้องไปเอา Jwt token ของเรามาก่อน ซึ่งจะอยู่ใน cookies
10678
10779![ ] ( https://cdn-images-1.medium.com/max/800/1*pFCpW3nPwieQsrVl37GpHw.png )
10880
10981และเราจะใช้ hashcat สำหรับ brutefoce เพื่อหา Jwt secret key
11082
83+ ```
11184hashcat -a 0 -m 16500 "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6ImI4MTk0M2JhLWQxYzUtNDk1YS04NDI3LTQ3MTFjMzkyNTZiZiJ9.Rlk_a69lx16hNhwn4nBfRxhiMGmEDoPIcxfr1_7JdH8" /usr/share/wordlists/rockyou.txt
85+ ```
11286
11387![ ] ( https://cdn-images-1.medium.com/max/800/1*iEY26e5EwWmYuby84foSmQ.png )
11488
0 commit comments