对现代化网站的渗透测试的思考 

前言 

首先定义本文所说的现代化网站. 现代化网站是指符合以下多个特征的对外服务.

  • 储存,数据库,网站程序等服务器高度分离

  • 实现现代化前端技术, 如三大框架, html5新api, websocket

  • 基于虚拟化技术的服务部署

  • 使用现代后端框架,如ssm,think5,gin,django

  • 外部服务高度集成

  • 多种客户端,包括Android,Ios,windows

篇幅有限, 不再列举,但相信读者应该能理解笔者的意思.

不属于现代化网站最典型的例子就是 下载cms,安装lnmp,直接安装网站程序. 现在渗透教程基本都是基于不属于现代化网站的假设(实际上我还没发现基于渗透现代化网站假设的教程)

现代化特征对渗透测试的影响 

笔者按自己的思路逐个列举有影响的特征

CDN/反向代理 

使用了CDN将会隐藏真实IP, 导致常规端口扫描,弱口令扫描全部失效. 但可以通过寻找真实ip来解决. 反向代理则无解, 甚至可能只把代理服务器暴露于公网.敏感服务全在内网

对绕过CDN这个问题, 已经有了一定的研究.有了安全工具, 如fuckcdn

数据分离 

上传文件服务器分离,将导致上传webshell技术失效, 很显然文件服务器是不可能执行webshell的. 上传危害最多只能达到上传html

websocket 

之所以专门把websocket作为一点, 是因为感觉websocket属于盲区, burp,浏览器均不支持websocket的渗透测试.

新的h5 api 

html5提供了新的api,但是这方面的安全问题还没有被开发人员重视.这个可以从hackone平台上的漏洞报告看出.例如DOM Based XSS in www.hackerone.com via PostMessage .

postmessage这类api的输入是不可控的,如果不进行控制, 就是安全问题.

前后端分离 

使用三大框架(vue,react, angular)的前端, 对后端进行分离. 也就是不再将url参数直接渲染到html,而通过JavaScript操作.反射xss全部失效,常规储存xss在框架的安全性下也变得渺茫. JavaScript操作带来的xss反而变为主流.这也对渗透测试人员阅读JavaScript代码带来了挑战 也带来了部分好处,由于在前端操作,后端暴露的接口将会更多.

后端框架 

应用了框架后,简单注入全部失效,csrf部分失效, id=x这种低级注入消失.出现注入的点趋向二次注入, 编码注入. sqlmap是不提供原生支持的.

外部服务接入 

对某些功能不自行进行开发,使用其他公司的服务.这部分功能的安全性取决与该公司的安全水平, 不过真挖出漏洞就属于通用0day了.

由于对接入服务的理解,接入处反而容易出现问题, 比如未预料的异常.(接入开发: ???,这个问题你怎么不在服务上处理.服务开发: ???,这个你怎么不在接入处处理)

多服务端 

提供了多平台客户端, 这就对渗透测试多平台渗透能力发出了挑战. 不但要会web,还要会安卓/ios渗透测试, 反编译(客户端总是会有一些未公开的api).甚至还有IOT

风控 

好的风控系统 基本阻止了邮箱/短信轰炸.对需要爆破的漏洞也降低了危害.

Xass 

Sass, Pass,Fass等各种服务公司不断涌现, 可能出现刚拿下shell,想内网渗透,发现实际上服务是在某Sass上.或者发现服务api是在Fass上的,根本没有服务器

虚拟化 

docker提供了优秀的服务分离,就算拿到了shell,也只是拿到了容器的shell. 容器虚拟化不一定安全,但是现在对这方面的研究还不是很多, 完全没有对绕过UAC的研究多.

对安全教程的思考 

现在一些安全教程还是停留在旧时代, ' and 1=1, </x><script>alert(1)</script>固然是基础,挖掘思路也很重要. 但是随着技术的发展, 渗透和开发技术也会走的更近, 新开发技术的爆发式增长,不可能像列中间件漏洞一样全部写出它们的渗透技术.就算有人写出来,等写出来黄花菜都凉了. 安全教程应该更强调编程, 而不是培养只会用扫描器的驻场工程师.令人欣慰的是现在年轻的渗透测试人员大部分都会编程,还不止一门(就笔者圈子来看).

对安全工具的思考 

扫描器 

随着技术的扩散,老式扫描器未来会面临失效.不支持浏览器模拟,只会抓a标签的扫描器, 对前后端分离无能为力. 基于流量和基于爬虫的扫描器会合并, 走向模拟获取流量进行扫描的模式 对app的扫描器目前不支持对web的渗透测试

人工智能 

人工智能火热,各路安全公司都号称使用了AI技术(实际上怎么样就不知道了). 除了使用AI技术对AI进行对抗, AI扫描器也在发展中. 这部分知识,我推荐兜哥的AI安全三部曲.

可以重复的渗透测试动作,AI都可以模拟.随着发展,只会重复的渗透人员会面临淘汰.也能让安全人员拿出精力进行安全研究,而不是重复性的测试.

尾言 

现在正是承前启后的时代,旧的开发技术未被淘汰,新的开发技术正在发展, 谁会在这个时代引领潮流, 或是被淘汰.让我们拭目以待吧