Vào dạo quanh 1 vòng không thấy gì thôi thì quyết định dùng dirb để scan directory
ra 1 cái url nè
Câu này bắt đầu giống câu Maximum Courage. Dùng wget và git status kiểm tra thôi!
nhiều file bị xóa ghê
Khôi phục lại tất cả và mở ra xem thử
api.php
contact_process.php
Oh no không file nào chứa flag như bài trên. Hmmmm api.php có nhúng 1 file access.php mà không thấy đâu, maybe là file access.php đã bị xóa từ những lần commit trước đó nữa. Phải tìm hiểu thêm về .git để xem có thể làm gì?!!?!
Xem tổng quan thì trong source có mỗi cái link register bị hidden ra thì không thấy gì.
Vào signup.php đăng ký 1 tài khoản và đăng nhập ngay xem thế nào (không cho đặt tên là admin => đã có 1 username admin)
Trong lúc đăng nhập mình có thử cố sửa lại một số trường thành admin và userid=1
header request chưa bị chỉnh sửa
Mình thử nhiều lần sửa các trường sao cho giống admin nhưng không thành.
Vào setting edit profile để đổi password, mình cũng cố thử sửa các trường trước khi gửi đi (cứ gói tin nào gửi đi mình đều sửa userid=1)
sửa cho giống admin để hy vọng mình vừa đổi password của admin
OHHHH thành công nè
Vậy là mình đã đổi pass thành công, thử đăng nhập với username/password là admin/admin.
YOOOOO Ơn giời flag đây rồi
GIẢI THÍCH: Theo cách suy nghĩ của mình thì session của mỗi user được lưu ở phía server thì khi đăng nhập hoặc reload lại trang đều sẽ được kiểm tra có trùng khớp giữa session lưu ở server và PHPSESSID trong cookie phía client không. Nhưng lúc đổi pass bằng cách nào đó ông dev này không kiểm tra session.
Nhìn tổng quan hong có gì để khai thác. Dùng dirb để scan directory của trang này.
scan được 1 url bị direct nè
Truy cập vào link xem thế nào.
thật sự bị direct qua đây
Tra xem các thể loại vulr liên quan đến directory hoặc về file của nginx. Một keyword đặc biệt Directory traversal
GIẢI THÍCH: config nginx alias nếu không cẩn thận quên mất 1 dấu / sẽ là lỗ hổng để attacker tấn công khai thác. Cụ thể hơn sau url chưa directive define rõ thêm ../ sẽ đưa về thư mục gốc linux.
Câu này tổng quan ban đầu mình nhìn không có gì đặc biệt, không tim ra được hướng đi
Click vào các mục của navbar thì mình có "linh cảm ông bà nhắc nhở" :"))))))))
Lúc trước code web php thì mình luôn pretty url chứ ít khi để nó cả query string vậy nên là mình khá là có nghi vấn với url đặc biệt ở chỗ truyền giá trị cho param home
Với nghi vấn này mình có tưởng tượng ra trong đầu:
Khi truyền vào giá trị trị gì cho home thì index.php sẽ gọi page với giá trị đó lên qua cácinclude\require\include_once\require_once
Thật may mắn khi tìm được vuln liên qua với keyword LFI php :
Mở burpsuite, thêm trường Cookie và đặt cookie PHPSESSID vào rồi gửi đi!
được 1 hint mới toanh, vào file xem thử
được tận 3 chuỗi giá trị cookie :)) quẹo lựa luôn!
Lựa cái thứ 3, sửa giá trị PHPSESSID rồi gửi đi lần nữa
hint mới nữa nè
Thêm 1 cookie UserInfo giá trị username server cần là admin vào xem sao
ayyaaaa, không thành công rồi
Giờ nhìn lại thì nhớ ra đoạn code ajax phía trên post đến 1 file getcurrentuserinfo.php với phương thức POST và 1 param là PHPSESSID với giá trị là chuỗi ký tự vừa lụm được ở trên.
oke done, giờ có username rồi, bỏ vào cookie UserInfo thôi!