January 2022

Ai cũng có lúc mắc sai lầm #2

Tl;dr: như tiêu đề =]]]]


Post gần nhất của mình có mấy bạn vô comment bảo là chia sẻ thêm về skill recon. Thực ra mình không giỏi recon cho lắm, mà nói thẳng ra là chẳng giỏi gì cả. Hên hên tìm được mấy lỗi vớ vẩn, có một bài là search GitHub làm hoài rồi viết blog xạo xạo chơi vậy thôi, chứ biết hack biết recon gì đâu.

Hơi lan man tí, từ lúc chuyển qua “làm” developer, mình biết thêm nhiều thứ mà có lẽ nếu chỉ làm consultant/pentester thì mình khó mà có cơ hội biết được. Ví dụ như việc trên đời này có một thứ gọi là Selenium. Công cụ này thì chắc đa số bạn đọc blog mình đang làm việc trong mảng security không biết, còn các bạn developer/tester thì lại rành. Nhắc đến Selenium là nhắc đến automation, vì thường Selenium được sử dụng để automate các thao tác với trình duyệt, giả lập lại các tương tác trên trình duyệt như một người dùng thực sự, từ open link, input data,…. Thử tưởng tượng nhập tay vài trăm cái account hay mở vài nghìn cái link bằng tay, chắc chẳng ai dám đi làm tester. Thay vì manual như vậy, tester viết test script, có Selenium tương tác với trình duyệt hộ, tiện.

Nhưng mà nói chung là trên đời này tool nào cũng vậy, có xịn đến đâu cũng cần có người vận hành. Muốn Selenium chạy được thì cần test script, test script muốn chạy đúng cần có data, data thì do người viết (tester) cung cấp. Mà đã là con người thì ai cũng có lúc mắc sai lầm. Developer hay tester cũng như nhau, cứ push code lên GitHub mà để public thì cũng có ngày bị xiên.

Tìm những thứ này không khó, quan trọng là tìm đúng keyword. Cứ đè hàm sendKeys() của Selenium và field txtPassword hoặc password mà gõ thì thế nào cũng ra.

Thường thường, đa số những kết quả tìm được không có ý nghĩa gì lắm, tuy nhiên cũng có lần mình vào được một dashboard quản lý SMS brandname.

Cá nhân mình nghĩ mấy thể loại tấn công SMS brandname rồi phishing gì đó coi vậy mà hiệu quả phết, bằng chứng là ngày nào lên Facebook cũng thấy có người bị lừa mất tiền, dù ngày nào cũng thấy mấy ngân hàng nhắn tin cảnh báo lừa đảo.


Một sai lầm phổ biến khác của developer là quên không tắt debug, hoặc không tắt các development tools khi release. Lỗi này tưởng chừng đơn giản, nhưng nhiều khi lại dẫn đến những hệ quả cực kỳ nghiêm trọng. Case dưới đây là một ví dụ. Developer không tắt symfony profiler, một development tool cho phép xem nội dung các request. Chỉ cần thêm /_profiler/ vào sau domain là xong (nhớ add vào wordlist nha =]]):

Tất cả những gì attacker cần làm khi đã đến đây rồi chỉ là… chờ đợi. Như trong hình, request login có status 302 kia khả năng cao sẽ có username và password của user/admin. Click vào token tương ứng với request kia để xem:

Rõ ràng, có username và password từ trên trời rơi xuống thế này thì ngu gì mà không login chứ =]]]]

Hay như trường hợp bật debug này (sẵn thêm luôn /debug/ vô wordlist nữa nha =]]):

Ca này còn nguy hiểm hơn, khi attacker có thể bắt được request có chứa các HTTP headers quan trọng, như Authorization hay Token,… và dùng các thông tin có được để có thể truy cập trái phép vào các tài khoản người dùng khác. Thêm nữa, ứng dụng đang dùng Yii 2 version cũ, nghe đâu là có RCE (link), còn có exploit được không thì mình không biết, hihi.


Mình viết blog cho vui, tuỳ hứng lắm, có hứng thì viết, có bug hay thì viết, không có thì thôi, nên không đảm bảo được tần suất ra bài. Mong bạn đọc thông cảm, và nếu có thể thì tiếp thêm động lực cho mình qua PayPal hoặc MoMo cho mình để tăng tần suất ra bài mới nhé =]]]]

Happy hacking!