- 信息收集工具站点
- Google Hack
- 微步:https://x.threatbook.cn/ (游客有使用次数限制)
- 云悉:https://www.yunsee.cn (需登陆)
- 真实IP地址收集
- CDN绕过寻找真实IP
- 判断目标是否使用CDN
- ping根域名
- 利用在线网站 多地ping根域名进行比较
- 方法:
- 扫描子域名
- 国外网站多地ping域名 →https://asm.ca.com (挂代理)
- 查询历史解析记录
- 内部邮箱源
- phpinfo信息泄露
- 信息泄露/配置文件
- 网页源码
- svn
- github
- shodan/fofa/zoomeye
- ssl证书记录
- 网站漏洞
- xss
- ssrf
- 命令执行
- sql注入(某种情况loadfile读取linux的ip配置文件,host文件等)
- DNS记录,证书记录
- 设置xff/x-remote-ip/x-remte-addr为127.0.0.1或ipv6地址
- RSS订阅/Mx记录
- APP反编译搜索/截取APP的请求信息
- 修改hosts文件指向
- Nslookup
- cloudflare寻找真实IP
- http://crimeflare.org:82/cfs.html
- https://github.com/gwen001/pentest-tools/blob/master/cloudflare-origin-ip.py
- FuckCDN
- 判断目标是否使用CDN
- 域名历史IP
- CDN绕过寻找真实IP
- 敏感信息
- 敏感文件
- 利用dirsearch,dirbuster扫描 → 代码审计
.git -> githack利用脚本
- 常见的源码泄漏
-
.hg源码泄漏漏洞成因:
hg init的时候会生成.hge.g.http://www.example.com/.hg/
漏洞利用:dvcs-ripper
rip-hg.pl -v -u http://www.example.com/.hg/
-
.git源码泄漏漏洞成因:git init → .git的隐藏文件(记录代码的变更记录等等) → 在发布代码的时候,没有把.git删除 → 使用.git文件恢复源代码
e.g. http://www.example.com/.git/config
漏洞利用:GitHack dvcs-ripper
GitHack.py http://www.example.com/.git/
rip-git.pl -v -u http://www.example.com/.git/
-
.DS_store
文件泄漏(MAC系统)漏洞成因:在发布代码时未删除文件夹中隐藏的.DS_store,可以获取了敏感的文件名等信息
漏洞利用: https://github.com/lijiejie/ds_store_exphttp://www.example.com/.ds_store
注意路径检查
python ds_store_exp.py http://www.example.com/.DS_Store
-
composer.json配置信息泄露(PHP特性)
-
SVN(Subversion)导致文件泄露漏洞利用:https://github.com/callmefeifei/SvnHackhttps://github.com/kost/dvcs-ripper
rip-svn.pl -v -u http://www.example.com/.svn/ python SvnHack.py -u http://x.x.x.x/.svn/entries —download
-
SWP文件泄露
-
WEB-INF/web.xml泄露:WEB-INF是Java的WEB应用的安全目录。如果在页面中直接访问其中的文件,就必须通过web.xml文件对要访问的文件进行相应映射才能访问
-
WEB-INF主要包含一下文件或目录:
- /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
- /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
- /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
- /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
- /WEB-INF/database.properties:数据库配置文件
-
漏洞成因:由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取
-
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码。一般情况,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx配合Tomcat做均衡负载或集群等情况时,问题原因是Nginx不考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题而引入到自身的安全规范中来(耦合性太高)
-
修改Nginx配置文件禁止访问WEB-INF目录:
location \~ ^/WEB-INF/\* { deny all; } ,eturn 404;
-
-
CVS泄漏漏洞利用
- 测试的目录
http://url/CVS/Root 返回根信息 http://url/CVS/Entries 返回所有文件的结构
- 取回源码的命令
bk clone http://url/name dir #把远端一个名为name的repo clone到本地名为dir的目录下。
- 查看所有的改变的命令,转到download的目录
bk changes
- 测试的目录
-
网站备份压缩文件漏洞成因及危害:该漏洞的成因主要有以下两种:
- 服将网站或者网页的备份文件放置到服务器web目录。
- 编辑器在使用过程中自动保存的备份文件或者临时文件因为各种原因没有被删除而保存在web目录下
漏洞检测:
.rar .zip .7z .tar.gz .bak .swp .txt .html
-
- 利用dirsearch,dirbuster扫描 → 代码审计
- SSL证书信息
- 敏感文件
- 后台寻找
- robots.txt
- google hacking → site+inurl/intext/intitle
- 网站底部的管理入口(概率)
- 请求一些不存在的错误路径
- 在线网站指纹识别 →http://tools.bugscaner.com/
- 猜解常见的路径 → admin,login,system,admin/login,admin_login等
- 字典爆破 → 御剑,dirsearch等
- 子域名寻找 → 有些网站后台在子域名上
- XSS X后台
- 端口收集与攻击
- 针对不同的端口具有不同的攻击手法
- 常见远程端口
- 通过google,bing搜索
- 针对不同的端口具有不同的攻击手法
- 漏洞检测
- 业务漏洞检测| 阶段 | 功能 | 功能对应检测点 |
| -------- | -------------- | ------------------------------------------ |
| 身份认证 | 用户注册 | 是否可以重复注册 |
| 身份认证 | 密码修改 | 修改密码逻辑是否有问题 |
| 身份认证 | 密码重置 | 重置密码逻辑是否有问题 |
| 身份认证 | 短信验证码 | 短信炸弹 |
| 身份认证 | 短信验证码 | 短信验证码是否可暴破 |
| 身份认证 | 图片验证码 | 验证码是否可重复使用 |
| 身份认证 | 登录 | 登录逻辑是否有问题 |
| 身份认证 | 用户凭证存储 | 登录凭证是否存在localStore或sessionStore中 |
| 会话管理 | 登录 | 会话ID生成机制是否有问题 |
| 会话管理 | 登录 | 是否有超时自动退出机制 |
| 会话管理 | 退出 | 退出后会话ID是否真的失效 |
| 访问控制 | 用户信息查看 | 是否可以水平越权访问其他用户页面 |
| 访问控制 | 具有管理员界面 | 是否可以垂直越权访问管理员页面 |
| 访问控制 | 具有管理员接口 | 普通用户直接发包是否也会响应 |
| 业务逻辑 | 购买 | 修改价格后端是否会再次校验 |
| 业务逻辑 | 多步功能 | 能否跳过其中某些步 |
| 业务逻辑 | 请求次数限制 | 服务端如何限制是否可以绕过 |
| 业务逻辑 | 好友查询类 | 查询自己好友是否把好友的密码等都返回来 | - 技术型漏洞检测| 功能 | 功能对应检测点 |
| ------------------------- | -------------------------------- |
| 从数据库读取数据 | 是否存在sql注入 |
| 用户输入被返回前端页面 | 是否存在xss |
| 功能使用的是请求/响应模式 | 是否存在csrf |
| 文件上传 | 是否有文件类型、大小限制 |
| 文件下载 | 是否存在目录遍历 |
| 文件浏览 | 是否存在目录遍历 |
| 调用系统命令 | 是否存在命令注入 |
| 重定向 | 是否存在重定向注入 |
| 参数 | 参数超长是否会导致溢出 |
| 参数 | 参数有特殊字符是否会导致程序报错 |
| 参数 | 参数缺失是否会导致程序报错 |
- 业务漏洞检测| 阶段 | 功能 | 功能对应检测点 |
-
网络入口/信息
- 网络拓扑信息
- 外网出口
- IP信息
- C段
- 线下网络Wi-Fi
- SSID
- 认证信息
- VPN厂商登录方式
- 邮件网关
- 手机APP
- 小程序后台
- SSO
- 边界网络设备
- 上游运营商
- 网络拓扑信息
-
域名信息
- WhoisWhois 可以查询域名是否被注册,以及注册域名的详细信息的数据库,其中可能会存在一些有用的信息,例如域名所有人、域名注册商、邮箱等。
- 搜索引擎搜索
搜索引擎通常会记录域名信息,可以通过** **site: domain 的语法来查询。 - 第三方查询网络中有相当多的第三方应用提供了子域的查询功能
- DNSDumpster
- Virustotal
- CrtSearch
- threatminer
- Censys
- ASN信息关联在网络中一个自治系统 (Autonomous System, AS) 是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元 。一个自治系统有时也被称为是一个路由选择域 (routing domain) 。一个自治系统将会分配一个全局的唯一的16位号码,这个号码被称为自治系统号 (ASN) 。因此可以通过ASN号来查找可能相关的IP,例如:
whois -h whois.radb.net -- '-i origin AS111111' | grep -Eo "([0-9.]+){4}/[0-9]+" | uniqnmap --script targets-asn --script-args targets-asn.asn=15169 - 域名相关性同一个企业/个人注册的多个域名通常具有一定的相关性,例如使用了同一个邮箱来注册、使用了同一个备案、同一个负责人来注册等,可以使用这种方式来查找关联的域名。一种操作步骤如下:
- 查询域名注册邮箱
- 通过域名查询备案号
- 通过备案号查询域名
- 反查注册邮箱
- 反查注册人
- 通过注册人查询到的域名在查询邮箱
- 通过上一步邮箱去查询域名
- 查询以上获取出的域名的子域名
- 网站信息利用网站中有相当多的信息,网站本身、各项安全策略、设置等都可能暴露出一些信息。网站本身的交互通常不囿于单个域名,会和其他子域交互。对于这种情况,可以通过爬取网站,收集站点中的其他子域信息。这些信息通常出现在JavaScript文件、资源文件链接等位置。网站的安全策略如跨域策略、CSP规则等通常也包含相关域名的信息。有时候多个域名为了方便会使用同一个SSL/TLS证书,因此有时可通过证书来获取相关域名信息。
- HTTPS证书
- 证书透明度为了保证HTTPS证书不会被误发或伪造,CA会将证书记录到可公开验证、不可篡改且只能附加内容的日志中,任何感兴趣的相关方都可以查看由授权中心签发的所有证书。因此可以通过查询已授权证书的方式来获得相关域名。
- SAN主题备用名称 (Subject Alternate Name, SAN),简单来说,在需要多个域名,并将其用于各项服务时,多使用SAN证书。SAN允许在安全证书中使用subjectAltName字段将多种值与证书关联,这些值被称为主题备用名称。
- 域传送漏洞DNS域传送 (zone transfer) 指的是冗余备份服务器使用来自主服务器的数据刷新自己的域 (zone) 数据库。这是为了防止主服务器因意外不可用时影响到整个域名的解析。一般来说,域传送操作应该只允许可信的备用DNS服务器发起,但是如果错误配置了授权,那么任意用户都可以获得整个DNS服务器的域名信息。这种错误授权被称作是DNS域传送漏洞。
- Passive DNSPassive DNS被动的从递归域名服务器记录来自不同域名服务器的响应,形成数据库。利用Passive DNS数据库可以知道域名曾绑定过哪些IP,IP曾关联到哪些域名,域名最早/最近出现的时间,为测试提供较大的帮助。Virustotal、passivetotal、CIRCL等网站都提供了Passive** **** DNS数据库的查询。**
- 泛解析
泛解析是把** ***.example.com 的所有A记录都解析到某个IP 地址上,在子域名枚举时需要处理这种情况以防生成大量无效的记录。 - 重要记录
- CNAMECNAME即Canonical name,又称alias,将域名指向另一个域名。其中可能包含其他关联业务的信息。很多网站使用的CDN加速功能利用了该记录。
- MX记录MX记录即Mail Exchanger,记录了发送电子邮件时域名对应的服务器地址。可以用来寻找SMTP服务器信息。
- NS记录NS (Name Server) 记录是域名服务器的记录,用来指定域名由哪个DNS服务器来进行解析。
- SPF记录
SPF (Sender Policy Framework) 是为了防止垃圾邮件而提出来的一种DNS记录类型,是一种TXT类型的记录,用于登记某个域名拥有的用来外发邮件的所有IP地址。通过SPF记录可以获取相关的IP信息,常用命令为** **dig example.com txt 。 - CDN
- CDN验证可通过多地ping的方式确定目标是否使用了CDN
- 域名查找使用了CDN的域名的父域或者子域名不一定使用了CDN,可以通过这种方式去查找对应的IP。
- 历史记录查找CDN可能是在网站上线一段时间后才上线的,可以通过查找域名解析记录的方式去查找真实IP。
- 邮件信息通过社会工程学的方式进行邮件沟通,从邮件头中获取IP地址,IP地址可能是网站的真实IP或者是目标的出口IP。
- 子域爆破在内网等不易用到以上技巧的环境,或者想监测新域名上线时,可以通过批量尝试的方式,找到有效的域名。
- 缓存探测技术在企业网络中通常都会配置DNS服务器为网络内的主机提供域名解析服务。域名缓存侦测(DNS Cache Snooping)技术就是向这些服务器发送域名解析请求,但并不要求使用递归模式,用于探测是否请求过某个域名。这种方式可以用来探测是否使用了某些软件,尤其是安全软件。
-
端口信息
- 常见商品扫描技术
- 全扫描(不推荐)
扫描主机尝试使用三次握手与目标主机的某个端口建立正规的连接,若成功建立连接,则端口处于开放状态,反之处于关闭状态。
全扫描实现简单,且以较低的权限就可以进行该操作。但是在流量日志中会有大量明显的记录。 - 半扫描
半扫描也称SYN扫描,在半扫描中,仅发送SYN数据段,如果应答为RST,则端口处于关闭状态,若应答为SYN/ACK,则端口处于监听状态。不过这种方式需要较高的权限,而且现在的大部分防火墙已经开始对这种扫描方式做处理。 - FIN扫描
FIN扫描是向目标发送一个FIN数据包,如果是开放的端口,会返回RST数据包,关闭的端口则不会返回数据包,可以通过这种方式来判断端口是否打开。
这种方式并不在TCP三次握手的状态中,所以不会被记录,相对SYN扫描要更隐蔽一些。
- 全扫描(不推荐)
- 常见端口及其脆弱点
- FTP (21/TCP)
- 默认用户名密码anonymous:anonymous
- 暴力破解密码
- VSFTP某版本后门
- SSH (22/TCP)
- 部分版本SSH存在漏洞可枚举用户名
- 暴力破解密码
- Telent (23/TCP)
- 暴力破解密码
- 嗅探抓取明文密码
- SMTP (25/TCP)
- 无认证时可伪造发件人
- DNS (53/UDP)
- 域传送漏洞
- DNS劫持
- DNS缓存投毒
- DNS欺骗
- SPF / DMARC Check
- **DDoSDNS **
- Query Flood
- DNS 反弹
- DNS 隧道
- DHCP 67/68
- 劫持/欺骗
- TFTP (69/TCP)
- HTTP (80/TCP)
- Kerberos (88/TCP)
- 主要用于监听KDC的票据请求
- 用于进行黄金票据和白银票据的伪造
- POP3 (110/TCP)
- 爆破
- RPC (135/TCP)
- wmic 服务利用
- NetBIOS (137/UDP & 138/UDP)
- 未授权访问弱口令
- NetBIOS / Samba (139/TCP)
- 未授权访问弱口令
- SNMP (161/TCP)
- Public 弱口令
- LDAP (389/TCP)
- 用于域上的权限验证服务
- 匿名访问
- 注入
- HTTPS (443/TCP)
- SMB (445/TCP)
- Windows 协议簇,主要功能为文件共享服务
- net use \\192.168.1.1 /user:xxx\username password
- Linux Rexec (512/TCP & 513/TCP & 514/TCP)
- 弱口令
- Rsync (873/TCP)
- 未授权访问
- RPC (1025/TCP)
- NFS匿名访问
- Java RMI (1090/TCP & 1099/TCP)
- 反序列化远程命令执行漏洞
- MSSQL (1433/TCP)
- 弱密码
- 差异备份 GetShell
- SA 提权
- Oracle (1521/TCP)
- 弱密码
- NFS (2049/TCP)
- 权限设置不当
- showmount
- ZooKeeper (2171/TCP & 2375/TCP)
- 无身份认证
- Docker Remote API (2375/TCP)
- 未限制IP / 未启用TLS身份认证
- http://docker.addr:2375/version
- MySQL (3306/TCP)
- 弱密码
- 日志写WebShell
- UDF提权
- MOF提权
- RDP / Terminal Services (3389/TCP)
- 弱密码
- Postgres (5432/TCP)
- 弱密码
- 执行系统命令
- VNC (5900/TCP)
- 弱密码
- CouchDB (5984/TCP)
- 未授权访问
- WinRM (5985/TCP)
- Windows对WS-Management的实现
- 在Vista上需要手动启动,在Windows Server 2008中服务是默认开启的
- Redis (6379/TCP)
- 无密码或弱密码
- 绝对路径写 WebShell
- 计划任务反弹 Shell
- 写 SSH 公钥
- 主从复制 RCE
- Windows 写启动项
- Kubernetes API Server (6443/TCP && 10250/TCP)
- https://Kubernetes:10250/pods
- JDWP (8000/TCP)
- 远程命令执行
- ActiveMQ (8061/TCP)
- Jenkin (8080/TCP)
- 未授权访问
- Elasticsearch (9200/TCP)
- 代码执行
- http://es.addr:9200/_plugin/head/
- http://es.addr:9200/_nodes
- Memcached (11211/TCP)
- 未授权访问
- RabbitMQ (15672/TCP & 15692/TCP & 25672/TCP)
- MongoDB (27017/TCP)
- 无密码或弱密码
- Hadoop (50070/TCP & 50075/TCP)
- 未授权访问
- FTP (21/TCP)
- 常见商品扫描技术
-
站点信息
- 判断网站操作系统
- Linux大小写敏感
- Windows大小写不敏感
- 扫描敏感文件
- robots.txt
- crossdomain.xml
- sitemap.xml
- xx.tar.gz
- xx.bak等
- 确定网站采用的语言
- 如PHP / Java / Python等
- 找后缀,比如php/asp/jsp
- 前端框架
- 如jQuery / BootStrap / Vue / React / Angular等
- 查看源代码
- 中间服务器
- 如 Apache / Nginx / IIS 等
- 查看header中的信息
- 根据报错信息判断
- 根据默认页面判断
- Web容器服务器
- 如Tomcat / Jboss / Weblogic等
- 后端框架
- 根据Cookie判断
- 根据CSS / 图片等资源的hash值判断
- 根据URL路由判断如wp-admin
- 根据网页中的关键字判断
- 根据响应头中的X-Powered-By
- CDN信息
- 常见的有Cloudflare、yunjiasu
- 探测有没有WAF,如果有,什么类型的
- 有WAF,找绕过方式
- 没有,进入下一步
- 扫描敏感目录,看是否存在信息泄漏
- 扫描之前先自己尝试几个的url,人为看看反应
- 使用爬虫爬取网站信息
- 拿到一定信息后,通过拿到的目录名称,文件名称及文件扩展名了解网站开发人员的命名思路,确定其命名规则,推测出更多的目录及文件名
- 常见入口目标
- 关注度低的系统
- 业务线较长的系统
- 判断网站操作系统
-
搜索引擎利用
恰当地使用搜索引擎(Google/Bing/Yahoo/Baidu等)可以获取目标站点的较多信息。
-
搜索引擎处理流程
- 数据预处理
- 长度截断
- 大小写转化
- 去标点符号
- 简繁转换
- 数字归一化,中文数字、阿拉伯数字、罗马字
- 同义词改写
- 拼音改写
- 处理
- 分词
- 关键词抽取
- 非法信息过滤
- 数据预处理
-
搜索技巧
- site:www.hao123.com
- 返回此目标站点被搜索引擎抓取收录的所有内容
- site:www.hao123.com keyword
- 返回此目标站点被搜索引擎抓取收录的包含此关键词的所有页面
- 此处可以将关键词设定为网站后台,管理后台,密码修改,密码找回等
- site:www.hao123.com inurl:admin.php
- 返回目标站点的地址中包含admin.php的所有页面,可以使用admin.php/manage.php或者其他关键词来寻找关键功能页面
- link:www.hao123.com
- 返回所有包含目标站点链接的页面,其中包括其开发人员的个人博客,开发日志,或者开放这个站点的第三方公司,合作伙伴等
- related:www.hao123.com
- 返回所有与目标站点”相似”的页面,可能会包含一些通用程序的信息等
- intitle:"500 Internal Server Error" "server at"
- 搜索出错的页面
- inurl:"nph-proxy.cgi" "Start browsing"
- 查找代理服务器
除了以上的关键字,还有allintile / allinurl / allintext / inanchor / intext / filetype / info / numberange / cache等。
- 通配符
- *代表某一个单词
- OR 或者 | 代表逻辑或
- 单词前跟+ 表强制查询
- 单词前跟-表排除对应关键字
- " 强调关键字
- tips
- 查询不区分大小写
- 括号会被忽略
- 默认用 and 逻辑进行搜索
- site:www.hao123.com
-
快照搜索引擎的快照中也常包含一些关键信息,如程序报错信息可以会泄漏网站具体路径,或者一些快照中会保存一些测试用的测试信息
**另外有专门的站点快照提供快照功能,如 Wayback Machine 和 **Archive.org 等。 -
Github在Github中,可能会存在源码泄露、AccessKey泄露、密码、服务器配置泄露等情况,常见的搜索技巧有:
- @example.com password/pass/pwd/secret/credentials/token
- @example.com username/user/key/login/ftp/
- @example.com config/ftp/smtp/pop
- @example.com security_credentials/connetionstring
- @example.com JDBC/ssh2_auth_password/send_keys
-
-
社会工程学
- 企业信息收集一些网站如天眼查等,可以提供企业关系挖掘、工商信息、商标专利、企业年报等信息查询,可以提供企业的较为细致的信息公司主站中会有业务方向、合作单位等信息
- 人员信息收集
- 针对人员的信息收集考虑对目标重要人员、组织架构、社会关系的收集和分析
- 其中重要人员主要指高管、系统管理员、运维、财务、人事、业务人员的个人电脑
- 人网站中可能包含网站的开发、管理维护等人员的信息。从网站联系功能中和代码的注释信息中都可能得到的所有开发及维护人员的姓名和邮件地址及其他联系方式。
- 在Github/Linkedin等社交、招聘网站中进一步查找这些人在互联网上发布的与目标站点有关的一切信息,分析并发现有用的信息。
- QQ、weibo、支付宝、脉脉、领英、咸鱼、短视频、人人、贴吧、论坛
- 推特、ins、fb、外网信息
- 此外,可以对获取到的邮箱进行密码爆破的操作,获取对应的密码。
- 针对人员的信息收集考虑对目标重要人员、组织架构、社会关系的收集和分析
- 钓鱼
- 基于之前收集到的信息,可以使用Office/CHM/RAR/EXE等文件制作钓鱼邮件发送至目标,进一步收集信息
- Office可以使用Office漏洞、宏、OLE对象、PPSX等方式构造利用文件
- Exe可以使用特殊的Unicode控制字符来构建容易混淆的文件名
- 如果前期信息收集获取到了运维等人员的邮箱,可以使用运维人员的邮箱发送,如果未收集到相关的信息,可以使用伪造发送源的方式发送邮件
- 基于之前收集到的信息,可以使用Office/CHM/RAR/EXE等文件制作钓鱼邮件发送至目标,进一步收集信息
- 其他信息
- 公司的公众号、企业号、网站,员工的网盘、百度文库等可能会存在一些敏感信息
- VPN/堡垒机账号、TeamViewer账号、网络设备默认口令、服务器默认口令等
- 图片反查
- 百度识图、googleimage、tineye、原图查询坐标
- 手机号匹配APP用户信息
- 注册过的网站
- 目标人员的兴趣
- 目标人员的兴趣,注册过的小众论坛,站点。针对此类站点的深入收集到的用户名,电话等信息生成字典
- 邮箱搜集
- Exchange
- GPS查询
- 公司的公众号、企业号、网站,员工的网盘、百度文库等可能会存在一些敏感信息