“蓝队防守侧面试知识总结”

​ 面试题目主要分为web渗透、内网横向、应急响应、流量分析几个大类。

web渗透

sql注入

  • sql注入的原理:

    对用户传入参数过滤不严导致恶意sql语句拼接到数据库从而造成漏洞//利用一些sql语句与后端数据库交互,获取数据库信息。

  • 注入分类

    1. 布尔盲注:即可以根据返回页面判断条件真假的注入。
    2. 时间盲注:(sleep、benchmark)即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行,(即页面返回时间是否增加)来判断。      
    3. 联合查询注入:可以使用union的情况下的注入。
    4. 堆叠注入:可以同时执行多条语句的执行时的注入。
    5. 宽字节注入:数据库使用jbk编码时反斜杠会被编译,通过利用%df或者%aa与反斜杠组成汉字,绕过编译
    6. 二次注入:利用函数(get_magic_quotes_gpc)将一些恶意数据处理一下,插入到数据库中,再次使用时,直接在数据库中直接调取命令,不进行检测
    7. 报错注入:即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
    。。。。
    
  • 盲注种类:

1
2
3
1. 时间盲注:sleep(),benchmark()【通过修改执行次数达到延迟】。
2.布尔盲注:布尔盲注,与普通注入的区别在于“盲注”。在注入语句后,盲注不是返回查询到的结果,而只是返回查询是否成功,即:返回查询语句的布尔值。因此,盲注要盲猜试错。由于只有返回的布尔值,往往查询非常复杂,一般使用脚本来穷举试错。
3.dnslog盲注:利用函数load_file(),读取数据库的信息
  • 常见报错注入函数:

    1
    2
    3
    4
    updatexml():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
2
3
反射型:前端->后端->前端
存储型:前端->后端->数据库->前端
DOM型:前端(dom树)->前端
  • XSS和CSRF的区别
1
2
3
(1)XSS不需要登录,CSRF需要用户登录信息
(2)XSS攻击客户端,CSRF访问服务端。
(3)XSS劫持用户信息,CSRF伪造用户身份访问正常网站。

xxe(外部实体注入)

  • xxe漏洞原理:程序在解析XML文档输入时,没有禁止外部实体的加载,导致可加载外部的恶意文件,造成文件读取,命令执行,内网扫描,攻击内网网站等危害
  • xxe使用的伪协议:
1
2
3
4
file:用来加载本地文件
http:用来加载远程文件
ftp:用来访问ftp服务器上的文件
php:用来读取php源码
  • xxe漏洞的利用:
1
探测内网信息、攻击内网网站、读取本地文件、远程读取文件、读取php源码
  • 无回显的xxe怎么利用
1
2
(1)使用dnslog平台进行数据外带
(2)构造远程dtd文件造成文件外泄

csrf(跨站请求伪造)

  • CSRF原理:程序对用户的身份校验不严,导致攻击者可以利用用户未过期的cookie,执行用户意料之外的操作。

  • CSRF防御方法:

    1
    2
    3
    验证Refefer来源
    在请求地址中添加token并验证
    在http头中验证自定义属性(了解)

ssrf(服务端请求伪造)

  • ssrf的原理:用存在可以从其他服务器获取数据的功能,但是对服务器的地址并没有做出严格校验,导致应用程序可以访问任意URL链接。
  • ssrf的头部协议:
1
2
3
4
5
http:超文本传输协议
dict:词典网络协议,进行端口探测
file:伪协议,读取本地文件
ftp:FTP服务器
gopher(重点:信息查找系统):gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是ssrf利用中最强大的协议
  • CSRF和SSRF的区别:
1
2
CSRF是跨站请求伪造攻击,由客户端发起; 由于未验证refer来源,导致攻击者可以利用用户的cookie访问网站。
SSRF是服务器端请求伪造,由服务器发起; 对用户提供的url过于信任,导致可以访问任意url。

代码执行

  • 代码执行的原因:
1
php中的一些函数可以将字符串当作php代码执行,如果这些函数的参数对用户输入的内容控制不严格,就会造成任意代码执行。
  • 代码执行的函数:
1
eval、assert、preg_replace、create_function、call_user_func、call_user_func_array
  • 代码执行的防御芝士:
1
2
3
1、使用addslashes函数将参数转义或使用黑白名单名单
2、禁止或减少使用代码执行函数
3、限制web用户的权限

命令执行

  • 命令执行的成因: 应用程序在调用可以执行系统命令的函数时,用户可以控制函数的参数或者参数本身,利用系统命令拼接符将恶意命令拼接到正常的命令语句中。

  • 命令执行函数的成因:

1
system、passthru、exec、pcntl_exec、shell_execpcntl_exec、shell_exec、popen,``
  • 命令执行的绕waf的方式:
1
2
3
1、无回显:使用crul dnslog盲注
2、绕空格:$IFS,%09,%20,{},linux重定向符
3、绕关键字:变量拼接,空变量,系统变量,反斜杠,通配符
  • 命令执行防御:
1
2
3
4
1、防御方法实在php.ini中禁止这些函数system,exec
2、尽量不要使用外部命令
3、使用自定义函数或外部函数库代替外部函数的功能
4、使用escapeshellarg函数来处理命令参数

序列化

  • 序列化和反序列化原理:

序列化:此字符串包含了表达的value的字节流,可以存储在任意位置
反序列化:对单一的反序列化的变量进行操作,将其转换为原来的值

  • 漏洞产生的原理:
1
2
(1)反序列化函数的参数可控
(2)存在魔术函数:__construct和__destruct、__sleep和__wakeup、__toString

存在反序列化漏洞的中间件:

1
2
3
4
5
weblogic T3反序列化/wls-anys xml格式反序列化
tomcat 反序列化
jboss 反序列化
shiro 反序列化
strust2 反序列化052

水平越权和垂直越权

水平越权:A用户和B用户权限相同,但是使用A的权限操作B用户的数据。如果能够成功操作,则称之为水平越权操作。

垂直越权:A用户比B用户权限低,但是使用A的权限操作B用户的数据。如果能够成功操作,则称之为水平越权操作。

框架及其漏洞

Apache shiro:

ThinkPHP:

struct2:

Fastjson:

Apache Log4j:

Spring Framework

Weblogic:

F5:

流量分析

应急响应

内网横向

内网渗透流程

  1. 确定跳板机网络环境:拿到跳板机的权限后,看看跳板机是否在域内。(用net user /domain命令检查跳板机是否属于某个域环境。)
  2. 探测内网存货主机:探测内网中的存活主机,用扫描工具ping探测内网存活主机。
  3. 提权:在获取的跳板机上尝试提升权限,利用系统漏洞配置错误等方法进行本地提权。
  4. 获取hash凭证:提取系统中用户凭据,尤其是域用户哈希值,用Mimikatz提取本地或域用户的密码哈希。
  5. 进行横向移动:利用获取的凭证用PsExec、WMI等工具进行横向移动,例如使用PsExec、WMI等工具。在内网环境中从一个系统移动到另一个系统。
  6. 定位域控制器:通过查询DNS记录、NetBIOS名称解析或使用域内查询工具定位域控制器。
  7. 提权域控制器:看有没有直接提权域控制器的漏洞。
  8. 权限维持:制作制作黄金票据(Golden Ticket)等进行域管理员权限维持。
  9. 日志清理与痕迹擦除:用日志清理工具或手动删除相关日志记录。

Kerberos认证协议中白银票据与黄金票据的原理和区别?

  1. 金票(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算法对用户密码进行哈希处理,生成一个固定长度哈希值。

  1. 白银票据(Silver Ticket)的原理:

白银票据是伪造的服务票据(ST,Service Ticket),用于Kerberos认证的第三步,客户端携带ST和Authenticator向服务器上的服务发起请求。

服务器收到客户端请求后,用Master Key解密ST获取Session Key,然后用Session Key解密Authenticator来验证客户端的身份。验证成功,客户端就可访问服务器上的指定服务。所以只

需知道服务器用户的Hash,就可以伪造ST,且此过程不会经过KDC。

注意:伪造ST只对部分服务起作用

身份验证器:Authenticator

服务票据 :Service Ticket(ST)

  1. 金票与银票的区别:

    • 获取的权限不同:

      黄金票据:提供对整个域的权限,因为它是基于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委派机制中的配置不当,允许攻击者模拟用户身份进行权限提升。