渗透测试10道高频面试题

CSRF:测试CSRF漏洞,观察是否可以操纵系统执行攻击者的操作。

文件上传漏洞:测试系统是否仅允许上传受信任的文件。测试上传的数据并尝试上传恶意文件,以查看系统的反应。

逻辑漏洞:测试系统是否存在逻辑漏洞。这要求深入地了解系统的工作原理和逻辑,以识别可能存在的漏洞。

8、常用SQL注入有哪些?

SQL 注入是一种常见的网络攻击方式,攻击者利用恶意构造的 SQL 语句,从应用程序的输入口执行非授权的操作或者获取敏感数据。以下是一些常用的 SQL 注入技术:

基于字符串拼接的注入:通过将恶意代码嵌入到 SQL 查询中的字符串参数中实现注入攻击,例如 `' or 1=1--`。

基于数字型注入:攻击者通过将恶意代码嵌入到 SQL 查询中的数字型参数中实现注入攻击,例如 `1; DROP TABLE users--`。

盲注注入:攻击者利用响应时间来判断查询结果是否正确,例如使用 `sleep()` 函数等技术手段。

堆叠查询注入:攻击者将多个查询语句组合成一个查询语句,以此绕过应用程序的安全检查和过滤。

键盘注入:攻击者利用键盘输入和自动完成功能,将恶意代码嵌入到 SQL 查询中,从而实现注入攻击。

直接请求注入:攻击者直接构造 HTTP 请求,并将恶意代码作为参数传递给服务器进行攻击。

需要注意的是,在进行 SQL 注入攻击时,攻击者必须针对具体目标应用程序进行定制化攻击,并且需要了解目标系统的数据库类型、应用程序逻辑和安全机制等方面的信息。防范 SQL 注入攻击的方法包括参数化查询、输入过滤和加密处理等方面的措施。

9、列举一个SQL注入的实例?

假设有一个登录表单,用户名和密码都是以POST方式提交到服务器。服务器端处理代码如下:

```

$username = $_POST['username'];

$password = $_POST['password'];

$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";

$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // 登录成功

} else {

    // 登录失败

}

```

这段代码存在SQL注入漏洞。一个恶意用户可以在用户名或密码框中输入恶意代码,从而使服务器执行非预期的操作。例如,以下输入可以组成一个SQL注入攻击:

```
用户名: ' OR '1'='1
密码: ' OR '1'='1
```

这会将服务器构造的SQL语句变为:

```
SELECT * FROM users WHERE username='' OR '1'='1' AND password='' OR '1'='1'
```

由于'1'='1'永远成立,所以这个查询将返回表中的所有行,使得攻击者可以成功登录,无需正确的用户名和密码。

10、CSRF和XSS和XXE有什么区别,以及修复方式?

CSRF (Cross-site request forgery)、XSS (Cross-site scripting)和XXE (XML External Entity) 都是常见的Web应用程序安全漏洞,它们的区别和修复方式如下:

CSRF:攻击者利用用户已经登录的身份,在用户不知情的情况下向服务器发送恶意请求,例如修改密码、转账等。修复方式包括:

  • 添加CSRF Token:在每个表单和链接中添加一个随机生成的Token,确保请求是来自合法的源。
  • 添加Referer检查:检查请求的Referer是否来自合法的源,防止跨站请求。

XSS:攻击者向Web应用程序注入恶意脚本,当用户访问受影响的页面时,恶意脚本会执行并获取用户的敏感信息。修复方式包括:

  • 输入验证:对用户输入的数据进行验证,防止恶意脚本的注入。
  • 输出编码:对从数据库或其他来源获取的数据进行编码,防止恶意脚本的注入。
  • CSP:使用 Content Security Policy (CSP)来限制页面中脚本的来源,防止恶意脚本的注入。

XXE:攻击者利用XML解析器的漏洞来读取敏感数据或执行恶意代码。修复方式包括:

  • 禁止外部实体:禁止解析器加载外部实体,防止恶意实体的注入。
  • 使用安全解析器:使用安全的XML解析器,例如SAX解析器,来避免XXE漏洞。
  • 使用白名单:对XML文件进行白名单过滤,只允许特定的实体和标签,避免恶意实体的注入。

11、CSRF、SSRF和重放攻击有什么区别?

CSRF (Cross-site request forgery)、SSRF (Server-side request forgery)和重放攻击都是常见的Web应用程序安全漏洞,它们的区别如下:

CSRF:攻击者利用用户已经登录的身份,在用户不知情的情况下向服务器发送恶意请求,例如修改密码、转账等。攻击者通常会通过诱导用户点击链接或访问恶意网站来发起攻击。

SSRF:攻击者利用服务器端的漏洞来发送恶意请求,例如向内部网络发起请求、绕过防火墙等。攻击者通常会构造一个特定的请求,使服务器将其发送到指定的目标地址。

重放攻击:攻击者拦截并记录合法的请求,然后将其重放到服务器上,例如重复提交订单、投票等操作。攻击者通常会使用代理工具来拦截和修改请求。

修复这些漏洞的方式也有所不同:

① CSRF:修复方式包括添加CSRF Token、添加Referer检查等。

② SSRF:修复方式包括限制请求的目标地址、禁止访问内部网络等。

③ 重放攻击:修复方式包括使用时间戳或随机数来防止重复请求、使用加密协议来保护数据传输等。

上一页12下一页


留言