渗透测试-利用FOFA语法精准定位漏洞系统
1. 为什么需要精准定位漏洞系统做渗透测试的朋友都知道最头疼的不是找到漏洞而是找到存在漏洞的系统。我刚开始做渗透的时候经常拿着POC脚本却找不到合适的目标就像拿着钥匙却找不到门。后来发现FOFA搜索引擎简直就是渗透测试人员的雷达它能帮我们快速锁定可能存在漏洞的系统。FOFA的强大之处在于它支持各种精细化的搜索语法。举个例子去年某OA系统爆出RCE漏洞时我通过FOFA的title搜索语法10分钟就找到了200多个潜在目标。这种效率是传统扫描工具完全无法比拟的。不过要用好FOFA关键是要掌握提取特征关键词的技巧。2. 从URL路径提取关键特征2.1 识别独特的URL路径URL路径是最直接的特征来源。以H3C iMC系统为例它的登录页面路径通常是/imc/login.jsf。这个路径就像系统的身份证号一样独特。我在实际测试中发现直接搜索这个路径可以找到大量H3C设备path/imc/login.jsf但要注意有些系统可能会有多个版本的路径。比如某CMS系统老版本用/admin/login.php新版本用/console/auth。这时候最好用OR语法同时搜索多个路径path/admin/login.php || path/console/auth2.2 处理无法查看源码的情况有时候目标网站禁用右键或F12就像上周我遇到的一个政府网站。这时候可以观察地址栏注意URL中的目录结构比如/wp-content/plugins/some-plugin/查看参数名称如?moduleadminactionlogin留意文件扩展名.do、.action可能暗示Struts框架3. 从页面内容挖掘关键信息3.1 利用页面标题和关键字很多管理系统会在title或meta标签中暴露身份。比如某VPN系统的title固定是SSL VPN登录直接搜索titleSSL VPN登录更精准的做法是结合body内容搜索。上周测试某OA系统时我发现它的登录页面有版权所有某某软件公司的字样用这个搜索一抓一个准body版权所有某某软件公司 titleOA登录3.2 识别独特的界面元素系统的登录表单、版权信息、帮助链接等都可能成为特征。比如独特的按钮文字指纹登录、动态口令特定的错误信息请输入6位验证码特殊的版权声明格式我常用的技巧是用浏览器开发者工具查看网络请求往往能发现一些隐藏的API路径或静态资源路径。4. 通过静态资源定位系统4.1 利用logo和图标路径系统的logo就像人的脸一样有辨识度。以某邮件系统为例它的logo路径固定是/static/images/logo-mail.png。搜索这个路径比搜索页面标题更精准path/static/images/logo-mail.png更厉害的是FOFA支持通过图标的hash值来搜索。用Python可以计算ico文件的hashimport mmh3 import requests response requests.get(http://example.com/favicon.ico) favicon response.content hash mmh3.hash(favicon) print(ficon_hash{hash})4.2 识别特有的JS/CSS文件现代Web应用都会加载特定的前端资源。比如某CRM系统固定加载/assets/js/crm-core.min.js这个路径就是绝佳的搜索条件。我整理了几个常见系统的特征文件系统类型特征文件路径某OA系统/res/js/oa.js某CMS/static/cms-core.js某ERP/scripts/erp.min.css5. 组合搜索技巧实战案例5.1 某VPN设备漏洞定位去年某VPN设备爆出漏洞时我通过以下组合条件快速定位目标(titleSSL VPN || bodySSL VPN) servernginx countryCN这个搜索结合了标题或正文中的SSL VPN关键词Web服务器类型地理位置限定5.2 某CMS远程代码执行漏洞对于某CMS的RCE漏洞我使用了更精细的搜索bodyPowered by XXXCMS path/admin/ after2022-01-01这里加入了时间筛选只找新部署的系统因为老系统可能已经打过补丁。6. 避免踩坑的实用建议在实际使用中我发现几个容易出错的地方不要过度依赖单一特征比如只搜title容易被误报干扰注意大小写敏感问题有些系统Windows不区分但Linux区分善用排除语法比如!countryUS可以过滤掉国外目标定期更新特征库系统升级后路径可能会变有次我搜某系统时漏掉了after参数结果大部分目标都是已经修复的旧版本白白浪费了半天时间。后来养成了习惯重要漏洞都会加上时间范围限定。7. 进阶技巧自动化特征提取对于经常做的渗透测试我写了个Python脚本自动提取特征抓取目标页面所有URL和静态资源分析HTML中的meta信息和版权声明提取独特的字符串组合生成FOFA搜索语法这个脚本帮我节省了大量手动分析的时间。比如处理某政府系统时自动识别出了它的特殊cookie名称GSESSIONID用这个特征搜索比用URL路径更精准。