7

现代化网站的渗透测试

 2 years ago
source link: https://blue-bird1.github.io/posts/newsitethink/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Feb 22, 2019

现代化网站的渗透测试

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

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

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

  • 实现现代化前端技术, 如三大框架, 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

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

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都可以模拟.随着发展,只会重复的渗透人员会面临淘汰.也能让安全人员拿出精力进行安全研究,而不是重复性的测试.

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


网络安全

1980 Words

2019-02-22 13:07 +0000


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK