Biểu mẫu đăng nhập bỏ qua Php
Ban đầu tôi đã đăng video này lên YouTube, nhưng cuối cùng họ đã cấm nó khỏi nền tảng của họ. Đây là video phổ biến nhất của tôi vào thời điểm đó, vì vậy tôi muốn chia sẻ nó ở đây. ) Không chần chừ gì nữa…video hack mà YouTube không muốn bạn xem Vì vậy, bạn có một trang web có biểu mẫu đăng nhập và bạn muốn tìm hiểu cách bạn có thể sử dụng SQL injection để đăng nhập thành công mà không cần biết tên người dùng hoặc mật khẩu hợp lệ. Đó chính xác là những gì tôi sẽ chỉ cho bạn cách thực hiện trong bài đăng này Tuyên bố miễn trừ trách nhiệm nhanh. không làm điều này với các ứng dụng trừ khi bạn có quyền. Điều này nhằm dạy cho bạn những kỹ thuật này để bạn có thể thực hiện chúng đối với (các) ứng dụng của riêng bạn mà bạn có quyền, điều này không chỉ hoàn toàn hợp pháp mà còn rất được khuyến khích. Nếu có lỗ hổng trong ứng dụng của bạn, bạn muốn tìm thấy chúng trước khi tác nhân độc hại thực hiện. Vì vậy, làm điều này với các ứng dụng mà bạn không sở hữu hoặc không có quyền là không nên, nhưng làm điều này với các ứng dụng của riêng bạn hoặc ứng dụng mà bạn có quyền thực hiện, chẳng hạn như đối với các chương trình tiền thưởng lỗi, pentest, v.v.. là một vấn đề lớn. Sử dụng tự động hóaCó một công cụ cực mạnh gọi là sqlmap mà tôi sẽ sử dụng. Công cụ này được xây dựng theo đúng nghĩa đen như một công cụ kiểm tra thâm nhập để tự động hóa quá trình tìm và khai thác các lỗ hổng SQL injection, sau đó thực sự chiếm lấy cơ sở dữ liệu và máy chủ. Vì vậy, nếu bạn chưa bao giờ sử dụng sqlmap trước đây, chắc chắn hãy tiếp tục sử dụng để tôi có thể chỉ cho bạn cách nó có thể giúp tự động hóa việc tìm kiếm các lệnh tiêm SQL Tuy nhiên, xin lưu ý rằng bạn không cần phải sử dụng công cụ — bạn cũng có thể thực hiện thủ công Nếu bạn muốn xem bản trình diễn như thế này được thực hiện thủ công thay vì sử dụng công cụ tự động như sqlmap, hãy cho tôi biết trong phần nhận xét bên dưới. Tôi thực sự đã chứng minh điều đó trong các cuộc Tấn công Tiêm chích của mình. Khóa học Hướng dẫn miễn phí, nhưng tôi rất sẵn lòng chia sẻ nó trên đây và YouTube nếu có đủ sự quan tâm ứng dụng mục tiêu ví dụ của chúng tôiĐối với trang web ví dụ mà chúng tôi sẽ tấn công, tôi sẽ sử dụng một ứng dụng có tên là OWASP Juice Shop. Nếu bạn chưa từng sử dụng nó trước đây hoặc nếu bạn muốn làm theo, hãy xem hướng dẫn nhanh của tôi để chỉ cho bạn chính xác cách thiết lập nó giống như tôi đã làm cho bài viết này Juice Shop là một ứng dụng hiện đại sử dụng Angular. js và SQLite làm cơ sở dữ liệu của nó, vì vậy điều đó thực sự khiến mọi thứ thú vị hơn một chút so với việc chúng ta xử lý một ứng dụng cũ Hãy bắt đầu bằng cách chỉ gửi một yêu cầu chung chung. Tôi có ZAP, công cụ proxy mà tôi lựa chọn, nhưng tất nhiên bạn cũng có thể sử dụng Burp cho việc này. Về mặt kỹ thuật, bạn thậm chí không cần một công cụ proxy, nhưng nó chắc chắn có thể giúp mọi việc dễ dàng hơn Chúng ta đang ở trang đăng nhập (http. //máy chủ cục bộ. 3000/#/đăng nhập nếu bạn đang theo dõi) và chúng tôi sẽ tiếp tục và gửi thông tin đăng nhập giả để chúng tôi có thể xem ứng dụng này hoạt động như thế nào
Rõ ràng, chúng tôi không được xác thực vì đây không phải là thông tin đăng nhập hợp lệ, nhưng nếu chúng tôi mở ZAP và tìm yêu cầu đăng nhập của mình, chúng tôi sẽ xem điểm cuối nào chúng tôi muốn cung cấp cho sqlmap và cách chúng tôi muốn định dạng Chúng ta có thể thấy rằng một yêu cầu POST đang được gửi đến điểm cuối này. cd ~/Documents/sqlmap-dev 3Và dữ liệu đang được định dạng như thế này. cd ~/Documents/sqlmap-dev 4Vì vậy, mặc dù điểm cuối của trang web là cd ~/Documents/sqlmap-dev 5, nhưng khi chúng tôi gửi yêu cầu đăng nhập, mã phía máy khách sẽ gửi yêu cầu của chúng tôi đến điểm cuối này. cd ~/Documents/sqlmap-dev 3. Vì vậy, nếu chúng tôi thử kiểm tra điểm cuối cd ~/Documents/sqlmap-dev 7 bằng sqlmap, chúng tôi sẽ không tìm thấy bất kỳ lỗ hổng SQL injection nào. Đó không phải là yêu cầu đăng nhập xử lý điểm cuốiTạo cuộc tấn công sqlmap của chúng tôiVới thông tin này, chúng tôi có đủ để bắt đầu tạo lệnh sqlmap của mình Nếu bạn đang sử dụng Kali hoặc Parrot OS, bạn đã cài đặt sẵn một phiên bản sqlmap. Nếu bạn không phải hoặc nếu bạn muốn sử dụng phiên bản mới nhất, bạn có thể gõ lệnh này git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev Tôi sẽ điều hướng đến nơi tôi đã tải xuống phiên bản sqlmap mới nhất từ GitHub cd ~/Documents/sqlmap-dev Và tôi sẽ sử dụng python3 để thực hiện yêu cầu của mình python3 sqlmap.py -u 'http://localhost:3000/rest/user/login' --data="[email protected]&password=test" --level 5 --risk 3 -f --banner --ignore-code 401 --dbms='sqlite' --technique=B
Tôi sẽ xem nhanh các tùy chọn này để tiết kiệm thời gian, nhưng khóa học của tôi đi sâu hơn và giải thích tất cả các tùy chọn của sqlmap từ trong ra ngoài nếu bạn quan tâm đến nhiều hơn Chúng tôi gửi yêu cầu này và chúng tôi chờ xem điều gì sẽ xảy ra Sau một thời gian, sqlmap sẽ tìm thấy tải trọng thành công và vì chúng tôi đã chuyển các tùy chọn dấu vân tay và biểu ngữ, sqlmap đã liệt kê thông tin DBMS phía sau và phát hiện ra rằng ứng dụng đích đang chạy
Chúng tôi có thể sử dụng thông tin này để tìm kiếm các lỗ hổng, đặc biệt nếu đó không phải là phiên bản mới nhất, đây là thông tin khác mà chúng tôi có thể đưa vào báo cáo của mình ở cuối Tôi sẽ không làm điều đó ở đây, nhưng một lần nữa, hãy cho tôi biết nếu đây là video hoặc bài viết mà bạn muốn xem Tải trọng SQLi thành côngMột điều nữa tôi sẽ làm trước khi chúng ta kết thúc là xem xét tải trọng SQLi thành công mà sqlmap đã tìm thấy Parameter: email (POST) Tham số dễ bị tổn thương là tham số python3 sqlmap.py -u 'http://localhost:3000/rest/user/login' --data="[email protected]&password=test" --level 5 --risk 3 -f --banner --ignore-code 401 --dbms='sqlite' --technique=B 8, loại tiêm thành công là python3 sqlmap.py -u 'http://localhost:3000/rest/user/login' --data="[email protected]&password=test" --level 5 --risk 3 -f --banner --ignore-code 401 --dbms='sqlite' --technique=B 9 và tải trọng là đây' OR NOT 1120=1120-- BGqV Điều thú vị về điều này là về mặt kỹ thuật, tải trọng này không hoạt động, nhưng có một lý do tại sao sqlmap hiển thị nó cho bạn. Hãy để tôi chứng minh Chúng tôi có thể kiểm tra tải trọng này theo cách thủ công qua cả trang web và qua ZAP Trên trang đăng nhập, nếu chúng tôi cố gắng gửi tên người dùng này Parameter: email (POST) 0Chúng tôi không đăng nhập thành công. Vì vậy những gì đang xảy ra? Có một lý do mà tôi dạy bạn cách xem lại cơ sở mã của sqlmap trong khóa học của tôi và đó là vì chúng ta có thể tìm thấy câu trả lời ở đó Nếu chúng tôi truy cập Parameter: email (POST) 1 trong cơ sở mã của sqlmap và tìm kiếm tiêu đề của tải trọng (Parameter: email (POST) 2), chúng tôi sẽ thấy rằng tải trọng này được so sánh với phản hồi từ tải trọng thứ hai
Điều này có nghĩa là tải trọng đầu tiên - một sqlmap đang hiển thị ' OR NOT 1120=1120-- tGvo Đang thực sự được so sánh với kết quả từ tải trọng được sửa đổi một chút này ' OR NOT 1120=-1120-- tGvo (Lưu ý số âm trong tải trọng thứ hai) Bởi vì sqlmap nhận được các kết quả khác nhau từ ứng dụng/cơ sở dữ liệu khi so sánh hai kết quả này, nó biết rằng các tải trọng khác nhau đang kích hoạt một phản hồi khác từ cơ sở dữ liệu, điều đó có nghĩa là nó dễ bị tấn công bởi SQL. Chúng ta không thể thao tác các truy vấn SQL theo cách mà tải trọng nếu cơ sở dữ liệu này không dễ bị SQLi Vì vậy, trọng tải thành công của chúng tôi thực sự là trọng tải so sánh, nhưng đó không phải là trọng tải mà sqlmap hiển thị cho chúng tôi Nếu chúng tôi sử dụng tải trọng so sánh đó, chúng tôi sẽ đăng nhập thành công qua ứng dụng Một lần nữa, chúng ta cũng có thể chạy cái này thông qua ZAP [email protected]' OR NOT 1120=-1120-- tGvo Chúng tôi nhận được thông tin đăng nhập thành công mặc dù đây không phải là thông tin đăng nhập hợp lệ — đó là vì chúng tôi đã tìm thấy tải trọng SQL injection thành công đánh lừa cơ sở dữ liệu nghĩ rằng chúng tôi là người dùng hợp lệ Hiểu cách thức hoạt động của điều này ở cấp truy vấn SQLChúng tôi cũng có thể kiểm tra xem điều này hoạt động như thế nào ở cấp câu lệnh SQL nếu chúng tôi tạo một bản sao giả của cơ sở dữ liệu Juice Shop trong SQL Fiddle CREATE TABLE Users( Đây là những gì chúng ta có thể mong đợi bảng Người dùng sẽ trông như thế nào. Sau đó, chúng tôi thực hiện câu lệnh rằng ứng dụng đang chạy khi chúng tôi đăng nhập cd ~/Documents/sqlmap-dev 0Chúng ta có thể thấy rằng truy vấn này trả về tất cả các bản ghi từ cơ sở dữ liệu, trong khi số dương một không trả về bất kỳ kết quả nào cd ~/Documents/sqlmap-dev 1Nếu cơ sở dữ liệu và ứng dụng không dễ bị tấn công bởi SQLi, thì truy vấn sẽ trông như thế này khi nó được thực thi cd ~/Documents/sqlmap-dev 2Parameter: email (POST) 3 sẽ được coi là một chuỗi đơn giản vì Parameter: email (POST) 4 sẽ không đóng trích dẫn đơn đầu tiênPhần kết luậnVì vậy, chúng tôi đã tìm thấy một trường đầu vào dễ bị tổn thương, chúng tôi đã tìm thấy một điểm cuối dễ bị tổn thương, chúng tôi đã tạo dấu vân tay thành công cho DBMS phía sau và chúng tôi đã tạo thành công một lệnh sqlmap đối với OWASP Juice Shop Như tôi đã nói, tôi đã lướt qua rất nhiều khái niệm và chủ đề trong bài viết này để cho bạn thấy nó được thực hiện như thế nào, nhưng tôi rất vui được đăng thêm video hoặc bài viết đi sâu vào chi tiết hơn nếu bạn thấy điều đó hữu ích. Bạn cũng có thể tìm hiểu nhiều hơn nữa bằng cách xem các khóa học miễn phí của tôi có tên là Tiêm tấn công. Hướng dẫn miễn phí, Hướng dẫn cho người mới bắt đầu về sqlmap hoặc khóa học cao cấp của tôi có tên là Hướng dẫn thực hành về sqlmap để tiêm SQL. Đây là khóa học sqlmap chuyên sâu nhất mà bạn có thể tìm thấy trên Internet |