Bạn đang có một list các IP khác nhau nhưng bạn đơn giản là lười nhét chúng vào mấy công cụ như acunetix, nessus….. để scan vulnerability, hôm nay mình sẽ chỉ cho bạn các để dùng google sheet làm việc đó
Nói google sheets scan vulnerability nhưng thực tế là dùng app script để call tới các api scan dịch vụ nha 😀
I: Check port open qua Shodan
Một trong những dịch vụ nổi tiếng nhất chính là shodan.io công cụ này cho phép chúng ta làm được nhiều cái như port đang mở, scan IP……. để làm được cái đó thì bạn có thể dùng cái mã nguồn như dưới đây để check thông tin host
var API_KEY = 'API_Key_dien_vao_day';
/**
* Search port open on shodan API
*/
function SHODAN_HOST(query) {
var k8s = query.includes("k8s");
/** Check cell value, if null exit code */
if (query.length === 0) {
return 'No Data';
} else if (k8s === true) {
return 'Remove k8s In cell';
} else if (k8s === false) {
/** call api check port open */
var url = 'https://api.shodan.io/shodan/host/' + query + '?key=' + API_KEY;
var response = UrlFetchApp.fetch(url);
var data = JSON.parse(response.getContentText());
var xps = encodeURIComponent(data.ports);
return decodeURIComponent(xps);
}
};
Với đoạn code trên khi chạy chúng ta sẽ có kết quả ngon lành như sau

II: Check IP của domain
Khi chúng ta có một list ip thì việc xem IP của chúng thì ta có thể dùng python hoặc script bash ping cái domain đó để lấy IP nhưng với google sheets chúng ta có thể làm đơn giản hơn chỉ là viết hàm =NSLookup(A1), dưới đây là đoạn code làm việc đó thông qua dịch vụ check dns của google cũng khá chuẩn
function NSLookup(domain) {
if (domain.length === 0) {
return 'No Data';
} else {
var api_url = 'https://dns.google.com/resolve'; // Google Pubic DNS API Url
var type = 'A'; // Type of record to fetch, A, AAAA, MX, CNAME, TXT, ANY
var requestUrl = api_url + '?name=' + domain + '&type=' + type; // Build request URL
var response = UrlFetchApp.fetch(requestUrl); // Fetch the reponse from API
var responseText = response.getContentText(); // Get the response text
var json = JSON.parse(responseText); // Parse the JSON text
var answers = json.Answer.map(function(ans) {
return ans.data
}).join('\n'); // Get the values
return answers;
}
}
III: kiểm tra xem domain có truy cập được không
Một số domain có thể bị chặn không truy cập được chúng ta scan được một list domain thì để .lọc ra các trang bị chặn không vào được thì có thể dùng đoạn code như sau để lấy các status của http response
function getStatusCode(url){
if (url.length === 0) {
return 'No Data';
} else {
var options = {
'muteHttpExceptions': true,
'followRedirects': false
};
var url_trimmed = url.trim();
var response = UrlFetchApp.fetch(url_trimmed, options);
return response.getResponseCode();
}
}
Kết hợp 3 đoạn code trên chúng ta đã lọc được kha khá thông tin từ từ các máy chủ, các bạn có thể dựa vào các api của các dịch vụ khác để chạy code giúp quá trình scan đơn giản hơn, nhanh hơn, đây cũng là cách để mình tiết kiệm khá nhiều thời gian và chi phí, trong phần sau nếu rảnh sẽ chia sẻ thêm các đoạn mã và api giúp scan vulnerability còn ngon hơn nữa mà quan trọng là nó free hoặc giá hạt cực rẻ cho mọi người dùng.