内容来自 coffinxp 的分享。
方法1:使用 Shodan 和 Nuclei 进行批量扫描
-
找到你的目标 CVE:首先,选择一个你想要寻找的 CVE。
-
前往 Shodan,使用与产品或 CVE 相关的特定搜索 Dork,Shodan 会立即显示所有查询到的互联网连接设备
- IP 地址分析:在结果页面上,点击“More”选项打开Facet Analysis 标签页。然后选择“ip”选项,这样就可以按 IP 地址整齐地组织所有结果。
- 提取和扫描:创建一个自定义书签,它会自动从 Shodan 结果中提取所有 IP 地址,并将它们下载为.txt 文件。脚本如下:
- 针对IP地址:
javascript: (function() {
var ipElements = document.querySelectorAll('strong');
var ips = [];
ipElements.forEach(function(e) {
ips.push(e.innerHTML.replace(/["']/g, ''))
});
var ipsString = ips.join('\n');
var a = document.createElement('a');
a.href = 'data:text/plain;charset=utf-8,' + encodeURIComponent(ipsString);
a.download = 'ip.txt';
document.body.appendChild(a);
a.click();
})();
- 针对域名:
javascript: (function() {
var ipElements = document.querySelectorAll('strong'),
ips = [],
domains = [];
ipElements.forEach(function(e) {
var t = e.innerHTML.replace(/['"]/g, '').trim();
/^(\d{1,3}\.){3}\d{1,3}$/.test(t) ? ips.push(t) : /^(?!\d+\.)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(t) && domains.push(t)
});
var dataString = %27IPs: \n % 27 + ips.join( % 27\n % 27) + %27\n\nDomains: \n % 27 + domains.join( % 27\n % 27),
a = document.createElement( % 27a % 27);
a.href = %27data: text / plain;
charset = utf - 8,
%27 + encodeURIComponent(dataString);
a.download = %27domains.txt % 27;
document.body.appendChild(a);
a.click();
})();
一旦有了文件,就可以直接将其输入 Nuclei 进行自动扫描,只需将标签或模板名称替换为 CVE 相关的名称,几分钟后,Nuclei 将扫描整个列表并突出显示那些易受攻击的主机。
cat ip.txt | nuclei -tags grafana -bs 50 -c 50 -es info
方法2:发现隐藏在明处的那些“秘密”
开发者经常禁用表单输入、按钮或隐藏整个页面部分,以为这样很安全,下面的脚本可以帮助你绕过这些客户端限制:
javascript: (function() {
document.querySelectorAll('[disabled],[readonly]').forEach(el = >{
el.removeAttribute('disabled');
el.removeAttribute('readonly');
});
document.querySelectorAll('[style*="display: none"]').forEach(el = >{
el.style.display = 'block';
});
document.querySelectorAll('[style*="pointer-events: none"]').forEach(el = >{
el.style.pointerEvents = 'auto';
el.style.opacity = '1';
});
alert('Disabled, readonly, and hidden elements are now active!');
})();
可以将一个实用的脚本集成到Lost Uncover工具中,从而实现自动查找和修改网页上的这些元素:
javascript: (function() {
if (document.getElementById('lostsec-scanner')) return;
let e = !1,
t = [],
n = document.createElement('div');
n.id = 'lostsec-scanner';
n.style = 'position:fixed;bottom:0;left:0;width:100%;height:350px;background:#181818;color:#00bcd4;z-index:999999;padding:20px;font-family:monospace;box-shadow:0 -2px 10px rgba(0,0,0,0.7);border-top:2px solid #00bcd4;overflow:hidden;';
let o = document.createElement('div');
o.style = 'position:absolute;top:0;left:0;width:100%;height:10px;background:#222;cursor:ns-resize;';
n.appendChild(o);
let i = !1,
a = 0,
l = 0;
o.addEventListener('mousedown', r => {
i = !0;
a = r.clientY;
l = n.offsetHeight;
r.preventDefault();
});
function d(r) {
if (i) {
let d = l - (r.clientY - a);
d = Math.max(200, Math.min(d, window.innerHeight * .9));
n.style.height = d + 'px';
let s = document.getElementById('results-wrapper');
s && (s.style.maxHeight = d - 140 + 'px');
}
}
function c() {
i = !1;
}
document.addEventListener('mousemove', d);
document.addEventListener('mouseup', c);
let s = document.createElement('div');
s.textContent = '❌';
s.style = 'posi...x 0;padding:5px;background:#333;border-radius:3px;word-break:break-all;';
t.textContent = e;
k.appendChild(t);
function U(e) {
return e.filter(t => {
if (b.checked && !t.includes(x)) return !1;
let n = v.value.toLowerCase();
return !(n && !t.toLowerCase().includes(n));
});
}
let C = [];
v.addEventListener('input', () => T(C));
b.addEventListener('change', () => T(C));
h.addEventListener('click', () => {
let e = U(C);
navigator.clipboard.writeText(e.join('\n')).then(() => alert('✅ URLs copied!'));
});
g.addEventListener('click', () => {
let e = U(C),
t = new Blob([e.join('\n')]),
n = document.createElement('a');
n.href = URL.createObjectURL(t);
n.download = 'lostsec_urls.txt';
n.click();
});
function init() {
w.textContent = 'Scanning...';
domUrls = L();
updateResults();
scanExternalScripts().then(() => {
if (e) return;
w.innerHTML = `<div style="margin:10px 0;color:#00bcd4">✅Scan complete! Found ${C.length} unique URLs & Endpoints on ${x}</div>`;
T(C);
}).catch(n => {
if (e) return;
console.error(n);
w.textContent = '❌ Error during scan. Check console for details.';
});
}
init();
})();
你可以使用下面的 HTML 文件来测试脚本,只需打开文件,然后使用“Lost Uncover → Unhide Element”选项:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Bookmarklet Test Page</title>
<style>
body {
background-color: black;
color: #00ff88;
font-family: monospace;
padding: 20px;
}
input, button {
font-family: monospace;
margin-top: 5px;
margin-bottom: 20px;
padding: 5px;
}
.hidden {
display: none;
}
.grayed {
pointer-events: none;
opacity: 0.4;
}
</style>
</head>
<body>
<h1>Bookmarklet Test Page</h1>
<h2>Disabled Input</h2>
<label>Email (Disabled):<br>
<input type="text" value="[email protected]" disabled>
</label>
<h2>Readonly Input</h2>
<label>Username (Readonly):<br>
<input type="text" value="readonly_user123" readonly>
</label>
<h2>Hidden Button</h2>
<button class="hidden" id="secret-btn">Secret Admin Button</button>
<h2>Grayed-Out Section</h2>
<div class="grayed">Premium Content</div>
</body>
</html>
当点击“Unhide Element”后,它会显示禁用输入、只读输入、隐藏按钮、灰色区域等类似元素。
你也可以使用该脚本快速扫描任何网站的 URL、端点和隐藏信息,直接从浏览器中操作即可。
方法3:大规模URL发现的基础
第一步是获取目标网站的全部存在地图,可以使用了 AlienVault 的开放威胁交换(OTX)脚本进行查询。
./alienvault.sh domain.com
- 使用 AlienVault 脚本生成 URL 列表
- 使用 gf 模式(如 gf xss 或 gf sqli)筛选有趣的参数
- 使用类似 uro 的工具删除重复项
最终命令看起来像下面那样,使我们得到一个干净的可疑漏洞 URL 列表:
cat all_urls.txt | gf xss | uro > unique_xss_targets.txt
cat all_urls.txt | gf sqli | uro > unique_xss_targets.txt
cat all_urls.txt | gf idor | uro > unique_xss_targets.txt
cat all_urls.txt | gf ssrf | uro > unique_xss_targets.txt
cat all_urls.txt | gf redirect | uro > unique_xss_targets.txt
GF参数合集:
发现隐藏的子域和端点
URLScan.io 是侦察阶段的另一个神器,使用脚本自动化查询可以节省大量时间。这个工具非常适合两大任务:
-
查找子域名:你可以在“子域名”模式下运行脚本,以获取所有相关子域名的列表
-
发现更多 URL:在“URLs”模式下,它会获取另一组独特的 URL,你可以将这些添加到从 AlienVault 获得的列表中,或者单独使用 Nuclei DAST 扫描它们。
python urlscan.py -d redbull.com --mode urls
python urlscan.py -d redbull.com --mode subdomains
VirusTotal 脚本
使用 Orwa 编写的脚本查询 VirusTotal,你通常会有一些惊人的发现。
因为 VirusTotal 分析了全球用户提交的文件和 URL,其数据库有时会包含与目标相关的暴露秘密,使用以下脚本通常可以找到:
- 邮箱和密码组合
- 内部 API 密钥
- 密码重置令牌和其它敏感链接
./virustotal.sh domain.com
原文:https://infosecwriteups.com/my-5-minute-workflow-to-find-bugs-on-any-website-c20075320c96