加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

发布时间:2017-03-29 03:37:47 所属栏目:安全 来源:雷锋网
导读:副标题#e# 小明和小红是邻居。 小明会点儿技术,他暗恋小红。 但是情商低的小明在小红不知情的情况下,入侵了邻居小红的网络,顺手从小红电脑里偷出了小红的各种生活照,并做了轰天动地的表白网站,配上了这些图,自以为特别成功地发给了小红。 小明,卒。

关于扫描器,我们需要明白,扫描器并不是万能的,他主要的作用有两个:

  • 已知问题提前发现,先于黑客发现并修复漏洞,防止被外界利用
  • 新问题 快速review(0day、SRC、其他公司等近期多发高危case)

扫描器只能是一个公司安全整体情况的晴雨表,通过扫描结果反馈不足并不断改进。而这个晴雨表的效果来自于整体扫描能力的构建。

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

如何评判一个扫描系统是否优秀呢?Poc的数量、质量、是否有智能识别是一个很重要的指标。数量代表了能扫到的漏洞范围(但切记范围要本地化、实用,一些老旧、无大风险的漏洞其实并没有必要),质量代表了扫描效果(例如sql注入扫描poc,是否覆盖了各种注入类型等),智能识别能极大的降低由于“傻扫”带来的资源占用、任务时间延长。

另一个常见问题是大多数扫描器资产发现能力很弱,单靠爬虫等会使得扫描输入源(访问url和参数)很有限,输入源少了,自然整体扫到的漏洞也少。一种有效的方法是通过流量中、浏览器插件、access日志等获取更多的输入源补充到扫描任务中。

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

如果不满足商业扫描器的功能&灵活性,或者希望更深入了解扫描器的原理,或者干脆自己实现一款扫描器,那么可以参考下W3AF(如上图所示)。W3AF是一款很优秀的开源扫描器,使用python语言实现。其中的audit模块包含了常见漏洞的检测及判断方法。而crawl模块包含了爬虫、google hacking、dictionary list等多种资产发现方式。整体上来看,很具有参考价值。

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

WAF通常是放在了一些中小型企业DMZ区域的最外侧。同样的,WAF也不是万能的,别指望有了WAF就一切万事大吉了(这是大家一直的误区)。它所解决的问题,其一是让扫描器得不到想要的结果,混淆扫描器;其二是在拦截0day方面,由于是最外侧入口,有着不可比拟的优势,在业务没有统一修复之前,针对性利用代码,防范0day。

同时WAF也可以作为一些数据产出,比方说根据近期攻击情况做防御调整,比方说收集最新的POC等。

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

上面第一个是我们从WAF收集到的具有攻击性的POC(poc放出当天就发现了)。下面的两个是我们收集到的构造十分精巧的POC,后来放在我们一部分扫描规则中。

既然我已经说了,WAF在0day拦截方面有着非常好的效果,那么大家就跟随我一起,实际做下这次的struts2 0day在waf上的防御吧。

首先让我们先对struts2进行下漏洞分析。

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

首先diff代码,发现删除了LocalizedTextUtil.findText(......);。由于这次poc也很快放出来了,时间原因我们取个巧,一会,边触发poc边单步调试。

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

以上我们只通过diff代码向上回溯LocalizedTextUtil.findText函数的调用关系,便找到了重要信息:该漏洞的触发是在content type中,而且包含multipart/form-data时。

但是跟进了下findText寻找触发命令执行的关键点,并没有发现什么有价值信息(分支条件很多,不知道走到哪了)。这时候,poc上场(如果没有poc,这个分析将会技术要求很高了)。

Poc如下:

header["Content-Type"]="aaa_multipart/form-data %{#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,@java.lang.Runtime@getRuntime().exec('calc')};"

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

单步调试,发现走到evaluator.evaluate(var),弹出计算器。

分析之后,漏洞成因已经很清晰了。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!