1.渗透测试流程和工具?
第一阶段:明确渗透目标 和风险分析获得授权
(1)确定范围
如:IP、域名、内外网、整站、部分模块等
(2)确定规则
能渗透到什么程度,是发现漏洞即可还是需要利用该漏洞、时间限制、能否修改上传、能否提权等
目标系统介绍、重点保护对象及特性。
是否允许破坏数据?
是否允许阻断业务正常运行?
测试之前是否应当知会甲方安全部门,IP是否需要加白接入方式?外网和内网?
测试是发现问题即可,还是尽可能发现更多问题。
测试过程是否需要考虑社会工程手段。
测试过程中要求完全仿真,除破坏操作需要报备,其余手段不受限制还是如何。
(3)确定需求
上线前的web应用测试、业务逻辑漏洞测试、人员权限管理漏洞测试。
由乙方书写实施方案初稿提交给甲方或公司内部审核,审核通过后,测试人必须拿到正规的乙方书面委托授权书才能开工,代理商第三方授权不具备法律效力,若是第三方授权,必须拿到甲方给中间商的授权,且注明中间商有转让授权的权限,这样中间商下发的授权测试才是合法的。需要提前跟甲方确认是否能提供测试账号,测试账号最好覆盖各个权限级别,金融行业或者交易类的测试账号需要账户中有一定的余额。
第二阶段:信息搜集 【maltego、nmap、reco-ng、waf00f 】
信息搜集的方法很多,不详细阐述,大概列举如下:
被动:【maltego、reco-ng】DNS【nslookup 、dig 】
主动: 二层发现【nmap arping 、netdiscover、scapy】
三层发现ip、icmp【ping 、fping、nmap、hping】可路由容易被发现
四层发现 tcp、udp [nmap 、hping]
端口扫描[nmap 、scapy]
服务扫描[amap、 ]
防火墙识别[查看回包] waf识别【wafw00f】
第三阶段:漏洞探测和验证
汇总信息搜集到的信息,使用与之匹配的漏洞检测策略
方法:
内容:
系统漏洞:系统没能及时更新补丁
Webserver漏洞: webserver配置问题……
Web应用漏洞: Web应用开发问题、错误页面未定义、后台暴露……
其他端口服务器漏洞: 诸如21/8080(st2)/7001/22/3389……
通信安全: 明文传输、token在cookie中传送……
web漏扫描【burpsuite 、skipfish[速度快]、w3af、owasp_zap】
将四阶段发现的洞,通过自己经验分析可能成功利用的全部漏洞都验证一遍,结合实施环境,搭建模拟环境进行试验,利用成功后再实施在目标系统中 :
第五阶段:渗透准备和实施攻击
实施渗透的准备环节 :
实施攻击:根据前几步的结果,实施精准攻击 :
第六阶段:形成报告
整理渗透工具:整理渗透中使用的代码、POC、EXP等。
整理收集信息:整个渗透过程中收集的一切信息。
整理漏洞信息:整个渗透过程中利用成功的所有漏洞,各种脆弱位置信息,为书写渗透报告做准备
按需整理:按照之前第一步跟甲方确认的范围、需求来整理资料,技术细节尽可能的详细,形成报告进行交付。
msf模块:
Exploits:利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)
Payload:成功 exploit 之后,真正在目标系统执行的代码或指令,/usr/share/metasploit-framework/modules/payloads/
shellcode 或系统命令
Single:all-in-one
Stager:目标计算机内存有限时,先传输一个较小的 payload 用于建立连接
stages:利用 stager 建立的连接下载的后续payload
stager、stages 都有多种类型,适用于不同场景
shellcode 是 payload 的一种,由于期建立正向/反向 shell 而得名
Auxiliary:执行信息收集、枚举、指纹探测、扫描等功能的辅助模块(没有 payload 的 exploit 模块)
Encoders:对 payload 进行加密,躲避 AV 检查的模块
Nops:提高 paylaod 稳定性及维持大小
计算机取证工具:
procdump 、dumpit [内存镜像]、volatility[内存分析]
DNS查询方式?
社工库?
社工库就是一个黑客们将泄漏的用户数据整合分析,然后集中归档的一个地方。这些用户数据大部分来自以前黑客们拖库撞库获得的数据包,包含的数据类型除了账号密码外,还包含被攻击网站所属不同行业所带来的附加数据。社会工程学,可能是因为,操作起来需要超高的情商,洞察人与人之间层级差别,利害关系,以及潜伏者一样胆大心细的伪装能力吧?
拖库和撞库的区别
参考答案
1
更改了端口,没有扫描出来;
站库分离;
3306端口不对外开放。
2
敏感文件、二级目录扫描;
站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点。
3
查看编辑器的名称版本,然后搜索公开的漏洞。
4
有些站点的上传文件类型限制是在前端实现的,这时只要增加上传类型就能突破限制了。
5
XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止Javascript读取cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。
CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer。
XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。
6
没开放3389 端口
端口被修改
防护拦截
处于内网(需进行端口转发)
7
1)注入;
2)失效的身份认证;
3)敏感信息泄露;
4)XML外部实体(XXE);
5)失效的访问控制;
6)安全配置错误;
7)跨站脚本(XSS);
8)不安全的反序列化;
9)使用含有已知漏洞的组件;
10)不足的日志记录和监控。
8
密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码;
身份认证漏洞中最常见的是会话固定攻击和cookie仿冒,只要得到Session或cookie即可伪造用户身份;
验证码漏洞中存在验证码允许暴力破解、验证码可以通过Javascript或者改包的方法来进行绕过。
9
原因很多,有可能Web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过。
10
先爆破用户名,再利用被爆破出来的用户名爆破密码;
其实有些站点,在登陆处也会这样提示;
所有和数据库有交互的地方都有可能有注入
11.SQL注入waf 绕过方式
12.文件上传漏洞绕过方式和防御方法?
绕过方法?
1.修改文件后缀
2.修改content-type 类型
3.%00截断 链接后面加入%00字段伪造合法的文件头
4.加入某种文件格式的前10个字节的幻数头绕过检查,通常判断文件格式只是判断文件前10个字节的二进制代码,绕过检查
防护方法?
1.前端js代码过滤
2.后端对上传文件的后缀做严格的检查
3.限制上传文件大小
4.采用随机数修改文件名【让攻击者无法获取上传脚本的文件名,无法访问上传的恶意代码】
5.将文件上传目录设置为不可执行,让web容器无法解析目录下的文件
13.什么是XSS,原理是什么?
跨站脚本攻击原理:
存储型:攻击者在存在xss漏洞的web页面存放一段有恶意攻击的代码【存储型】,普通用户访问到web页面时,就会自动执行攻击者留下的这串攻击代码。可能在用户不知情的情况下将用户的cookie 信息发送给攻击者。
反射型xss漏洞,用户访问这个页面有弹窗警告。
XSS存在的原因和防御方法:
根本原因url参数和用户输入提交给web server的内容没有做充分的过滤,但是完全的过滤是不太好实现的,攻击者有各种脑洞很大的方法来绕过服务器检查,最典型的就是编码 16进制 来绕过xss过滤。
防御:
1.在不需要html输入的地方,对html标签和特殊字符 <> & 过滤,将它转换为不能被浏览器执行的字符,对用户输入的html标签及标签属性做白名单过滤。
2.设置白名单 规定客户端哪些可以加载和执行的 CSP策略
14.SQL注入
什么是SQL注入?
在参数中或者是页面请求链接中,构造恶意的sql查询代码,能提交到服务器进行解析和查询得到数据库的其他信息。【总结不好】
SQL注入方式:
1.盲注:时间盲注 布尔盲注 DNSlog盲注
2.报错注入
3.宽字节
4.二次注入
5.布尔注入
SQL语句单引号被过滤了怎么办?
1.进行编码 16进制数 或者其他编码方式绕过
SQL注入waf 绕过方法?
白盒:代码审计的方式找到绕过方法
黑盒:1.架构层绕过 寻找源站点地址适用适用了云waf 场景
2.利用同网段主机内网注入绕过waf
3.资源限制角度 post 一个大的body,在线waf 考虑运行速度,一般不会对大的文件过率、
4.协议层面 协议未覆盖绕过 比如页面只对get 方式过滤没对post过滤或者对某一种格式的文件类型过滤 ;参数污染携带 多个参数
5.规则层面:注释符 空白符 函数分割符 浮点数 染过 利用error-base sql 注入 mysql特殊语法绕过
SQL注入防御方式?
1.参数化查询接口
2.特殊字符转义、过滤
3. 避免打印sql错误消息
4. 正则表达式匹配
5. 尽量不要用拼装的sql语句进行查询数据库内容 大概我了解到的这些
SQL注入的写入webshell的方式?
通过 select into outfile 的一种方式写入webshell
sqlmap --os-cmd 来写入 --os-shell
SQL注入工具?
为什么参数化查询能够防止SQL 注入
参数化方式原理:因为参数化的一个查询接口,可以参数 的过滤和执行重用保证sql语句的语义不变,保持一个原始的查询意思。原理是数据库服务器不会将参数的一些内容作为sql的指令的一部分来进行处理,是在数据库完成编译以后才套用这个参数,就算参数中写入=了恶意的指定,sql服务器也不会执行。所以就是能防止sql注入的
5.0以上和5.0一下的区别:
5.0以下没有 information_schema 这个表,数据库表列信息只能通过暴力的方式来区猜测的。5.0以下是多用户单操作
15.给一个测试站点要做什么事?
1.首先要得到站点ip地址、物理信息、位置
2.ip地址得到后,扫描服务器什么系统、版本号,服务器开了什么服务 、端口号 、版本 。在线工具去探测,然后猜测是用的什么中间件 apache ,nginx?
3.得到这个基础信息之后去看目标站点一个web 相关问题 有没有 csrf 、xss 或者sql 注入漏洞 工具 扫描awvs、brupsuite
4. 扫描问题后、探测漏洞利用价值和方式:sql注入注入点 如果没有得到就看它有没有一些防御的东西,防火墙 waf。这时候就需要绕过waf 或防火墙的检测
5. 主战渗透不了看有没有二级域名 工具[???]
16。判断站点的cms 有啥作用?
主要看已经曝光的程序漏洞,开源就审计
17 ECB 和 CBC 的分组模式区别?
18 https建立过程:
客户端如何验证证书