渗透流程
操作流程
- 和客户沟通基础需求(确定清楚域名,能做什么,不能做什么)
- 信息收集阶段(信息收集)
- 准备渗透方式
- 分析漏洞
- 开始攻击
- 后渗透
- 完成客户报告
信息收集
- 收集域名信息:通过whois,备案信息收集相关信息(注册商,dns信息,单位信息,法人信息,用户邮箱,用户电话等)
- 子域名收集:利用搜索引擎、者空间搜索引擎、证书、dnsenum、dnsmap、firerce(是否有传送)、layer、subDomainsbrutee等方式获取相关子域名信息
- 开放端口与服务信息收集: 使用nmap扫描目标端口和服务相关信息
- 站点信息收集:查找用户网站相关信息,确认语言,代码是否是开源,确认历史漏洞,脚本语言,敏感目录/文件
手工识别
根据http响应头判断,重点关注X-Powered-By、cookie等字段
根据HTML特征,重点关注 body、title、meta等标签的内容和属性
根据特殊的class判断。Html中存在特定class属性的div标签,如<body class="ke-content">
敏感目录/文件收集
对目标网站各个目录扫描。在web渗透中,特测web目录结构和隐藏的敏感文件是一个十分重要的环节,从中可以获取后台管理页面,文件上传页面
常用的扫描工具
御剑后台扫描
dirbuster扫描(windows)
dirsearch扫描(linus)
dirb
wwwscan
spinder/py
sensitivefilescan
weakfilescan
waf识别
waf(web application firewall)web应用防护系统
wafw00f waf指纹识别工具
1. 发送正常的http请求,分析响应,这可以识别很多WAF
2. 如果不成功,它会发送一些(可能是恶意的)HTTP请求,使用简单的逻辑推断WAF
3. 如果这也不成功,它会再次分析响应,使用其它简单的算法猜测是否有某个WAF或者安全解决方案响应了该次检测
敏感信息收集
google hacking
intext:寻找正文中含有关键字的网页
intitle:寻找标题中含有关键字的网页
allintitle:用法和intitle类似,只不过可以指定多个词
inurl:搜索url中含有关键词的网页
allinurl:用法和inurl类似,只不过可以指定多个词
site:指定访问的站点
filetype:指定访问的文件类型
link:指定链接的网页
related:搜索相似类型的网页
info:返回站点的指定信息,例如:info:www.baidu.com 将返回百度的一些信息
phonebook:电话簿查询美国街道地址和电话号码信息
Index of:利用 Index of 语法可以发现允许目录浏览的web网站,就像在本地的普通目录一样
查找网站后台
intext:后台登录:将只返回正文中包含“后台登录”的网页
intitle:后台登录:将只返回标题中包含“后台登录”的网页
查找指定网站后台
site:xx.com intext:管理
site:xx.com inurl:login
site:xx.com intitle:后台
查看指定网站的文件上传漏洞
site:xx.com inurl:file
site:xx.com inurl:load
利用Index of可以发现允许目录浏览的web网站,就像在本地的普通目录一样
index of /admin
index of /passwd
index of /password
index of /mail
"index of /" +passwd
"index of /" +password.txt
"index of /config"
用index of目录列表列出存在于一个web服务器上的文件和目录。
intitle:index.of 这里的休止符代表的是单个字母的通配符
intitle:index.of index.php.bak
inurl:index.php.bak
intitle:index.of www.zip
查找sql注入
inurl:?id=1
inurl: php?id=
GHDB
谷歌黑客数据库 链接:https://www.exploit-db.com/google-hacking-database/
Github信息泄露
[Git与Git文件导致源码泄露_当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.gi-CSDN博客](https://blog.csdn.net/qq_45521281/article/details/105767428)
pop3和smtp
site:Github.com smtp
site:Github.com smtp @qq.com
site:Github.com smtp @126.com
site:Github.com smtp @163.com
site:Github.com smtp @sina.com.cn
服务器信息收集
- web服务器指纹识别
- 真是IP地址识别
- 编程语言
- web中间件
- 端口信息收集
- 后端存储技术识别
Web服务器指纹识别主要识别一下信息:
1、Web服务器名称,版本
2、Web服务器后端是否有应用服务器
3、数据库(DBMS)是否部署在同一主机(host),数据库类型
4、Web应用使用的编程语言
5、Web应用框架
1)手工检测
1. HTTP头分析
即查看HTTP响应头中的Server、X-Powered-By、Cookie 等字段,这也是最基本的方法。我们可以发现服务器可能是Apache,版本2.4.6,运行在CentOS Linux系统上。
根据X-Powered-By字段我们可以判断识别出web框架,并且不同的web框架有其特有的cookie,根据这个我们也能判断识别出web应用框架。
2. 协议行为
即从HTTP头字段顺序分析,观察HTTP响应头的组织顺序,因为每个服务器都有一个内部的HTTP头排序方法。
3. 浏览并观察网站
我们可以观察网站某些位置的HTML源码(特殊的class名称)及其注释(comment)部分,可能暴露有价值信息。观察网站页面后缀可以判断Web应用使用的编程语言和框架。
4. 刻意构造错误
错误页面可以给你提供关于服务器的大量信息。可以通过构造含有随机字符串的URL,并访问它来尝试得到404页面。
(2)利用工具识别
whatweb是一款用于辅助的自动化Web应用指纹分析工具
whatweb 域名/ip地址
指定要扫描的文件
whatweb -i 含有需要扫描的域名的文件的路径
whatweb -v 域名 详细回显扫描
- 另外,我们可以使用Nmap OS指纹初步判断操作系统。对于后端DBMS的识别,如果主机对外开放DBMS的话,可以通过端口特征判断,尤其是在开放默认端口比如3306、1443、27017等。
真实IP地址识别
- ip查询 www.ip138.com
- cdn(Content Delivery Network)内容分发网络
- ping测试
http://ping.chinaz.com
https://www.17ce.com
如何绕过CDN找到目标真实IP?
1. 利用子域名。一般来说很多站长可能只会对主站或者流量较大的分站使用CDN,但是一些流量比较小的分站可能没有挂CDN,这些分站和主站虽然不是同一个IP但是都在同一个C段下面的情况,所以我们可以通过ping二级域名获取分站lP,从而能判断出目标的真实IP段。
2. 查询主域。以前用CDN的时候有个习惯,只让WWW域名使用cdn,秃域名不使用,为的是在维护网站时更方便,不用等cdn缓存。所以试着把目标网站的www去掉,ping一下看ip是不是变了。
3.扫描网站敏感文件,如phpinfo.php等,从而找到目标的真实IP。
4.从国外访问。国内很多CDN厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实P。我们可以通过国外在线代理网站访问,可能会得到真实的IP地址,外国在线代理网站:
<https://asm.ca.com/en/ping.php>
5.通过邮件服务器。一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件,寻找邮件头中的邮件服务器域名IP,ping这个邮件服务器的域名,由于这个邮件服务器的有可能跟目标Web在一个段上,我们直接一个一个扫,看返回的HTML源代码是否跟web的对的上,就可以获得目标的真实IP(必须是目标自己内部的邮件服务器,第三方或者公共邮件服务器是没有用的)。
6. 查看域名历史解析记录。也许目标很久之前没有使用CDN,所以可能会存在使用 CDN 前的记录。所以可以通过[https://www.netcraft.com](https://www.netcraft.com/)、<https://viewdns.info/>等网站来观察域名的IP历史记录。
7.Nslookup查询。查询域名的NS记录、MX记录、TXT记录等很有可能指向的是真实ip或同C段服务器。
8.利用网络空间搜索引擎。这里主要是利用网站返回的内容寻找真实原始IP,如果原始服务器IP也返回了网站的内容,那么可以在网上搜索大量的相关数据。最常见的网络空间搜索引擎有如下:
- Shodan:https://www.shodan.io/
- 钟馗之眼:https://www.zoomeye.org/
- FOFA:https://fofa.so/
9. 让目标主动连接我们。
a、发邮件给我们。比如订阅、注册的时候会有注册连接发送到我们的邮件,然后查看邮件全文源代码或邮件标头,寻找邮件头中的邮件服务器域名IP就可以了。
b、利用网站漏洞。比如有代码执行漏洞、SSRF、存储型的XSS都可以让服务器主动访问我们预设的web服务器,那么就能在日志里面看见目标网站服务器的真实IP。
端口信息收集
-
- 使用nmap工具收集 mpap -A -v -T4 -0 -sv domain.com
-
- 使用masscan探测端口开放信息
由于使用工具通常会在目标网站留下痕迹,接下来提供一种在线网站探测方法。
- 在线网站:<http://tool.chinaz.com/port/>
- ThreatScan在线网站(网站基础信息收集):<https://scan.top15.cn/>
- Shodan:<https://www.shodan.io/>
常见的端口及其攻击方向可以参考:<https://blog.csdn.net/weixin_42320142/article/details/102679143>
社会工程学
凯文·米特尼克在《反欺骗的艺术》中曾提到,人为因素才是安全的软肋。很多企业、公司在信息安全上投入大量的资
金,最终导致数据泄露的原因,往往却是发生在人本身。你们可能永远都想象不到,对于黑客们来说,通过一个用户
名、一串数字、一串英文代码,社会工程师就可以通过这么几条的线索,通过社工攻击手段,加以筛选、整理,就能把
你的所有个人情况信息、家庭状况、兴趣爱好、婚姻状况、你在网上留下的一切痕迹等个人信息全部掌握得一清二楚。
虽然这个可能是最不起眼,而且还是最麻烦的方法。一种无需依托任何黑客软件,更注重研究人性弱点的黑客手法正在
兴起,这就是社会工程学黑客技术。
社会工程学攻击包括四个阶段:
- 研究:信息收集(WEB、媒体、垃圾桶、物理),确定并研究目标
- 钩子:与目标建立第一次交谈(HOOK、下套)
- 下手:与目标建立信任并获取信息
- 退场:不引起目标怀疑的离开攻击现场
社会工程学收集的常见信息包括:姓名、性别、出生日期、身份zheng号、身份zheng家庭住址、身份zheng所在公安局、快递收货地址、大致活动范围、qq、手机号、邮箱、银行card号(银行开户行)、支付宝、贴吧、百度、微博、猎聘、58、同城、网盘、微信、常用ID、学历(小/初/高/大学/履历)、目标性格详细分析、常用密码、照片EXIF信息。
常见可获取信息系统包括:中航信系统、春秋航空系统、12306系统、三大运营商网站、全国人口基本信息资源库、全国机动车/驾驶人信息资源库、各大快递系统(越权)、全国出入境人员资源库、全国在逃人员信息资源库、企业相关系统、全国安全重点单位信息资源库等。
举个例子:
假设我们要对一家公司进行渗透测试,正在收集目标的真实IP阶段,此时就可以利用收集到的这家公司的某位销售人员的电子邮箱。首先,给这位销售人员发送邮件,假装对某个产品很感兴趣,显然销售人员会回复邮件。这样攻击者就可以通过分析邮件头来收集这家公司的真实IP地址及内部电子邮件服务器的相关信息。通过进一步地应用社会工程学,假设现在已经收集了目标人物的邮箱、QQ、电话号码、姓名,以及域名服务商,也通过爆破或者撞库的方法获取邮箱的密码,这时就可以冒充目标人物要求客服人员协助重置域管理密码,甚至技术人员会帮着重置密码,从而使攻击者拿下域管理控制台,然后做域劫持。
推荐书籍: 《黑客心理学》、《欺骗的艺术》
Ending......
“知己知彼,百战不殆”,进行web渗透测试之前,最重要的一步那就是就是信息收集了,俗话说“渗透的本质也就是信息收集”,信息收集的深度,直接关系到渗透测试的成败。打好信息收集这一基础可以让测试者选择合适和准确的渗透测试攻击方式,缩短渗透测试的时间。