“蓝队防守侧面试知识总结”
面试题目主要分为web渗透、内网横向、应急响应、流量分析几个大类。
web渗透
sql注入
sql注入的原理:
对用户传入参数过滤不严导致恶意sql语句拼接到数据库从而造成漏洞//利用一些sql语句与后端数据库交互,获取数据库信息。
注入分类:
1. 布尔盲注:即可以根据返回页面判断条件真假的注入。 2. 时间盲注:(sleep、benchmark)即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行,(即页面返回时间是否增加)来判断。 3. 联合查询注入:可以使用union的情况下的注入。 4. 堆叠注入:可以同时执行多条语句的执行时的注入。 5. 宽字节注入:数据库使用jbk编码时反斜杠会被编译,通过利用%df或者%aa与反斜杠组成汉字,绕过编译 6. 二次注入:利用函数(get_magic_quotes_gpc)将一些恶意数据处理一下,插入到数据库中,再次使用时,直接在数据库中直接调取命令,不进行检测 7. 报错注入:即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。 。。。。盲注种类:
1 | 1. 时间盲注:sleep(),benchmark()【通过修改执行次数达到延迟】。 |
常见报错注入函数:
1
2
3
4updatexml():xml_document、xpath_string、new_value
extractvalue():xml_document、xpath_string
exp()
floor()- sql注入获取webshell
1
2
3
4
5
6
7
8
9
10
11
12(1)os-shell
(前提条件:①要求为DBA,--is-dba(phpstudy搭建的一般为DBA)
②知道网站的绝对路径
③GPC为off,php主动转义的功能关闭)
(2)向数据库写入文件
(into_outfile 前提条件:①web目录具有写权限,能够使用单引号
②知道网站绝对路径(根目录,或则是根目录往下的目录都行)
③secure_file_priv没有具体值(在mysql/my.ini中查看))
(3)写文件:
select ‘一句话’ into outfile ‘路径’
select ‘一句话’ into dumpfile ‘路径’
select ‘<?php eval($_POST[1]) ?>’ into dumpfile ‘d:\wwwroot\baidu.com\nvhack.php’;- sql注入写入一句话的paylaod以及需要的条件:
1
2
3
4
5
6
7
8(1)root权限、绝对路径、未编译
(2)有网站的绝对路径
(3)mysql服务对网站的网络路径有写权限
(4)文件夹权限;文件权限;用户权限
(5)secure_ file _ priv='' 表示不允许写入或导出
(6)启动phpstudy,在my.ini中添加此句
(7)mysql连接用户有file权限
(8)未对sql语句进行转义sql注入最好修复建议:
1
2
3
4预编译
(1)原理:使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行
(2)简单的说: 参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑
(3)其他方法有:严格区分用户权限、强制参数化语句、检验用户输入的信息、利用专业的漏洞扫描工具、利用陷阱账户、关闭错误提示、waf
xss(跨站脚本攻击)
- xss原理:
1 | web程序对用户输入的内容过滤不严格,使得前端用户可以将恶意的html/js代码插入到用户浏览的网页中,当其他用户访问时就会执行恶意代码。 |
- xss分类
1 | 反射型:前端->后端->前端 |
- XSS和CSRF的区别
1 | (1)XSS不需要登录,CSRF需要用户登录信息 |
xxe(外部实体注入)
- xxe漏洞原理:程序在解析XML文档输入时,没有禁止外部实体的加载,导致可加载外部的恶意文件,造成文件读取,命令执行,内网扫描,攻击内网网站等危害
- xxe使用的伪协议:
1 | file:用来加载本地文件 |
- xxe漏洞的利用:
1 | 探测内网信息、攻击内网网站、读取本地文件、远程读取文件、读取php源码 |
- 无回显的xxe怎么利用
1 | (1)使用dnslog平台进行数据外带 |
csrf(跨站请求伪造)
CSRF原理:程序对用户的身份校验不严,导致攻击者可以利用用户未过期的cookie,执行用户意料之外的操作。
CSRF防御方法:
1
2
3验证Refefer来源
在请求地址中添加token并验证
在http头中验证自定义属性(了解)
ssrf(服务端请求伪造)
- ssrf的原理:用存在可以从其他服务器获取数据的功能,但是对服务器的地址并没有做出严格校验,导致应用程序可以访问任意URL链接。
- ssrf的头部协议:
1 | http:超文本传输协议 |
- CSRF和SSRF的区别:
1 | CSRF是跨站请求伪造攻击,由客户端发起; 由于未验证refer来源,导致攻击者可以利用用户的cookie访问网站。 |
代码执行
- 代码执行的原因:
1 | php中的一些函数可以将字符串当作php代码执行,如果这些函数的参数对用户输入的内容控制不严格,就会造成任意代码执行。 |
- 代码执行的函数:
1 | eval、assert、preg_replace、create_function、call_user_func、call_user_func_array |
- 代码执行的防御芝士:
1 | 1、使用addslashes函数将参数转义或使用黑白名单名单 |
命令执行
命令执行的成因: 应用程序在调用可以执行系统命令的函数时,用户可以控制函数的参数或者参数本身,利用系统命令拼接符将恶意命令拼接到正常的命令语句中。
命令执行函数的成因:
1 | system、passthru、exec、pcntl_exec、shell_execpcntl_exec、shell_exec、popen,`` |
- 命令执行的绕waf的方式:
1 | 1、无回显:使用crul dnslog盲注 |
- 命令执行防御:
1 | 1、防御方法实在php.ini中禁止这些函数system,exec |
序列化
- 序列化和反序列化原理:
序列化:此字符串包含了表达的value的字节流,可以存储在任意位置
反序列化:对单一的反序列化的变量进行操作,将其转换为原来的值
- 漏洞产生的原理:
1 | (1)反序列化函数的参数可控 |
存在反序列化漏洞的中间件:
1 | weblogic T3反序列化/wls-anys xml格式反序列化 |
水平越权和垂直越权
水平越权:A用户和B用户权限相同,但是使用A的权限操作B用户的数据。如果能够成功操作,则称之为水平越权操作。
垂直越权:A用户比B用户权限低,但是使用A的权限操作B用户的数据。如果能够成功操作,则称之为水平越权操作。
框架及其漏洞
Apache shiro:
ThinkPHP:
struct2:
Fastjson:
Apache Log4j:
Spring Framework
Weblogic:
F5:
流量分析
应急响应
内网横向
内网渗透流程
- 确定跳板机网络环境:拿到跳板机的权限后,看看跳板机是否在域内。(用net user /domain命令检查跳板机是否属于某个域环境。)
- 探测内网存货主机:探测内网中的存活主机,用扫描工具ping探测内网存活主机。
- 提权:在获取的跳板机上尝试提升权限,利用系统漏洞或配置错误等方法进行本地提权。
- 获取hash凭证:提取系统中用户凭据,尤其是域用户哈希值,用Mimikatz提取本地或域用户的密码哈希。
- 进行横向移动:利用获取的凭证用PsExec、WMI等工具进行横向移动,例如使用PsExec、WMI等工具。在内网环境中从一个系统移动到另一个系统。
- 定位域控制器:通过查询DNS记录、NetBIOS名称解析或使用域内查询工具定位域控制器。
- 提权域控制器:看有没有直接提权域控制器的漏洞。
- 权限维持:制作制作黄金票据(Golden Ticket)等进行域管理员权限维持。
- 日志清理与痕迹擦除:用日志清理工具或手动删除相关日志记录。
Kerberos认证协议中白银票据与黄金票据的原理和区别?
- 金票(Golden Ticket)原理:Kerberos认证时,客户端通过AS身份认证服务后,AS会返回客户端一个Logon Session Key和TGT(授权票据)。
因为登录会话密匙不在KDC(密匙分发中心)里,krbtgt账户的NTLM Hash又是固定的,所以只要得到krbtgt的身份认证密码哈希(NTLM Hash),就可以伪造TGT和登录会话密匙,来跳过AS的验证,让客户端与 TGS(Ticket-Granting Service)进行交互。黄金票据使得攻击者不用提供账户和密码即可进行认证,即使域管理员密码更改也不会影响黄金票据的使用。
登录会话密钥:Logon Session Key
票据授权票 :Ticket-Granting Ticket (TGT)
密匙分发中心:Key Distribution Center(KDC)
Krbtgt 账户 :票据授权服务账户,用户登录时此账户生成 TGT。
允许用户不重复输入密码的情况下访问其他服务。
票据授权服务:Ticket Granting Service(TGS)
NTLM Hash :指Microsoft的NT LAN Manager(NTLM)身份验证协议中使用的密码哈希值。它主要用于Windows操作系统中的身份验证过程。
(身份认证协议密码哈希)NTLM使用MD4算法对用户密码进行哈希处理,生成一个固定长度哈希值。
- 白银票据(Silver Ticket)的原理:
白银票据是伪造的服务票据(ST,Service Ticket),用于Kerberos认证的第三步,客户端携带ST和Authenticator向服务器上的服务发起请求。
服务器收到客户端请求后,用Master Key解密ST获取Session Key,然后用Session Key解密Authenticator来验证客户端的身份。验证成功,客户端就可访问服务器上的指定服务。所以只
需知道服务器用户的Hash,就可以伪造ST,且此过程不会经过KDC。
注意:伪造ST只对部分服务起作用
身份验证器:Authenticator
服务票据 :Service Ticket(ST)
金票与银票的区别:
获取的权限不同:
黄金票据:提供对整个域的权限,因为它是基于krbtgt账户的TGT。
白银票据:仅限于特定服务的权限,因为它伪造的是针对单个服务的ST。
认证流程不同:
黄金票据:跳过AS验证,直接与TGS交互。
白银票据:不经过KDC,直接与服务进行交互。
加密方式不同:
黄金票据:使用krbtgt的NTLM Hash进行加密。
白银票据:使用服务账户的NTLM Hash进行加密。
针对kerberos的攻击有哪些?
*用户名爆破:*
猜测用户名来尝试获取有效的Kerberos账户信息。
*密码喷洒和密码爆破:*
用常见的密码或密码列表,对多个账户进行密码尝试,以找到有效的凭证。
****Kerberoasting:****Kerberos烤肉攻击
利用Kerberos TGS(Ticket-Granting Service)的票据,暴力破解服务账户的密码哈希。
****AS-Rep Roasting:****AS响应攻击
利用KDC返回的AS-REP消息中的某些属性,尝试破解用户密码哈希。
身份验证服务回复:AS-REP(Authentication Service Reply)
*黄金票据和白银票据:*
黄金票据伪造TGT,用于获取域管理员权限;白银票据伪造ST,用于访问特定服务。
*MS14-068**漏洞利用**:*
查看补丁情况:systeminfo | findstr “3011780”
利用Kerberos协议中的漏洞CVE-2014-6324,允许攻击者伪造Kerberos票据,来提升权限。
*票据传递(ptt/ptk/ptc):*
通过传递Kerberos票据来模拟用户身份,进行权限维持或横向移动。
*mimikatz加密降级攻击(万能钥匙):*
利用mimikatz工具对Kerberos加密方式进行降级攻击,以获取明文凭证。
*使用恶意的Kerberos证书做权限维持:*
通过植入恶意的Kerberos证书,攻击者可以在系统中长期维持权限。
*非约束委派、约束委派、基于资源的约束委派:*
利用Kerberos委派机制中的配置不当,允许攻击者模拟用户身份进行权限提升。