Thứ Tư, 22 tháng 3, 2017

Kịch bản tấn công vào một hệ thống với lỗ hổng SQL Injection

Đây là một tình huống thực tế và cũng khá phổ biến khi kiểm thử những hệ thống lớn và nhỏ tại VN mà tôi rút ra được, hôm nay cũng chia sẻ một phần nhỏ của quá trình pentest và những hướng xử lý phù hợp khi gặp, hoặc những bạn nào đang bí ý tưởng có thể tham khảo.

1. Hệ thống có website tồn tại lỗ hổng SQLi với quyền quản trị database là user không full quyền.
2. Hệ thống có website tồn tại lỗ hổng SQLi với quyền quản trị database là root hoặc user full quyền.
3. Hướng khắc phục dựa vào những điểm yếu ở trên.


Chúng ta bắt đầu đi vào chi tiết của từng mục.

1. Hệ thống có website tồn tại lỗ hổng SQLi với quyền quản trị database là user không full quyền.
Đây là tình huống gần như là tuyệt đối khi victim tồn tại lỗ hổng SQLi rồi, vì đại đa số các trang web thường sử dụng các dịch vụ share hosting và những nhà cung cấp dịch vụ này hiển nhiên không bao giờ cấp full quyền cho các bạn cả, và lúc này chúng ta sẽ phải tận dụng tối đa những thông tin mà chúng ta thu gom được trong quá trình khai thác lỗi SQLi và trong quá trình thu gom thông tin victim để tổng hợp những thông tin chính yếu, quan trọng để xử lý.

Với trường hợp này thì theo Concobe có lẽ tùy vào mục đích của mỗi người lúc đó sẽ có nhu cầu khai thác tới đâu, vd các bạn chỉ cần select được những thông tin lưu trữ trong database thì đến đây các bạn đã hoàn toàn thành công khi tìm được lỗ hổng SQLi, nhưng với những ai pentest và những ai có nhu cầu cao hơn, muốn chiếm được càng nhiều thông tin và quyền quản trị của victim càng tốt thì sẽ phải tiếp tục sử dụng những thông tin có được.

Mình thường tổng hợp các thông tin và dùng các công cụ để tạo ra một bộ từ điển tạm gọi là sát nhất với những thông tin của victim mà mình có được, sau đó mình sẽ dùng các công cụ để brute-force những mật khẩu của victim dựa vào bộ wordlist mới generate đó.Nếu may mắn thì các bạn có thể có được mật khẩu và đăng nhập vào khu vực quản trị của admin để bắt đầu upload lên server victim cái mà các bạn muốn upload (các bạn hiểu ý tôi rồi chứ :v ).

Còn lỡ như hôm đó các bạn mới ăn cơm hay bún,...với mực thì có lẽ các bạn nên để qua hôm sau hãy tiến hành brute-force vì theo kinh nghiệm của tôi thì nó đen thật đấy =]].Nói chơi cho vui thôi chứ không ra thì chịu chứ biết làm sao giờ?
Nói chứ đến đây cũng không hẳn là tịt hoàn toàn đâu, các bạn cũng nên ngó kỹ qua mã nguồn và cách hoạt động cũng như thông tin trong các table của database đó, biết đâu lại có cách để reset password và mình select ra rồi may mắn mỉm cười thì sao.Nhớ nhé, đừng từ bỏ, chừng nào khó quá thì cho qua thôi.


2. Hệ thống có website tồn tại lỗ hổng SQLi với quyền quản trị database là root hoặc user full quyền.

a. Dùng trình duyệt và câu truy vấn SQLi để ghi file vào hệ thống.
Cũng như trên nhưng ở tình huống này chúng ta có một thông tin giúp quá trình pentest thuận lợi hơn để leo cao hơn bởi user quản lý Database nếu được gán (Grant) full quyền sẽ tương đương với user root của hệ quản trị csdl đó :D và có thêm hai quyền cho phép chúng ta load_file và into outfile.

Với Load_file chúng ta có thể tận dụng thông qua SQLi để load lên nội dung những file tồn tại trên hệ thống đó nếu những file đó không được cấu hình và phân quyền cẩn thận, mà đa phần theo mình thấy là load được, nhất là các file lưu cấu hình CSDL website, lưu cấu hình hệ thống để nắm rõ hệ thống đang sử dụng công nghệ nào và gồm những gì để chúng ta tiến hành ghi file vào hệ thống thông qua into outfile.

Với Into outfile thì sau khi chúng ta có thông tin từ quá trình load_file như đường dẫn các thư mục của website victim, thông tin user và mật khẩu quản trị csdl,... chúng ta dùng chính query để khai thác SQLi và tiến hành ghi file vào hệ thống, rồi chiếm full quyền.

b. Dùng trình duyệt kết hợp với công cụ quản trị CSDL để ghi file vào hệ thống.
Với cách này thì cũng hên xui là chính (có thể không tìm được thư mục cho phép ghi (chmod 777) file thì sao) nhưng mình vẫn nêu ra để các bạn có thêm hướng xử lý nếu gặp phải, sẽ giúp quá trình thực hiện nhanh hơn và linh hoạt hơn so với query trên trình duyệt để ghi file.

Nếu vô tình victim có sử dụng công cụ quản lý CSDL như phpMyAdmin thì các bạn dùng nó kết hợp với thông tin đã load được từ các file config gồm username password quản lý CSDL ở bước 1 để đăng nhập và thực thi các câu truy vấn cho dẽ dàng hơn.Ngoài ra các bạn cũng có thể dùng phpMyAdmin để tiến hành update CSDL để chiếm quyền của user quản trị dễ dàng hơn rồi vào khu vực quản trị website để upload cái cần upload :(.

Nếu vẫn không tồn tại phpMyAdmin thì các bạn cũng nên thử thêm các công cụ hỗ trợ remote connect từ ngoài vào CSDL như Navicat,... để thử vận may, vì đa phần hiện nay mặc định khi cài đặt các trình quản lý CSDL đều không cho phép connect từ ngoài vào vì lý do an toàn, nhưng dù gì cũng cùng đường rồi, thử đi biết đâu lúc cài đặt lão admin lười biếng chọn next, next, yes, yes hết thì sao :D

Tóm lại phần 1 & 2 đơn giản gồm có:
- Lỗi SQL injection.
- Không có full quyền, brute-force và tìm kiếm vận may.
- Có full quyền và dùng load_file và into outfile để upload hàng họ lên.
- Tận dụng những công cụ và thông tin có sẵn để tạo thuận tiện trong quá trình pentest.


3. Hướng khắc phục dựa vào những điểm yếu ở trên.
- Kiểm thử, giám sát và quản lý hệ thống liên tục để tìm kiếm lỗ hổng và fix theo hướng chủ động.
- Cấu hình và phân quyền chặt chẽ nhưng file cấu hình của hệ thống như file config chứa thông tin CSDL website, file cấu hình web, host,...
- Cấu hình và phân quyền chặt chẽ nhưng thư mục của hệ thống đặc biệt không phân quyền 777 cho thư mục để tránh bị ghi file vào.
- Không cho phép kết nối vào CSDL từ bên ngoài, không sử dụng mặc định các công cụ quản lý dữ liệu như phpMyAdmin.
- Ngày ngày thắp nhang khấn vái và làm việc thiện để không bị ai dòm ngó, hoặc có bị dòm ngó cũng được họ thông báo fix lỗi chứ không phá hoại, nhớ cảm ơn và ủng hộ những người đó nếu có điều kiện.

Concobe một chiều rảnh rỗi.

Không có nhận xét nào:

Đăng nhận xét

Cyberpanel và những lỗ hổng bảo mật đã fix.

Tầm đầu tháng 1/2019 mình thấy đi group nào chuyên về thiết kế website, bán hosting,...Của facebook cũng có những comment khuyên nhau sử dụn...