关于渗透测试的那些事儿

前言

互联网金融是这两年来在金融界的新兴名词,也是互联网行业一个重要的分支,但互联网金融不是互联网和金融业的简单结合,而是在实现安全、移动等网络技术水平上,被用户熟悉接受后,适应新的需求而产生的新模式及新业务,用户对电子银行最大的关注点是“安全性”,安全是电子银行业务发展的生命线。在一些金融平台陆陆续续出现过安全问题后,越来越多的此类平台也逐步意识到安全的重要性。我们曾经受邀请检测过网上部分互联网金融交易平台,在检测的过程曾发现部分平台存在着严重的安全问题。在本期的技术专题中,我们将针对所发现过的一些常见的安全问题进行总结,同时提出相应的解决方法,希望对开发的人员的代码安全能力提高有所帮助。

为什么开展渗透测试

渗透测试对企业至关重要,因为银行、保险、股票交易所等金融部门希望其数据得到保护,渗透测试对于确保安全至关重要。如果软件系统曾被黑客入侵,并且组织想要排除系统中是否还存在任何威胁,以避免将来再出现黑客攻击。主动渗透测试是防范黑客的最佳保障。

渗透测试的类型

渗透测试类型通常取决于范围以及组织是否要模拟员工、网络管理员(内部源)或外部源的攻击。渗透测试分为三种类型,分别
是黑盒渗透测试、白盒渗透测试、灰盒渗透测试。在黑盒渗透测试中,测试人员不了解要测试的系统,他们负责收集目标网络或系统的有关信息。在白盒渗透测试中,通常会为测试人员提供要测试的网络或系统的完整信息,包括IP地址架构、源代码、操作系统详细信息等。这可以被视为任何攻击的模拟内部资源(组织的雇员)。在灰盒渗透测试中,为测试者提供系统的部分知识。它可以被视为外部黑客的攻击,他们获得了对组织网络基础架构文档的非法访问权。

如何进行渗透测试

以下是执行渗透测试需要执行的活动:

1、 前期交互和情报收集 阶段

介绍和解释可用的工具和技术,根据客户需求为客户提供量身定制的测试方案。确定项目范围,项目范围圈出了要测试的内容。我们只能对已授权的资产进行测试,未授权的资产不能进行任何测试。确定周期,起始和终止时间。根据测试内容,评估所需要花的时间。收集渗透对象的信息(网络拓扑、系统配置、安全防御措施等)。

2、 威胁建模和漏洞分析阶段

利用上一阶段获取到的信息进行威胁建模和攻击规划。威胁建模;利用获取到的信息来标识目标组织可能存在的漏洞与缺陷。威胁建模有两个关键要素:资产分析和威胁分析。识别主要和次要资产并对其进行分类,并根据资产识别其可能存在的威胁。攻击规划;根据威胁模型确定下一步需要搜集的信息和攻击方法。漏洞分析是一个发现系统和应用程序中的漏洞的过程。这些漏洞可能包括主机和服务配置错误,或者不安全的应用程序设计。有些漏洞的验证,我们可以通过抓包改包很轻易的实现,但有些漏洞,验证的步骤很繁琐,则需要编写特定的概念验证(POC)来验证漏洞,这就要求测试人员有一定的开发能力。

3、 漏洞攻击和后渗透攻击阶段

在验证漏洞存在后,接下来就是利用发现的漏洞对目标进行攻击了。漏洞攻击阶段侧重于通过绕过安全限制来建立对系统或资源的访问,实现精准打击,确定目标的主要切入点和高价值目标资产。为实现系统安全,系统往往都会采用诸多技术来进行防御,如反病毒(IPS、IDS、WAF、…)、编码、加密、白名单等,在渗透期间,则需要混淆有效载荷来绕过这些安全限制,以达到成功攻击的目的。后渗透攻击,顾名思义就是漏洞利用成功后的攻击,即拿到系统权限后的后续操作。后渗透攻击阶段的操作,可分为两种:权限维持和内网渗透。

4、 报告阶段

报告必须包含详细的调查结果发现的漏洞风险及其对业务的影响建议和解决方案(如果有的话)

安全漏洞剖析

统计

我们对曾测试对约多家金融交易平台进行过一次漏洞统计,除了常见的一些如注入、跨站、CSRF、恶意上传等Web漏洞外,部分金融平台在业务功能上存在着严重的风险,如任意用户密码重置、交易参数恶意篡改等,与常见的注入、恶意上传不同,这些业务逻辑的漏洞不会直接影响服务器的安全,但却会直接影响用户的资金、账号的安全,其风险程度有过之而无不及,若被黑客所利用或被曝光,将严重影响平台公信力。
我们对常见的漏洞进行过统计,发现其中越权操作的占比最高,在我们所测试过的平台中基本都有发现,包括任意查询用户信息、任意删除等行为;最严重的漏洞出现在账号安全,包括重置任意用户密码、验证码暴力破解等。下面我们将以举例的方式介绍一些常见的安全问题。

案例

在金融交易平台中,该类型的安全漏洞主要出现在账号余额查询、账号个人资料篡改等功能上。下面我们通过几个简单的案例给大家进行说明。

1、任意会员登录

问题描述:可登陆任意会员账户,并成功登陆公司运营账户。

威胁等级:高

可利用性:易

步骤:任意填写手机号,抓包获取验证码。

安全建议:开发逻辑问题,登陆验证码泄露。

2、越权访问/操作

问题描述:在租赁意向单详情中,可以越权变更指派业务员。

功能模块:租赁意向单详情

测试地址:https://xxxxx.com/intentionreceipts/detail?id=xxxxxxx

通过测试发现在获取了salemanId(业务员id)和id(商品id)后,可直接变更指派业务员:

删除cookie后服务器返回指派成功

退出登陆,清除浏览器cookie,利用hackbar插件发送POST请求:

发现服务端返回指派成功的json:

风险程度:【中危】

风险分析:攻击者可利用该漏洞,对派单业务进行干扰。

3、Cookie重用

漏洞描述:用户退出系统后,服务器端cookie未失效,攻击者可利用此cookie向服务器继续发送服务请求。

测试地址:

https://xxxxxx.com/account/changePassword

首先登陆查看cookie和密码

Cookie: JSESSIONID=EFFE9CCA7502B277B4CFB80446B3C062;

密码:1

对重置密码业务进行抓包

然后先进行登出操作:

之后使用burpsuite发包发现302重定向之后又303,一直随后返回状态码200:

最后返回第一步修改密码的数据包点击go,发现服务器返回修改成功的json:

清除浏览器cookie后登陆:

发现密码已被重置为5

继续测试刚才截获的数据包:

发现仍可重置密码

观点

随着社会的进步,互联网金融交易平台将会越来越流行,平台涉及用户信息、资金等敏感信息,因此平台安全性更应受到重视,开发商必须加强开发人员的代码安全意识,建立代码安全开发规范,同时结合第三方渗透测试和代码审计的方式对即将上线的系统进行测试,提高平台的安全性。

随着社会的进步,互联网金融交易平台将会越来越流行,平台涉及用户信息、资金等敏感信息,因此平台安全性更应受到重视,开发商必须加强开发人员的代码安全意识,建立代码安全开发规范,同时结合第三方渗透测试和代码审计的方式对即将上线的系统进行测试,提高平台的安全性。

接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资料分享

当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值