Xác thực dữ liệu để ngăn chặn các cuộc tấn công web: Hacks đầu vào

0
4

Các trang web và ứng dụng nổi tiếng với việc sử dụng thực tế bất kỳ loại đầu vào nào, giả định rằng nó hợp lệ và xử lý thêm. Không xác thực đầu vào là một trong những sai lầm lớn nhất mà các nhà phát triển web có thể mắc phải và là một trong những công cụ tốt nhất trong bộ công cụ tin tặc.

Một số cuộc tấn công chèn dữ liệu không đúng định dạng – thường, quá nhiều lần – có thể chạy trên một trang web hoặc ứng dụng, có thể gây nhầm lẫn cho hệ thống và khiến nó tiết lộ quá nhiều thông tin cho tin tặc. Các cuộc tấn công đầu vào cũng có thể giúp kẻ xấu dễ dàng thu thập thông tin nhạy cảm từ các trình duyệt web của người dùng không nghi ngờ.

Bộ đệm tràn ra hack

Một trong những cuộc tấn công đầu vào nghiêm trọng nhất là lỗi tràn bộ đệm nhắm mục tiêu cụ thể vào các trường đầu vào trong các ứng dụng web. Ví dụ, một ứng dụng báo cáo tín dụng có thể xác thực người dùng trước khi họ được phép gửi dữ liệu hoặc lấy báo cáo. Biểu mẫu đăng nhập sử dụng mã sau đây để lấy ID người dùng với đầu vào tối đa 12 ký tự, được biểu thị bằng maxsizebiến:

<form name="webauthenticate" action="www.your_web_app.com/
login.cgi" method="POST">
<input type="text" name="inputname" maxsize="12">

Một phiên đăng nhập thông thường bao gồm tên đăng nhập hợp lệ từ 12 ký tự trở xuống, nhưng maxsizebiến có thể được thay đổi thành một cái gì đó rất lớn, chẳng hạn như 100 hoặc thậm chí 1.000. Sau đó, kẻ tấn công có thể nhập dữ liệu không có thật vào trường đăng nhập. Điều gì xảy ra tiếp theo là cuộc gọi của bất cứ ai. Ứng dụng có thể bị treo, ghi đè lên dữ liệu khác trong bộ nhớ hoặc làm sập máy chủ.

Một cách đơn giản để thao tác với một biến như vậy là chuyển qua trình trang bằng cách sử dụng proxy web, chẳng hạn như được tích hợp trong máy quét lỗ hổng web thương mại hoặc proxy Burp miễn phí .

Chú ý: Các proxy web nằm giữa trình duyệt web của bạn và máy chủ mà bạn đang kiểm tra và cho phép bạn thao tác thông tin được gửi đến máy chủ. Để bắt đầu, bạn phải định cấu hình trình duyệt web của mình để sử dụng proxy cục bộ 127.0.0.1 trên cổng 8080. Để truy cập proxy này trong Mozilla Firefox, chọn Công cụ → Tùy chọn, cuộn xuống cuối hộp thoại Tùy chọn và chọn Cài đặt trong Phần Proxy mạng, Tiếp theo, chọn nút radio Cấu hình proxy thủ công. Trong Internet Explorer, nhấp vào biểu tượng bánh răng và chọn Tùy chọn Internet từ menu thả xuống; trong hộp thoại kết quả, nhấp vào nút Cài đặt mạng LAN trong phần Kết nối, chọn Sử dụng máy chủ proxy cho nút radio LAN của bạn và nhập tên máy chủ / địa chỉ IP và số cổng thích hợp.

Tất cả những gì bạn phải làm là thay đổi độ dài trường của biến trước khi trình duyệt của bạn gửi trang và trang được gửi bằng bất kỳ độ dài nào bạn đưa ra. Bạn cũng có thể sử dụng bổ trợ Firefox Web Developer để xóa độ dài trường biểu mẫu tối đa được xác định trong biểu mẫu web.

Hack thao tác URL

Một cuộc tấn công đầu vào tự động thao túng một URL và gửi nó trở lại máy chủ, yêu cầu ứng dụng web thực hiện nhiều việc khác nhau, chẳng hạn như chuyển hướng đến các trang web của bên thứ ba hoặc tải các tệp nhạy cảm từ máy chủ. Bao gồm tập tin địa phương là một trong những lỗ hổng như vậy. Lỗ hổng này xảy ra khi ứng dụng web chấp nhận đầu vào dựa trên URL và trả về nội dung của tệp đã chỉ định cho người dùng, như trong ví dụ sau về việc vi phạm cố gắngpasswd tệp của máy chủ Linux :

https://www.your_web_app.com/onlineserv/Checkout.cgi?state=
detail&language=english&imageSet=/../..//../..//../..//../
..///etc/passwd

Điều quan trọng cần lưu ý là hầu hết các nền tảng ứng dụng gần đây, chẳng hạn như ASP.NET và Java, khá tốt về việc không cho phép thao tác các biến URL như vậy, thỉnh thoảng lỗ hổng này vẫn có thể được tìm thấy.

Các liên kết sau đây minh họa một ví dụ khác về thủ thuật URL được gọi là chuyển hướng URL :

http://www.your_web_app.com/error.aspx?URL=http://www.
bad~site.com&ERROR=Path+'OPTIONS'+is+forbidden.
http://www.your_web_app.com/exit.asp?URL=http://www.
bad~site.com

Trong cả hai tình huống, kẻ tấn công có thể khai thác lỗ hổng bằng cách gửi liên kết đến những người dùng không ngờ tới qua email hoặc bằng cách đăng nó lên một trang web. Khi người dùng nhấp vào liên kết, họ có thể được chuyển hướng đến trang web bên thứ ba độc hại có chứa phần mềm độc hại hoặc tài liệu không phù hợp.

Chú ý: Nếu bạn không có gì ngoài thời gian trên tay, bạn có thể phát hiện ra các loại lỗ hổng này theo cách thủ công. Tuy nhiên, vì lợi ích của độ chính xác (và sự tỉnh táo), các cuộc tấn công này được thực hiện tốt nhất bằng cách chạy trình quét lỗ hổng web, có thể phát hiện điểm yếu bằng cách gửi hàng trăm lần lặp URL đến hệ thống web rất nhanh.

Ẩn hack thao tác trường

Một số trang web và ứng dụng nhúng các trường ẩn trong các trang web để truyền thông tin trạng thái giữa máy chủ web và trình duyệt. Các trường ẩn được biểu diễn dưới dạng web dưới dạng <input type = che giấu ẩn>. Do thực tiễn mã hóa kém, các trường ẩn thường chứa thông tin bí mật (chẳng hạn như giá sản phẩm trên trang web thương mại điện tử) chỉ nên được lưu trữ trong cơ sở dữ liệu phụ trợ. Người dùng không nên nhìn thấy các trường ẩn (do đó, tên), nhưng kẻ tấn công tò mò có thể khám phá và khai thác chúng. Để tự làm như vậy, hãy làm theo các bước sau:

  1. Xem mã nguồn HTML.
    Để xem mã nguồn trong Internet Explorer và Firefox, nhấp chuột phải vào trang và chọn Xem nguồn hoặc Xem nguồn trang từ menu ngữ cảnh.
  2. Thay đổi thông tin được lưu trữ trong các lĩnh vực này. Một tin tặc có thể thay đổi giá từ $ 100 đến $ 10, ví dụ.
  3. Đăng lại trang đến máy chủ. Bước này cho phép kẻ tấn công có được lợi ích bất chính, chẳng hạn như giá thấp hơn khi mua web.

Chú ý: Sử dụng các trường ẩn cho cơ chế xác thực (đăng nhập) có thể đặc biệt nguy hiểm. Một hacker đạo đức đã từng gặp một quá trình khóa kẻ xâm nhập xác thực đa yếu tố dựa vào một trường ẩn để theo dõi số lần người dùng cố gắng đăng nhập. Biến này có thể được đặt lại về 0 cho mỗi lần đăng nhập và do đó tạo điều kiện cho một từ điển kịch bản hoặc vũ phu -Force tấn công đăng nhập. Điều hơi mỉa mai là kiểm soát an ninh được thiết kế để ngăn chặn các cuộc tấn công của kẻ xâm nhập dễ bị tấn công bởi kẻ xâm nhập.

Một số công cụ, chẳng hạn như proxy đi kèm với máy quét lỗ hổng web thương mại và Burp Proxy, có thể dễ dàng thao tác các trường ẩn. Nếu bạn đi qua các trường ẩn, bạn có thể thử thao tác với chúng để xem những gì có thể được thực hiện. Nó đơn giản như vậy.

Code injection and SQL injection hacks

Tương tự như các cuộc tấn công thao tác URL, các cuộc tấn công tiêm mã thao tác các biến hệ thống cụ thể. Đây là một ví dụ:

http://www.your_web_app.com/script.php?info_variable=X

Những kẻ tấn công nhìn thấy biến này có thể bắt đầu nhập các dữ liệu khác nhau vào info_variabletrường, thay đổi Xthành một trong những dòng sau:

http://www.your_web_app.com/script.php?info_variable=Y
http://www.your_web_app.com/script.php?info_variable=123XYZ/pre>
This example is rudimentary. Nonetheless, the web application may respond in a way that gives hackers more information than they want, such as detailed errors or access to data fields that they're not authorized to access. The invalid input may also cause the application or the server to hang. Attackers can use this information to find out more about the web application and its inner workings, which can lead to a serious system compromise.

Chú ý: Nếu các biến HTTP được truyền vào URL và có thể truy cập dễ dàng, thì đó chỉ là vấn đề thời gian trước khi ai đó khai thác ứng dụng web của bạn.

Một ứng dụng web được sử dụng để quản lý thông tin cá nhân một khi trình bày chính vấn đề này. Vì một “name”tham số là một phần của URL, bất kỳ ai cũng có thể có quyền truy cập vào thông tin cá nhân của người khác bằng cách thay đổi “name”giá trị. Nếu bao gồm URL “name=kbeaver”, một thay đổi đơn giản “name=jsmith”sẽ hiển thị địa chỉ nhà của J. Smith, số An sinh xã hội, v.v. Ôi! Quản trị viên hệ thống đã được cảnh báo về lỗ hổng này. Sau vài phút từ chối, anh ta đồng ý rằng đó thực sự là một vấn đề và tiến hành làm việc với các nhà phát triển để khắc phục nó.

Việc tiêm mã cũng có thể được thực hiện đối với các cơ sở dữ liệu SQL back-end trong một cuộc tấn công được gọi là SQL tiêm. Các tin tặc độc hại chèn các câu lệnh SQL – chẳng hạn như CONNECT, SELECT và UNION – vào các yêu cầu URL để cố gắng kết nối và trích xuất thông tin từ cơ sở dữ liệu SQL mà ứng dụng web tương tác. Việc tiêm SQL được thực hiện do sự thất bại của các ứng dụng để xác nhận hợp lệ đầu vào kết hợp với các lỗi thông tin được trả về từ các máy chủ cơ sở dữ liệu và máy chủ web.

Hai loại SQL tiêm chung là tiêu chuẩn (còn được gọi là dựa trên lỗi) và mù. Lỗi SQL dựa trên lỗi được khai thác dựa trên các thông báo lỗi được trả về từ ứng dụng khi thông tin không hợp lệ được nhập vào hệ thống. Việc tiêm SQL mù xảy ra khi thông báo lỗi bị vô hiệu hóa, yêu cầu tin tặc hoặc công cụ tự động đoán xem cơ sở dữ liệu sẽ trả về cái gì và cách nó phản ứng với các cuộc tấn công tiêm chích.

Gợi ý thêm: Một cách nhanh chóng (mặc dù không phải lúc nào cũng đáng tin cậy) để xác định xem ứng dụng web của bạn có dễ bị tấn công SQL hay không là nhập một dấu nháy đơn (‘) trong các trường mẫu web của bạn hoặc ở cuối URL. Nếu một lỗi SQL được trả về, tỷ lệ cược là tốt khi có SQL tiêm.

Bạn chắc chắn sẽ nhận được những gì bạn phải trả khi quét và phát hiện ra các lỗ hổng SQL bằng trình quét lỗ hổng web. Cũng như thao tác URL, tốt hơn hết là bạn nên chạy trình quét lỗ hổng web để kiểm tra SQL SQL, cho phép kẻ tấn công tiêm các truy vấn cơ sở dữ liệu và các lệnh thông qua trang dễ bị tấn công vào cơ sở dữ liệu phía sau. Hình ảnh dưới đây cho thấy nhiều lỗ hổng SQL tiêm được phát hiện bởi trình quét lỗ hổng Netsparker .

Điều thú vị về Netsparker là sau khi giải phóng SQL SQL, bạn có thể sử dụng công cụ tích hợp Thực thi các lệnh SQL để tiếp tục thể hiện điểm yếu. Một màn hình nóng của SQL tiêm hoạt động cũng tốt như lỗ hổng và kiểm tra thâm nhập được!

Khi bạn phát hiện ra các lỗ hổng SQL SQL, bạn có thể có xu hướng dừng lại ở đó mà không cố gắng khai thác điểm yếu. Tốt rồi. Nhưng bạn cũng có thể thấy bạn có thể nhận được bao xa. Hãy thử sử dụng bất kỳ khả năng tiêm SQL nào được tích hợp trong trình quét lỗ hổng web của bạn nếu có thể để bạn có thể chứng minh lỗ hổng cho quản lý.

Nếu ngân sách của bạn bị hạn chế, hãy cân nhắc sử dụng một công cụ tiêm SQL miễn phí, chẳng hạn như SQL Power Injection hoặc SQL Add-on SQL .

Hack kịch bản chéo trang

Tập lệnh chéo trang (XSS) có lẽ là lỗ hổng web phổ biến nhất và phổ biến nhất xảy ra khi một trang web hiển thị đầu vào của người dùng – thường là thông qua JavaScript – không được xác thực hợp lệ. Một tin tặc có thể lợi dụng sự vắng mặt của bộ lọc đầu vào và khiến một trang web thực thi mã độc trên bất kỳ máy tính nào xem trang.

Một cuộc tấn công XSS có thể hiển thị trang đăng nhập ID và mật khẩu người dùng từ một trang web lừa đảo khác, ví dụ. Nếu người dùng vô tình nhập ID người dùng và mật khẩu của họ vào trang đăng nhập, ID người dùng và mật khẩu sẽ được nhập vào tệp nhật ký máy chủ web của hacker. Mã độc khác có thể được gửi đến máy tính của nạn nhân và chạy với các đặc quyền bảo mật tương tự như trình duyệt web hoặc ứng dụng email đang xem nó trên hệ thống. Mã độc có thể cung cấp cho hacker một quyền truy cập đọc / ghi đầy đủ vào cookie trình duyệt hoặc tệp lịch sử trình duyệt hoặc thậm chí cho phép anh ta tải xuống hoặc cài đặt phần mềm độc hại.

Một thử nghiệm đơn giản cho thấy ứng dụng web của bạn có dễ bị tấn công hay không XSS. Tìm bất kỳ trường nào trong ứng dụng chấp nhận đầu vào của người dùng (chẳng hạn như trong biểu mẫu đăng nhập hoặc tìm kiếm) và nhập câu lệnh JavaScript sau:

&lt;script&gt;alert('XSS')&lt;/script&gt;

Nếu một cửa sổ bật lên đọc XSS, ứng dụng dễ bị tấn công. Các XSS-Me Firefox Add-on là một cách mới để thử nghiệm cho lỗ hổng này là tốt

Có nhiều cách khác để khai thác XSS, chẳng hạn như những cách yêu cầu tương tác người dùng thông qua onmouseoverchức năng JavaScript . Như với SQL tiêm, bạn thực sự cần sử dụng một máy quét tự động để kiểm tra XSS. Cả Netsparker và Acunetix Web Vulnerability Scanner đều làm rất tốt việc tìm kiếm XSS, nhưng họ có xu hướng tìm các vấn đề XSS khác nhau – một chi tiết nêu bật tầm quan trọng của việc sử dụng nhiều máy quét khi bạn có thể. Kiểm tra bên dưới để xem một số phát hiện XSS mẫu trong Máy quét lỗ hổng Web Acunetix

Một trình quét lỗ hổng web khác rất tốt trong việc phát hiện ra XSS mà nhiều máy quét khác sẽ không tìm thấy là AppSpider (trước đây là NTOSpider) từ Rapid7. AppSpider hoạt động tốt hơn các máy quét khác trong việc thực hiện quét xác thực đối với các ứng dụng sử dụng hệ thống xác thực đa yếu tố. AppSpider nên có trên radar của bạn. Đừng bao giờ quên: Khi nói đến lỗ hổng web, càng nhiều máy quét thì càng tốt! Nếu bất cứ điều gì, tin tặc có thể sẽ sử dụng một trong những máy quét mà bạn không sử dụng.

Biện pháp đối phó với các cuộc tấn công đầu vào

Trang web và ứng dụng phải lọc dữ liệu đến. Các trang web và ứng dụng phải đảm bảo rằng dữ liệu được nhập phù hợp với các tham số mà ứng dụng đang mong đợi. Nếu dữ liệu không khớp, ứng dụng sẽ phát sinh lỗi hoặc quay lại trang trước. Trong mọi trường hợp, ứng dụng nên chấp nhận dữ liệu rác, xử lý và phản ánh nó cho người dùng.

Thực hành mã hóa phần mềm an toàn có thể loại bỏ tất cả các vấn đề này nếu chúng là những phần quan trọng của quá trình phát triển. Các nhà phát triển nên biết và thực hiện các thực tiễn tốt nhất này để tránh bị hack đầu vào:

  • Không bao giờ trình bày các giá trị tĩnh mà trình duyệt web và người dùng không cần phải xem. Thay vào đó, dữ liệu này nên được triển khai trong ứng dụng web ở phía máy chủ và chỉ được truy xuất từ ​​cơ sở dữ liệu khi cần.
  • Lọc <script>các thẻ từ các trường đầu vào.
  • Vô hiệu hóa máy chủ web chi tiết và thông báo lỗi liên quan đến cơ sở dữ liệu nếu có thể.

Xem thêm: Cách sử dụng JUnit trong Java

Tham khảo: Khóa học Java Fullstack tại Hà Nội tốt nhất hiện nay

LEAVE A REPLY

Please enter your comment!
Please enter your name here