概述
此部分包含四个部分:如下
操作系统
一般都通过指纹来识别操作系统,还有一个特别古早的方法:Linux分大小写但是Windows不分
WEB应用
其实都差不多的思路,首先去找公开漏洞,不行就自己审计。
已知 CMS
如常见的 dedecms,discuz,wordpress 等源码结构,这种一般采用非框架类开发,但也有少部分采用的是框架类开发,针对此类源码程序的安全检测,我们要
- 利用公开的漏洞进行测试
- 如不存在可自行搭建环境,采用白盒代码审计自行挖掘。
开发框架
如常见的 thinkphp,spring,flask 等开发的源码程序,这种源码程序正常的安全测试思路:
未知 CMS
如常见的企业或个人内部程序源码,也可以是某 CMS 二次开发的源码结构,针对此类的源码程序测试思路:
APP应用
一般来说,做了适应性的app都可以使用类似于web渗透的方法进行攻击,除非是采用特定的框架,采用非适应性(也就是用web浏览器打开不太行,不能做到适配,例如以此为开头的一般都是适应性的:m.xxx.com
)
API接口服务安全
分清api接口的类别,一般xml就是web service,而json就是restful。尽量找到wsdl的配置文件,看入口函数以及参数定义,这样子就能够构造数据包(使用postman也行,使用soapui啥的也行),构造完之后就是正常的渗透测试流程了,不太一样就是把这个包的参数都要自己摸索传输,而web传输我们抓包可以模仿一下~
操作系统漏洞发现
学会使用一些工具:Nessus、Nmap、Goby。通过扫描的结果。
WEB应用漏洞发现
识别WEB应用
看上面是分三类,所以主要是如何去测定这个是什么CMS或者是什么框架开发的。这个测定方法一般有:
手工
查看数据包。
查看头/源码,头里面可能会有特征值
- http头。查看http响应报头的X-Powered-By字段来识别,可以通过netcat来识别,使用netcat 127.0.0.1 80对127.0.0.1主机的80端口web服务器框架进行识别。
- Cookies。一些框架有固定的Cookies名称,这些名称一般情况都不会更改,例如zope3、cakephp、kohanasesson、laravel_session。
- Html源代码。html源代码中包含注释、js、css等信息,通过访问这些信息来判断和确认cms系统框架。在源代码中常常会包含powered by、bulit upon、running等特征。
查看请求地址URL,请求地址目录有特征值
查看特殊文件(计算md5)
查看端口:对于端口服务类,详细见下文
工具
参考:blog.51cto.com/simeon/2115…
整一个实战流程
首先识别一下这个网站是什么cms【即上面所说的】
知道CMS信息就去查历史漏洞,好像没有可以用的历史漏洞,那就看看后台地址是啥,看能不能爆破啥的
就去查端口,看有什么应用,对应的漏洞
啥都没了,那就看看信息/代码泄露,去查看有什么配置信息,可以去看数据库有什么密码之类的
APP应用漏洞发现
反编译提取 URL 或抓包获取 URL,进行 WEB 应用测试,如不存在或走其他协议的情况下,需采用网络接口抓包进行数据获取,转至其他协议安全测试!
0. APP->WEB APP->其他 APP->逆向
0. WEB 抓包,其他协议抓包演示及说明
0. 未逆向层面进行抓包区分各协议测试
0. 逆向层面进行提取 APK 代码层面数据
0. 参考: www.cnblogs.com/L0ading/p/1…
所以渗透主要是:对URL进行抓取,对URL进行协议分类,然后分别进行攻击。可以使用web类攻击,也可以使用其他。
URL提取
Burp
然后搜索一下(showall)关键字,像id之类的。
需要注意的是:
由于这些app的链接都能在 电脑 上访问,但是访问之后的请求数据包不一样! 所以,你需要在测试的时候先抓一个安卓数据包,然后在测试的时候(例如xray)改一下http头部。
如果你不用burp,可以在手机端安装:抓包精灵。跟burp的抓包功能差不多。但是功能不好用,不是什么数据都抓。
Apk Analyser
直接把APK放进去扫就行。
xray/awvs+burp联动扫描
设置如下:
.xray.exe webscan --listen 127.0.0.1:6666
利用
上工具/自己按照web的方法使用
API接口服务漏洞发现
API接口渗透测试是通过用渗透测试的方法测试系统组件间接口的一种测试。接口渗透测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
参考:
漏洞挖掘关注点
信息搜集
在 API 渗透中,除了常规的域名、端口、服务器 banner 之类的信息外,API 本身所特有的信息在信息收集时需要关注。举例如下。
- API 是否存在接口定义规范描述文件?【判断接口类型】如果存在,遵循的规范是什么?SOAP、Open API 2.0、Open API 3.0 还是 Graph QL?
- API 是依赖什么语言实现的?Java、.NET、PHP、Python、Go 还是其他语言?【构造payload需要用到】
- API 运行所依赖的组件是什么版本,是否存在已知漏洞?
- 互联网上是否存在其泄露的 API Key 或证书?
- API 是否存在多个版本?多个接入端?
还有就是,需要提供两个信息:【最重要】
手工测试
在 API 渗透测试中,手工挖掘往往占有较大的比重。当采用手工挖掘时,以下事项是需要重点关注的。
- 认证和授权:对于 API 的认证鉴权机制,设计人员和研发人员往往认识不足,有的 API 调用甚至缺少认证与授权机制。比如令牌、HTTP 方法(GET,POST,PUT 和 DELETE 等)在进入服务器之前是否都经过了验证,OAuth 协议使用的正确性,无认证和授权的 API 是否可以任意调用。
- 输入验证:和其他类型的应用程序一样,对于输入的不可信是应用程序安全的基础,但研发人员常常因疏忽导致对输入缺少有效的验证。比如 XML 实体注入类型的攻击、不同的响应类型 application/json 与 application/xml。
- 数据编码:包含 JSON 格式的数据,容易导致反序列化漏洞或远程代码执行。
- API 版本和影子 API:同一个 API 的不同版本或未在 API 规范文件中描述的 API,更容易发现安全漏洞。
测试接口类型:
接口测试分为web service和API接口测试,WebSocket接口等测试。可以使用该网址进行发包啥的:v7.apipost.cn/apis#/apis/…
WebService
Web Service服务也是一些包装过的接口而已,针对Web Service服务的渗透测试和对常规API渗透测试是一样的、只是,可以使用安全工具来辅助进行:
WebScarap
SoapUI
WCFStorm
SOA Cleaner
WSDigger
wsScanner
Wfuzz
RESTClient
BurpSuite
WS-Attacker
ZAP
Metasploit
WSDL Analyze
SoapUI NG Pro作为Web Service的测试工具,Burp作为代理、监听SoapUI NG Pro用自己构造的payload报文打Web Service的流量报文,其中可以篡改对应的报文参数实现渗透测试。
可以查找:
inurl:jws?wsdl
inurl:asmx?wsdl
inurl:aspx?wsdl
inurl:ascx?wsdl
inurl:ashx?wsdl
inurl:dll?wsdl
inurl:exe?wsdl
inurl:php?wsdl
inurl:pl?wsdl
inurl:?wsdl
filetype:jws
filetype:asmx
filetype:ascx
filetype:aspx
filetype:ashx
filetype:dll
filetype:exe
filetype:php
filetype:pl
filetype:wsdl
测试手法
在得到api之后,有这个思路可以参考挖掘:
观察接口命名,采用驼峰命名法,是否存在其他不在接口文档的类似的测试接口,比如getUserInfos
、getUserInfoByUid
等
这个地方虽然参数是phone
,那会不会后端模糊查询输入用户名也可以查询呢
查询任意用户信息的接口,应该存在鉴权机制
手机号进入后端查询用户的信息,肯定会进行数据库查询
1388888%
补充知识点(信息的最大化)
前置知识:使用IP访问和使用域名访问有什么区别?
假设:有域名abc.com对应域名123.123.123.123,其建立的文件夹目录为:
d:wwwj3fffff
- 使用域名访问则会访问目录:
d:wwwj3fffff
- 使用IP访问则会访问目录:
d:www
所以如果有文件:
d:wwwold.zip
,那么使用IP地址可以访问,而使用域名就不行。
IP 端口 web
在如BurpSuite这种代理工具中设定的过滤规则来筛选Web Service请求。比如“.dll?wsdl”、“.ashx?wsdl”、“.exe?wsdl”、“.php?wsdl”等
域名 web
子域名搜集,搜集的站点越多,目标越多,机会越多,可能越多!
子域名搜集不仅仅局限于(子域名挖掘机):
www.j??sd.com
bbs.j??sd.com
old.j??sd.com
还可以 换后缀 看他以前有没有注册过这些域名(可以去www.west.cn/services/do…看看有没有被注册),如果有,那么可能是同一家的,并且挂载了老的系统或者其他业务(可能是有漏洞的):
www.j??sd.com.cn
www.j??sd.cn
www.j??sd.net
www.j??sd.org
还可以通过注册人反查他注册了什么公司
还可以通过特有信息,例如网站上写着:??乐 ,那就查这个,可能会有其他域名:
www.j??jy.com.cn
这个跟上面的是不一样的,他是“家园”,而不是“时代”。但是是一家公司的!