华云an安服实习-记一次面试题

1、看你简历上说擅长java、php代码审计,也没有类似的经历能够分享一下,比如说独自审的一套代码或者开源项目,从中发现的一些比较高危的问题

在我之前的工作中,我曾经负责对一个开源的PHP项目进行了代码审计。这个项目是一个内容管理系统(CMS),被广大开发者用于快速搭建网站。由于它的普及性和开源性质,对其进行安全审计显得尤为重要。

1. 审计过程

在审计过程中,我首先熟悉了项目的整体架构和代码结构。我阅读了项目的文档,查看了代码仓库的提交记录,并了解了项目的主要功能和常用模块。

接下来,我使用了一些自动化的代码审计工具,如PHPStan和SonarQube,对代码进行了静态分析。这些工具帮助我发现了代码中可能存在的一些潜在问题,如未定义的变量、未处理的异常、SQL注入风险等。

在静态分析的基础上,我进一步对代码进行了手动审查。我重点关注了用户输入处理、数据库操作、文件上传等安全敏感的部分。我查看了相关的函数和类,分析了它们的逻辑和实现方式,尝试寻找可能的安全漏洞。

2. 发现的问题

在审计过程中,我发现了一些比较高危的问题。其中一个比较典型的问题是SQL注入漏洞。在项目的一个模块中,用户输入没有经过充分的过滤和验证,直接被拼接到SQL查询语句中。这导致了潜在的SQL注入风险,攻击者可以利用这个漏洞执行恶意的SQL语句,获取敏感信息或者对数据库进行非法操作。

为了验证这个问题的真实性,我尝试构造了一些恶意的输入,并成功地触发了SQL注入漏洞。我及时向项目维护者报告了这个问题,并提供了修复建议。

3. 修复建议

针对发现的SQL注入漏洞,我给出了以下的修复建议:

  • 使用参数化查询或预编译语句来处理用户输入,避免直接将用户输入拼接到SQL语句中。
  • 对用户输入进行严格的过滤和验证,确保输入的安全性和合法性。
  • 更新数据库驱动库或ORM框架到最新版本,以确保它们提供了足够的安全防护措施。

除了SQL注入漏洞外,我还发现了一些其他的问题,如跨站脚本攻击(XSS)漏洞、文件上传漏洞等。我也针对这些问题给出了相应的修复建议。

2、在审项目的时候,比如一个web网站,简单说说思路

在审计一个Web网站项目时,我的思路通常遵循以下几个步骤:

1. 信息收集

首先,我会对目标网站进行基本的信息收集。这包括了解网站的功能、架构、使用的技术栈(如后端语言、前端框架、数据库类型等)、第三方库和插件的使用情况等。我还会查看网站的robots.txt文件、sitemap.xml文件以及网站的源代码,以获取更多关于网站结构和功能的信息。

2. 威胁建模

在收集了足够的信息后,我会进行威胁建模。这一步主要是根据收集到的信息,分析网站可能面临的安全威胁和攻击面。我会考虑各种攻击场景,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、文件上传漏洞、认证和授权问题等。

3. 自动化扫描

接下来,我会使用自动化扫描工具对网站进行初步的漏洞扫描。这些工具可以帮助我快速发现一些常见的安全漏洞,如SQL注入、XSS等。但需要注意的是,自动化扫描工具可能会产生一些误报或漏报,因此扫描结果需要人工进一步验证和分析。

4. 手动测试

在自动化扫描的基础上,我会进行更深入的手动测试。我会针对威胁建模中识别的攻击面,逐一进行手动验证和测试。这包括输入验证测试、权限提升测试、业务逻辑测试等。在手动测试过程中,我可能会使用各种工具和技术,如代理工具、抓包工具、模糊测试等。

5. 漏洞验证和报告

当发现潜在的漏洞时,我会进行漏洞验证,确保漏洞的真实性和可利用性。一旦验证了漏洞的存在,我会记录漏洞的详细信息,包括漏洞类型、影响范围、攻击方式等,并生成漏洞报告。漏洞报告通常会提交给网站的管理员或安全团队,以便他们及时修复漏洞。

6. 修复建议

除了报告漏洞外,我还会提供修复建议。我会根据漏洞的类型和影响范围,给出相应的修复方案和建议。这些建议可能包括修改代码逻辑、更新库和插件、加强输入验证等。

7. 总结和反馈

最后,我会对整个审计过程进行总结和反馈。我会分析审计过程中遇到的问题和困难,总结经验和教训,并提出改进建议。

3、简单描述一下什么是水平越权,什么是垂直越权,我要发现这两类漏洞,那我代码审计要注意什么地方

水平越权是指同一权限级别的用户之间,一个用户能够访问或操作另一个用户的资源。例如,用户A和用户B都是普通用户,但用户A通过某种手段能够访问到用户B的私有数据,这就构成了水平越权。在实际应用中,水平越权多发生在一些能够对数据进行增、删、改、查的功能点,如果系统没有严格地验证用户身份或对数据做细分及校验,就可能导致此类漏洞。

垂直越权则是指不同权限级别的用户之间,低权限用户能够访问或操作高权限用户的资源。这通常是由于Web应用程序没有做权限控制,或者仅在菜单上做了权限控制,导致恶意用户只要猜测其他管理页面的URL,就能访问或控制其他角色拥有的数据或页面,从而达到权限提升的目的。垂直越权也被称为权限提升漏洞,是一种“基于URL的访问控制”设计缺陷引起的漏洞。

在代码审计过程中,要发现这两类漏洞,需要注意以下几点:

  1. 权限控制机制:审查系统中是否有完善、细致的权限控制机制。对于每个功能点,都要确认是否有相应的权限控制,并且这些控制是否严格、有效。
  2. 用户身份验证:确保系统对每个用户的身份都进行了严格的验证。特别是在执行敏感操作时,如访问其他用户的私有数据或进行权限提升,系统应该再次验证用户的身份和权限。
  3. 数据访问和操作的校验:对于每个数据访问和操作请求,系统都应该进行严格的校验,确保请求的用户有权限访问或操作该数据。特别是对于基于URL的访问控制,要防止恶意用户通过猜测URL来访问无权访问的资源。
  4. 输入验证和过滤:对于用户输入的数据,要进行严格的验证和过滤,防止恶意用户输入恶意数据来绕过权限控制。例如,防止SQL注入攻击、跨站脚本攻击等。
  5. 日志和监控:建立完善的日志和监控机制,记录用户的操作和行为。这样即使发生了越权访问或操作,也能及时发现并追溯源头。

4、解释一下SSRF

SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种安全漏洞,由攻击者构造形成,利用服务端对用户提供的可控URL地址过于信任且未经严格检测,从而伪造服务器端发起的请求。攻击者可以利用SSRF攻击内网或其他服务器,获取敏感数据或绕过某些安全防御措施。

具体来说,SSRF的攻击方式包括但不限于:

  1. 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。
  2. 攻击运行在内网或本地的应用程序。
  3. 对内网web应用进行指纹识别,通过访问默认文件实现。
  4. 攻击内外网的web应用,主要是使用get参数就可以实现的攻击。
  5. 利用file协议读取本地文件等。

为了防御SSRF攻击,可以采取以下措施:

  1. 过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件,那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
  2. 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
  3. 限制请求的端口为http常用的端口,比如80、443、8080、8090等端口。
  4. 黑名单内网ip,避免应用被用来获取内网数据,攻击内网。
  5. 禁用不需要的协议,仅仅允许http和https请求。这样可以防止类似于file:///, gopher://, ftp:// 等引起的问题。

5、如何防御SSRF,场景:http://ip/?url=imagejipg

验证:你可以直接右键图片,在新窗口打开图片,如果是浏览器上URL地址栏是http://www.baidu.com/img/bd_logo1.png,说明不存在SSRF漏洞。经过简单的排除验证之后,我们就要验证看看此URL是否可以来请求对应的内网地址。在此例子中,首先我们要获取内网存在HTTP服务且存在favicon.ico文件的地址,才能验证是否是SSRF漏洞。

防御:限制请求的协议,例如限制只能是HTTP,HTTPS
使用DNS缓存或者Host白名单的方式
设置URl白名单或者限制内网IP等。

6、常见的内网段有哪些,他们的掩码是什么

常见的内网IP段以及对应的掩码如下:

  1. A类地址
    • IP段:10.0.0.0 - 10.255.255.255
    • 掩码:255.0.0.0
    • 网络范围:10.0.0.0/8,这里的“/8”表示网络部分占8位。
  2. B类地址
    • IP段:172.16.0.0 - 172.31.255.255
    • 掩码:255.255.0.0
    • 网络范围:172.16.0.0/12,这里的“/12”表示网络部分占12位。
  3. C类地址
    • IP段:192.168.0.0 - 192.168.255.255
    • 掩码:255.255.255.0
    • 网络范围:192.168.0.0/16,这里的“/16”表示网络部分占16位。

7、教育系统攻防演练,分享一个渗透的例子

场景描述

某教育机构的内部网站提供了一个学生信息管理系统,该系统允许教师和管理员查看和编辑学生的个人信息、成绩和出勤记录等。系统使用用户名和密码进行身份验证,并且存在一些已知的安全漏洞。

渗透测试步骤
  1. 信息收集
    • 渗透测试团队首先通过搜索引擎、Whois查询等方式收集目标网站的相关信息,如IP地址、域名、子域名、服务器类型等。
    • 团队还通过访问网站,了解其功能、页面结构、登录机制等。
  2. 漏洞扫描
    • 使用自动化工具对目标网站进行漏洞扫描,发现网站存在SQL注入漏洞和跨站脚本攻击(XSS)漏洞。
  3. 利用SQL注入漏洞
    • 渗透测试团队在登录页面的用户名或密码字段中输入特制的SQL注入代码。
    • 通过观察系统的响应,团队成功绕过了身份验证,并获取了数据库中的敏感信息,包括管理员的用户名和密码。
  4. 提升权限
    • 使用获取到的管理员凭据登录系统,渗透测试团队获得了对系统的完全控制权。
    • 他们能够查看和修改所有学生的信息,包括成绩和出勤记录。
  5. 植入恶意代码
    • 利用跨站脚本攻击(XSS)漏洞,团队在系统中植入了恶意代码。
    • 当其他用户(如教师或管理员)访问受感染的页面时,恶意代码会被执行,可能导致用户凭据被盗取或系统被进一步破坏。
  6. 清理痕迹与报告
    • 在完成渗透测试后,团队清理了所有留下的痕迹,确保系统恢复到原始状态。
    • 他们编写了一份详细的渗透测试报告,列出了发现的所有漏洞、利用方法、潜在影响以及修复建议。
修复措施与建议
  • 对输入进行严格的验证和过滤,防止SQL注入和跨站脚本攻击。
  • 使用参数化查询或预编译语句来访问数据库,避免直接拼接SQL语句。
  • 实施最小权限原则,确保每个用户只能访问其所需的最少资源。
  • 定期更新和打补丁系统及其依赖组件,以修复已知的安全漏洞。
  • 建立安全审计和监控机制,实时检测并响应潜在的安全事件。
  • 对员工进行安全意识培训,提高他们对网络安全的认识和防范能力。

8、除了学校,有没有试过渗透别的系统

看个人情况

9、这样的场景(给内网靶标),渗透内网系统的思路

攻击思路主要有2种:

攻击外网服务器,获取外网服务器的权限,接着利用入侵成功的外网服务器作为跳板,攻击内网其他服务器,最后获得敏感数据,并将数据传递到攻击者,看情况安装长期后门,实现长期控制和获得敏感数据的方式。

攻击办公网的系统、办公网电脑、办公网无线等方式,一般是采用社工,实现控制办公电脑,再用获得的办公网数据,可能是内网的各种登录账号和密码,再获取办公网或者生产网的有用数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pluto-2003

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值