文件上传绕黑白名单

  • 黑名单
    • 不常见的扩展名绕过,比如pht, phpt, phtml, php3,php4,php5,php6
    • 扩展名大小写
    • apache和iis解析漏洞绕过
  • 白名单
    • 文件包含图片马:在图片中加入一句话木马
    • 00截断:move_uploaded_file方法读取到00会停止,有get00截断和post00截断两种

文件上传监测点在哪

  • 客户端javascript检测(文件后缀名)
  • 服务器客户端检测:禁止对上传的文件目录进行解析,上传的文件随机且检查后缀名

`### 文件上传特征

在文件上传处出现可执行脚本

文件上传加固方法

  • 对上传的文件后缀进行过滤,设置一个白名单
  • 上传后的文件进行重命名,不输出文件保存位置

前期做那些事

前期比较重要的就是资产梳理、安全测试、整改加固、安全策略优化、安全意识培训等等

  • 资产梳理:主要协助客户对旗下资产进行梳理汇总

  • 安全测试:组织几次安全渗透测试可分为内外网渗透测试

  • 安全意识培训:宣讲钓鱼邮件防范,个人不使用弱密码,安装杀软等

HW期间下线部分服务器,或者某段时间暂停对外开放服务。

mysql加固呢?(数据库加固)

mysql:

  • mysql部署在内网中
  • 使用独立用户运行mysql
  • 每个业务对应着一个用户,设置不同的密码
  • 指定mysql可访问用户的ip和权限
  • 使用低权限用户配置网站
  • 启用mysql日志记录
  • 禁用文件导入导出

mysql提权

  • MOF提权:利用了C:/Windows/System32/wbem/MOF目录下的nullevt.mof文件,利用该文件每分钟会去执行一次的特性,向该文件中写入cmd命令,就会被执行
    条件:
    • 只适用于windows系统,一般低版本系统可以利用,比如xp、server2003
    • C:\Windows\System32\wbem\MOF目录有读写权限
    • 可以找到一个可写目录,写入mof文件
  • UDF提权:UDF(User Defined Funtion)用户自定义函数,通过添加新的函数,对mysql服务器进行功能扩充。
    • windows: mysql版本5.1以上,将udf动态链接库放到根目录下的/lib/plugin中,创建udf函数,并通过它执行系统命令进行提权
    • linux:将.so文件放到mysql插件库中,然后创建执行系统命令的函数并执行
  • 启动项提权:利用mysql将vbs脚本写入开启启动项,但是写入后需要重启目标服务器
  • 反弹端口提权:实际上是udf提权的另一种用法,动态链接库被定制过
  • phpmyadmin写入shell

sqlserver提权

  • xp_cmdshell提权:已经拿到了webshell,还需要拿到sa权限,判断是否开启xp_cmdshell,之后通过执行命令添加用户
  • sp_oacreate提权:
    条件:
    • 已获得sqlserver sysadmin权限用户的账号
    • sqlserver允许远程连接
    • OLE Automation Porcedures选项开启
  • xp_regwrite:利用regwrite函数修改注册表
  • CLR提权:可以利用 16 进制文件流方式导入 DLL 文件
  • SQL Server Agent Job 代理执行计划任务利用

weblogic的攻击面,具体到组件、协议

  • xmlDecoder反序列化漏洞:/wls-wsat/CoordinatorPortType
  • T3反序列化漏洞:t3协议
  • 任意文件上传漏洞:必须能访问这两个页面ws_utc/begin.do,/ws_utc/config.do

4624、4625、4720

  • 4624:表示用户成功登录计算机或服务器
  • 4625:表示用户失败登录
  • 4720:表示用户账户被创建

时间注入如何加快获取数据

  • 二分法
  • 与运算加速: 主要原理是目标字符转为8位二进制通过1,2,4,8,16,32,64,128各位1进行与运算比较,在比较后就能确定各个比特位具体数值从而推出答案
  • 二进制延迟注入加速:将ascii码转换为二进制,然后判断首位是0还是1,从而来更快的判断出数据库名字
  • dnslog

前期资产如何梳理

  • ip、域名、网段、旁站、C段
  • 查看使用是什么waf,是否所有域名都加入了防护
  • 哪些主机出网,哪些不上网
  • 什么业务,开放哪些端口服务,使用的CMS、数据库、组件是否有历史漏洞
  • 是否使用弱口令
  • VPN要开启双因素认证
  • 人员信息、github或者开源社区有没有泄露的业务代码、配置文件

ssh如何加固

  • 修改 SSH 的默认端口
  • 仅使用SSHv2协议:SSHV1协议事对ssh协议的不安全实现
  • 关闭或者延迟压缩:在压缩开始前对用户进行身份验证
  • 限制身份验证最大尝试次数
  • 禁用root账户登录
  • 配置 Fail2ban:可以根据默认或者自定义的配置来自动屏蔽针对 SSH, HTTP 等各服务的暴力密码猜解或者 DDOS 攻击

登录网站后台后,功能很多,从那些方面考虑getshell

  • 编辑文件:比如说wordpress用php写的,可以修改添加恶意逻辑
  • 文件上传
  • 插件上传
  • 新建任务:类似于windows的计划任务

waf有哪些防护措施

  • web基础防护
    sql xss csrf
  • ip黑白名单
  • 网页防篡

SIP界面和功能

Pasted image 20240415082340

点击事件描述进行初步研判,内容包括:威胁详情描述时间详情信息,威胁行为描述举证内容
Pasted image 20240415083112

Pasted image 20240415083500

Pasted image 20240415083558

Pasted image 20240415084014

Pasted image 20240415084457

Pasted image 20240415084636

日志检索

Pasted image 20240415084737

Pasted image 20240415084802

Pasted image 20240415084923

如何根据设备分析研判

Pasted image 20240415085032

根据网络流量溯源

Pasted image 20240415090015

Pasted image 20240415090041

Pasted image 20240415090133
Pasted image 20240415090133

Pasted image 20240415090244

溯源分析页面

Pasted image 20240415090529

Pasted image 20240415090548

Pasted image 20240415091010

恶意程序处置思路

Pasted image 20240415091549

Pasted image 20240415092010

Pasted image 20240415092028

Pasted image 20240415092104

Pasted image 20240415092119

Pasted image 20240415092205

Pasted image 20240415092223

日志

1
2
192.168.1.1 - - [01/Apr/2022:12:34:56 +0000] "GET /index.html HTTP/1.1" 200 1234 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36"

攻击时间、攻击ip、请求方法、请求内容、请求版本、响应码、浏览器版本

举一种反序列化漏洞的利用方式

  • 使用docker搭建vulhub靶场
  • 访问登录页面,输入账号密码通过burpsuite抓包发现含有shiro反序列化数据包的特征,rememberMe=deleteMe字段
  • 使用shiro_exploit.py脚本文件爆破AED密钥
  • 攻击机使用ysoserial反序列化工具监听1099端口
  • 使用runtime_exec网站生成反弹shell命令
  • 使用shiro_exp.py生成POC
  • 修改抓到的数据包cookie,将生成的remember复制进去

设备的区别

weblogic权限绕过

远程攻击者可以构造特殊的http请求,在未经身份验证的情况下接管weblogic server console,从而执行任意代码

  • 通过静态资源来绕过权限验证
  • 构造url,通过编码后的 ../ ,让最终渲染的模版是console.portal

勒索病毒如何处置

  • 隔离主机,物理断网
  • 判断勒索病毒是否存活,通过创建几个.exe .txt文件看是否会被加密
  • 排查业务系统,了解勒索病毒加密时间、中招范围和影响程度
  • 可以根据预留文件、预留邮箱判断出攻击团伙,方便后续溯源
  • 分析勒索程序,获取域名ip、域名相关信息,到威胁情报中心查询
  • 可以将勒索程序上传到勒索病毒搜索引擎,看能不能解密

勒索软件家族

  • LockBit:一马当先
  • Hive:勒索超过1亿美元
  • Black Basta:Conti的变种
  • Royal:势头强劲
  • Vice Society:主要针对教育行业

钓鱼邮件应急处置

  • 断网隔离,有安全设备可以对所有主机进行病毒查杀
  • 查看邮件内容,比如什么工具发送、发送的ip,一些用户昵称也可以通过社工的方式查到攻击者的更多信息
  • netstat查看异常外联,也可以查看异常进程定位文件删除

有做过钓鱼邮件附件上的静态分析或动态分析吗

  • 静态分析:确认文件是否是恶意的,可以使用PE工具自动分析该文件进行了何种操作(调用了什么函数),如果加了壳的话,可以使用freeupx工具脱壳
  • 动态分析:在一个隔离的环境中打开了附件,并监控了程序的运行过程;当文件被打开时,它会检查当前的系统环境,以确保在正确的操作系统和版本中运行,然后会从互联网上下载一个恶意程序,并在本地执行。然后收集用户的敏感信息,比如账号密码、身份证号等,再将信息发送到攻击者的服务器

攻击溯源到人这样的做过吗

之前作重保值守项目的时候,这个比较简单,发现过通过反弹shell植入的webshell,然后本地有个反弹shell文件,里面有个IP地址,然后溯源这个ip地址,通过whois查询到了对应的邮箱和域名,查询社工库找到了这个人

ips和ids的区别

ids:入侵检测系统,主要是对流量进行异常的检测,发出警告
ips:入侵防御系统,除了对异常行为进行检测之外,还会主动阻止攻击

态势上面有一个内对内的攻击如何进行研判

  • 首先跟甲方沟通,梳理一下A主机的性质,是业务服务器还是个人PC,还是最近上线的测试系统
  • 根据主机的性质进行分析,如果是新上线的测试系统可能会产生误报,如果是个人PC可以进行直接的沟通
  • 随后进行研判内对内的行为是什么,如果判定为真实的攻击行为,可以对A主机进行隔离,然后做应急响应

隧道了解有哪些?

  • frp
  • neoreg+proxifier作正向代理
  • chisel

frp内网穿透

  • 服务器运行,监听主端口,等待客户端连接
  • 客户端连接到服务器的主端口,告诉服务器要监听的端口和转发类型
  • 服务器fork新的进程监听客户端指定的端口
  • 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端
  • 客户端进程再将数据转发到本地服务,从而实现内网对外暴露的能力

反序列化流量的特征

log4j2

  • http请求体中包含特定的jndi注入payload,${jndi:ldap/rmi 恶意ip地址}
  • 包含特定的user-agent头:如log4j2或者log4jAPI/2.0.8
  • HTTP响应中包含特定的响应码,如“2.0K”
  • 特定的响应内容,如:“JNDI lookup successful”

加密方式

  • md5加密,冰蝎
  • AES加密,shiro550
  • 使用SSL或TLS来加密数据传输

常见的一般有哪些常见的编码?

  • base64
  • url
  • unicode编码

CC1和CC6的区别

依赖于java重绑定、多态、动态代理

SpringBoot的常见漏洞,具体到路径和包

信息泄露类

  • 接口文档泄露,doc.html,swagge-ui.html等
  • actuators包
    • /env:获取全部环境属性
    • /mappings:描述全部的URI路径以及控制器的映射关系
    • /beans:描述上下文里全部的Bean,以及他们的关系
    • /autoconfig:记录了哪些自动配置条件通过,哪些没通过

RCE类

  • SpringCloud GateWay
    • 先访问/actuator/gateway/routes/test创建恶意路由,并在恶意路由中执行SpEL表达式
    • 再访问/actuator/gateway/refresh刷新路由
    • 访问/test,即可看见响应中有执行的命令
  • SrpingCloud SnakeYAML
    • 原理:SnakeYAML解析YAML文件时,存在反序列化漏洞
    • 过程:
      • vps上设置恶意的yml文件
      • 访问受害者/env,post修改环境变量spring.cloud.bootstrap为vps恶意yml地址
      • 访问/refresh刷新路由
  • mysql jdbc 反序列化
    • 原理:
    • 过程:
      • 1、在vps上起一个恶意的payload
      • 2、修改/env下的Spring.datasource.url到vps的ip

如何识别Springboot框架

  • 网站的导航栏出有logo
  • 故意访问一个网站不存在的页面,默认页面是whitelable error page
  • fofa语法:app=”spring”
  • wappalyer插件识别
  • 访问常见端点,如果返回了json数据,可能是Spring Boot应用
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /auditevents 显示当前应用程序的审计事件信息 表
    /conditions 显示配置类和自动配置类的状态及它们被应用或未被应用的原因
    /configprops 显示一个所有@ConfigurationProperties的集合列表
    /env 显示来自Spring的 ConfigurableEnvironment的属性
    /flyway 显示数据库迁移路径(如果存在)
    /health 显示应用的健康信息(当使用一个未认证连接访问时显示一个简单的’status’,使用认证连接访问则显示全部信息详情)
    /info 显示任意的应用信息
    /liquibase 展示任何Liquibase数据库迁移路径(如果存在)
    /metrics 展示当前应用的metrics信息
    /mappings 显示一个所有@RequestMapping路径的集合列表
    /scheduledtasks 显示应用程序中的计划任务
    /sessions 否 允许从Spring会话支持的会话存储中检索和删除用户会话
    /shutdown 否 允许应用以优雅的方式关闭(默认情况下不启用)
    /threaddump 执行一个线程dump
    /heapdump 返回一个GZip压缩的hprof堆dump文件
    /jolokia 通过HTTP暴露JMX beans(当Jolokia在类路径上时,WebFlux不可用)
    /logfile 返回日志文件内容(如果设置了logging.file或logging.path属性的话),支持使用HTTP Range头接收日志文件内容的部分信息
    /prometheus 以可以被Prometheus服务器抓取的格式显示metrics信息

java内存马的类型

传统应用型:

  • servlet:动态注册Servlet及其映射路由

  • filter:动态注册Filter及其映射路由

  • listener:动态注册listener
    框架型:

  • SpringController:动态注册Controller及其映射路由

  • SpringInterceptor:动态注册Interceptor及其映射路由

  • SpringWebflux:动态注册WebFilter及其映射路由
    中间件型:

  • Tomcat Valve:动态注册Valve

  • Upgrade:动态注册UpgradeProtocol

  • Executor:动态替换全局Executor

  • Poller等:动态替换全局Poller
    其他类型:

  • WebSocket:动态注册WebSocket路由及处理逻辑

  • Tomcat JSP:动态注册TomcatJSP管理逻辑并实现

  • 线程型:动态添加一个无法杀死的线程

  • RMI型:动态启动一个RMI Registry
    Agent型:

  • Agent型内存马:通过Hook并修改关键方法添加恶意逻辑

    内存马如何应急

  • 查看所有进程的信息,比如进程所属用户,占用内存,是否有异常的进程

  • 查看网络链接情况,是否有异常的外联,定位内存马的来源

  • 用内存分析工具Volatility Framework查看内存马的痕迹

  • 使用杀毒软件查杀内存马

如何判断是否为蜜罐

  • 查看页面源代码,一般会有很长的一段js代码
  • 可以通过fofa网络测绘查询

命令执行的告警

  • 请求体或者url中含有危险函数,比如system(),eval(),getRuntime()
  • 若里面还有特殊字符(|,||,&,&&,反符号``,>,>>,< ,<<)
  • 出现系统命令、系统目录、敏感文件等

ssrf告警,没有明显的回显,怎么判断是否攻击成功

如果能做漏洞验证的话,可以做漏洞验证;如果不能的话,查看日志探测的目标是否有流量交互

溯源

一方面时攻击路径,一方面是攻击人员的具体信息

  • 利用常规渗透测试流程分析攻击路径,从系统使用的CMS类型出发,查看有没有可以利用的历史漏洞,逆向判断攻击者的手段
  • 通过设备告警、蜜罐系统、日志流量分析出发,获取攻击者ip,可能使用cdn或者代理过的,使用cdn可以三、四种方法绕过,使用whois得到域名或者邮箱信息,剩下的就是利用社工的方法得到更多的信息

日志存在位置

linux

/var/log/wtmp:记录登陆进入、退出、关机和重启
/var/log/cron:记录与定时任务相关的日志信息
/var/log/auth.log:记录系统授权信息
/var/log/btmp: 记录用户失败登陆的日志

windows

windows7、8、10/windows server 2008以上的版本中

系统日志:%SystemRoot%\system32\Winevt\Logs\System.evtx
安全性日志:%SystemRoot%\system32\Winevt\Logs\Security.evtx

phpmyadmin写shell的方式

  • 常规方式:select into outfile写shell,但是需要网站的绝对路径,而且比较容易失败
  • 利用日志写shell,修改日志的全局变量general log为on开启,general_log_file为我们自定义的一个php文件,利用log日志写入一句话木马,然后使用菜刀或者蚁剑连接

redis中如何利用ssrf写入shell

  • 绝对路径写入webshell:将发送的内容转为RESP格式,然后通过gophar协议发送
  • 如果.ssh存在,写入~/.ssh/authority_key,可以通过 ssh 免密码登录目标机器
  • crontab 定时任务反弹 shell:定时任务往往会在 /var/spool/cron 目录下,该目录下不同的文件对应不同用户的定时任务,故此次的目标是在该目录下的 root 文件中写入命令以达到反弹 shell 的目的

GET和Post的区别

  • 最直观的就是,get会将参数放在url中,post则是发送request body
  • get会发送一个tcp数据包,post会将请求头和数据分两次发送

sql文件读写前提条件

  • 用户权限足够高
  • secure_file_priv没有限制
  • 知道绝对物理路径
  • 能够使用联合查询

常见的OA系统漏洞

  • 泛微的文件上传漏洞
  • 后台sql注入漏洞
  • 任意用户登录漏洞

文件读取漏洞,通常会读取哪些文件,linux和windows都谈谈

windows

  • C://boot.ini 查看系统版本
  • C:/Program Files/mysql/my.ini //Mysql配置
  • C:/Windows/repair/sam //存储系统初次安装的密码

linux:

/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/etc/my.cnf //mysql 配置文件
/root/.bash_history //用户历史命令记录文件

状态码

  • 100: 继续,需要请求者继续执行操作
  • 2*:成功
    • 200:请求成功,一般用于get与post请求
    • 201:成功请求并创建了资源
  • 3*:重定向
    • 301:请求的网页永久移动到了新位置
    • 302:资源临时移动
  • 4*:客户端错误,请求包含语法错误或无法完成请求|
    • 401: 表示要求身份验证
    • 403:客户端错误,指的是服务器端有能力处理该请求,但是拒绝授权访问
  • 5*:服务器错误
    • 500:服务器内部错误
    • 501:服务器不支持

怎么判断是不是钓鱼邮件

  • 查看邮件发送ip,放到威胁情报中心查看是不是恶意的
  • 放到沙箱中再打开

waf和ips的区别

ips是位于防火墙和应用之间的一个设备,防火墙可以拦截底层的攻击行为,但对应用层没有作用,ips是对防火墙的一个补充

waf相当于应用层的防火墙,检测的范围主要是7层的会话,ips检测的主要是4-7层数据包

如何判断是不是webshell

  • webshell文件名后缀一般是jsp asp php
  • webshell一般是被加密的,逃过免杀
  • webshell文件内通常存在相关的函数关键字,如Runtime.getRuntime(),eval()
  • 可能有对应的访问控制,可能有username、password字样

xss弹窗函数和常见的xss绕过策略

  • alert onclick confirm prompt
  • 大小写混写,双写;
  • 对于特殊字符的绕过:空格使用/替代
    1
    2
    3
    <img src=x onerror=alert(1)>
    <img/src=x/onerror=alert(1)>

  • ()括号绕过
    用`` 替代
    1
    2
    <img src=x onerror=alert(1)>
    <img src=x onerror=alert`1`>

tomcat绕过waf的漏洞

代理ip怎么溯源

一般代理的ip是无法进行有效溯源的,可以从告警中溯源到告警ip

宽字节注入的编码格式

GBK、GB2312、BIG5
当输入单引号时,mysql会调用转义函数,将单引号变为’,其中\的十六进制是%5c,mysql的GBK编码,会认为%df%5c是一个宽字节,也就是’運’,从而使单引号闭合(逃逸),进行注入攻击。

客户有报警的话怎么排查

排查账号安全
排查历史命令
排查进程、启动项、计划任务、有没有异常的外联
然后排查日志

有大量告警怎么办/如果误报很多的话,如何快速确定真实攻击流量

  • 首先根据紧急程度,比如命令执行、目录遍历或者按照设备上的危害程度排序,先挑选重要的攻击进行研判
  • 其次若发现大量流量来自于同一ip,抽检来自该ip的流量,根据请求包的payload来判断是否为攻击行为
  • 批量进行威胁情报查询,若存在攻击画像直接判定为攻击流量

tomcat漏洞

  • 文件包含漏洞
    由长亭科技安全研究员发现的存在于 Tomcat中的安全漏洞,由于 Tomcat AJP协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector可以读取或包含 Tomcat上所有 webapp目录下的任意文件,例如可以读取 webapp配置文件或源码

等价符号对应

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hex()、bin() ==> ascii()

sleep() ==>benchmark()

concat_ws()==>group_concat()

mid()、substr() ==> substring()

@@user ==> user()

@@datadir ==> datadir()

举例:substring()和substr()无法使用时:?id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74 

或者:
substr((select 'password'),1,1) = 0x70
strcmp(left('password',1), 0x69) = 1
strcmp(left('password',1), 0x70) = 0
strcmp(left('password',1), 0x71) = -1

sqlmap写shell命令是什么?

1
2
sqlmap -u "http://example.com/page.php?id=1" --os-shell

sqlmap如何回显payload?

1
2
sqlmap -u "http://example.com/page.php?id=1" -v 3

nmap的ip分片用哪个参数?

nmap 使用 -f 参数来指定在扫描时对数据包进行分片

nmap扫描每一个端口都开着是什么情况?

  • 目标主机配置错误
  • 攻击方网络错误或者版本错误
  • 虚假开放

dirsearch有很多错误的状态码,怎么排除状态码?

–x    400, 404, 503    排除响应码400…,即响应码为这个的不输出到屏幕上

如何使用kali生成反弹的木马?

Linux你平常使用吗,创建文件的命令?

创建文件的基本命令是 touch。例如,要创建一个名为 example.txt 的空文件,可以使用以下命令:

1
`touch example.txt`

如果要创建一个包含内容的文件,可以使用文本编辑器,如 vinano。例如,使用 vi 创建一个名为 example.txt 的文件并添加一些内容:

1
`vi example.txt`

如何查看一个文件的创建时间、改变时间、访问时间。

1
stat example.txt

linux的命令被替换你怎么办?

  • 使用绝对路径执行命令: 使用命令的绝对路径来确保执行的是原始命令,而不是被篡改的命令。
  • 使用安全工具(如 rkhunterchkrootkit 等)扫描系统,以检测是否存在已知的 Rootkit 或其他恶意软件。
  • 使用防火墙、访问控制列表(ACL)等技术限制对系统的访问。

mysql差异备份

在mysql数据库进行完全备份之后,攻击者可以对其进行修改,差异备份,将恶意 shell 写入数据库并备份成 asp 文件,从而在系统中执行任意代码(getshell)

ldap 和 jndi的区别

ldap(lightweight directory access protocol )轻量级的目录访问协议,服务器和客户端之间的通信规则,jdni是一个java命令和目录接口,查找和绑定对象,管理目录结构,可以通过jndi接口访问ldap服务

挖矿木马排查

windows

1
2
wmic process get caption,commandline / value //得到进程的可执行文件等信息
wmic process where caption="svchost.exe" get caption,commandline / value

域信息的收集思路

检查是否在域内

  • systeminfo:这是一个 Windows 命令,用于显示系统的详细信息,包括操作系统配置、补丁程序、网络信息等。
  • |:管道符号,用于将第一个命令的输出传递给下一个命令作为输入。
  • findstr:Windows 命令,用于在文本中查找字符串。
  • /B:选项,表示只在行的开头匹配。
  • /C:"Domain":选项,指定要查找的字符串为 “Domain”。
    1
    systeminfo | finddir /B /C:'Damain'
1
cat /etc/nsswitch.conf //指定了系统在进行用户和组名解析时要使用的服务和顺序。确保文件中包含了 `dns` 和 `winbind`

定位域控

  • cmd命令定位
    1
    net group "Domain controllers" /Domain     //查看域控制器

nslookup命令

  • DNS解析定位域控
    1
    2
    nslookup
    >server
  • 探测端口定位域控

获取域内的基本信息

域信任信息、域密码策略

1
2
3
4
5
6
7
//windows
nltest /domain_trusts //查看域内信任关系
net accounts /domain //获得域的密码策略

//linux
net rpc trustdom list -U 'administrator%password' //域的信任信息
samba-tool domain passwordsettings show //域密码策略

域内用户查询

1
2
3
4
net user /domain
查询域管理员用户:net group “domain admins” /domain //windows

getent passwd //linux

域内主机查询

1
nslookup hostname.domain //适用于 Windows 和 Linux

BloodHound工具

BloodHound是一款免费的工具。一方面,BloodHound 通过图与线的形式,将域内用户、计算机、组、会话、ACL,以及域内所有的相关用户、组、计算机、登录信息、访问控制策略之间的关系,直观地展现在红队成员面前,为他们更便捷地分析域内情况、更快速地在域内提升权限提供条件。另一方面,BloodHound可以帮助蓝队成员更好地对己方网络系统进行安全检查,以及保证域的安全性。BloodHound使用图形理论,在活动目录环境中自动理清大部分人员之间的关系和细节。使用BloodHound,可以快速、深人地了解活动目录中用户之间的关系,获取哪些用户具有管理员权限、哪些用户对所有的计算机都具有管理员权限、哪些用户是有效的用户组成员等信息。

流量加密

  • netcat加密
    • 攻击机使用OpenSSL生成自签名证书
    • 成功生成后,会有key.pem和cert.pem加密文件
  • MSF流量加密
    • 使用OpenSSL方式加密
    • 使用python加密
    • impersonate_ssL模块加密
  • cs流量加密
    • cobalt strike默认使用的cobaltstrike.store 证书会被检测 。利用keytool工具生成一个证书,修改C2 profile 加密混淆

隐藏ip

  • 使用隧道转发进行代理
  • 使用CDN
  • 使用域名前置
  • 使用云服务API网关/云函数

隧道搭建

  • ew
  • frp
  • regeorg

shiro绕waf

  • http请求方法随机
  • http请求方法置空
  • “**rememberMe=**”后面的数据包添加一些特殊字符(脏数据)
  • Shiro字段添加空白字符
  • Host头域名变IP地址

fastjson如何绕过waf

  • unicode或者hex编码绕过
  • 可以使用-和_对参数进行处理
  • 修改Content-type进行绕过:content-type:application/json改为*/* charset=utf-8
  • 对属性前添加is
  • 混淆绕过
  • 单引号替换双引号

oracle提权

  • 通过注入存储过程提权
    • 手工注入
    • 利用msf注入
  • 通过utl_http.request存储过程提权

redis提权

同ssrf写入redis webshell

mimikatz被杀软杀了,如何获取密码

  • 可以采用混淆加密的方式来绕过杀软,AES加密和Gzip / DEFLATE压缩
  • 当无法在目标机器上运行Mimikatz时,我们可使用ProcDump工具将系统的lsass.exe进程进行转储,导出dmp文件,拖回到本地后,在本地再利用Mimikatz进行读取

3389端口如果没有开启,怎么找它

  • 使用REG查询3389状态,开启还是关闭
  • tasklist、netstat命令查询3389端口
  • Meterpreter的netstat查询3389端口
  • 开启
    • MSF命令开启
    • REG命令开启
    • WMIC命令开启

net user能排查影子账户吗

net user是查看不到隐藏账号,使用net user admin$这发现这个隐藏账号是存在的

  • 影子账户
    • 影子账户可以到控制面板或者本地用户组查看,如果注册表被修改,那么这两种方法看不到,可以去下面的注册表路径查看
    • 注册路径:/UKEY_LOCAL_MACHINE/SAM/SAM/ACCOUNTS/USER/NAME
    • wmic userAccount也可以
    • 查看系统日志:计算机管理中的事件查看器

克隆账户只能到注册表中查看

怎么判断站库分离

  • 如果已经获取了一定权限,比如sql查询,或者shell命令行,可以通过查询web服务器名和数据库服务器名来判断,如果相同则同站同库,不同就是站库分离

文件上传告警,但是发现404回响码,如何处理

  • 可能是误报,可以去上传路径下查看有没有异常
  • 可以排查当前的攻击ip是否还有其他的攻击行为,比如在流量中将攻击ip设为源ip筛选
  • 威胁情报查询一下ip,如果有攻击者画像可以对当前ip进行封禁
  • 用杀软查杀一下是否有shell或者内存马

ssrf如何防御

  • 过滤返回的结果,检查返回的信息是否标准
  • 限制请求的端口,比如80,443,8080,8090。
  • 仅允许http或者https协议,可以防止类似于file:///,gopher://,ftp://等引起的问题

文件上传漏洞如何绕waf

  • 填充垃圾数据绕过,有些waf对校验的用户数据设置了大小上限,所以可以构造一个大文件,文件的前半部分是垃圾数据,后半部分才是木马
  • 修改Content-Disposition字段值的大小写绕过
  • 删除Content-Disposition值的form-data绕过
  • 可以使用多个boundary或者boundary分段
  • filename和name更换顺序
  • 分段传输
  • 混编码

文件上传绕过

  • 客户端绕过
    • 禁用IE中的js脚本
    • 使用burp抓包,先上传gif类型的木马,然后通过burp修改后缀名即可
  • 服务端绕过
    • 黑名单扩展名绕过
    • 单双重后缀名绕过
    • 服务端MIME文件类型绕过

文件包含如何防护

  • 禁止远程文件包含
  • 过滤../等特殊字符
  • 尽量不要使用动态变量调用文件,直接写要包含的文件

sqlmap os-shell原理

  • 本质就是写入两个php文件,其中的tmpugvzq.php可以上我们上传文件到网站路径下
  • 然后sqlmap利用这个php上传一个用于命令执行的php到网站路径下,然后输出的内容然后sqlmap端

内网横向移动的方法

  • pth(哈希传递,pass the hash):通过密码散列值 (通常是NTLM Hash)来进行攻击。 在域环境中,用户登录计算机时使用的域账号,计算机会用相同本地管理员账号和密码。因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方法登录到内网主机的其他计算机
  • ptk(密钥传递,pass the key):只能在打了kb2871997补丁的机器,才能使任意用户都可以连接,采用aes256
  • ptt(票据传递,pass the ticket):MS14-06,黄金票据和白银票据
  • 密钥喷洒:攻击者使用常见密码试图访问一个域上的多个账户,攻击者可以使用常见弱密钥列表在一次攻击中访问数百个账户;
    • 与密码喷洒的区别:使用常见密码列表来访问一个域中的多个账户,而撞库则是使用一个完全验证的凭据来尝试访问不同域中的不同账户
  • prexec,Dcom

拿下域控的方法

  • 高权限读取本地密码:mimikatz读取本地的明文密码
  • SYSVOL还原组策略中的密码:在SYSVOL目录下,默认是没有groups.xml文件的,必须创建组策略脚本登录才有这个文件。在groups.xml文件中,密码是通过AES-256加密的,但是微软发布了AES的私钥
  • kerberoasting:查询域内所有的SPN,将所有的kerberos的加密方式换成RC4_HMAC_MD5,在获取到spn的修改权限后,可以给指定的域用户注册spn,可以获取到任意域用户的TGS进行离线破解
  • 重放攻击:如果存在中间人的情况,就可以通过hash进行重放攻击

隐藏历史命令的方法

1
set +o history

攻击者上传了文件,能定位到进程和pid,但是上机的时候发现不存在该文件,应该如何恢复该文件

  • 使用恢复工具比如extundelete
  • 使用命令
    • 进入进程目录,cp /proc/pid/fd/1 //指定目录/文件名
    • cp 1 /tmp/testdelete.py

在系统中如果文件是存在于内存当中,linux系统会维护一个打开文件表,在/proc/<pid>/fd下。 通过lsof可以列出当前系统中的打开文件表,如果可以定位到pid,那么可以直接使用 lsof | grep /proc/<pid>/fd 来查看目标进程的打开文件表,然后根据打开文件表找对应的文件即可。

linux下查看那些人登陆了服务器,应该如何查看,用什么命令,失败的如何查看

1
2
3
last //显示最近登录系统的用户列表
w //也可以
lastb //显示失败登录

用过主机侧的产品?HIDS?

  • EDR
  • IDS、IPS
  • 防火墙
  • HIDS

看万相告警,为什么告警,告警可疑的地方,什么攻击能造成这样的攻击链,是否为真实攻击

恶意样本分析

  • 静态分析
    • 反病毒扫描引擎,看看哪个引擎能够识别他
    • 计算哈希值,上传到威胁情报中心查询
    • 通过IDA等工具查找字符串
    • 查看导入表中使用了哪些api
  • 动态分析
    • 使用OD进行动态调试,查看中间过程

waf原理

通过流量识别、攻击检测、攻击响应和日志记录之类的,实现对web应用程序的防护

  • 流量识别:识别http数据包,检查请求头、请求体、Cookie、url等参数信息
  • 攻击检测:特征匹配、正则表达式、行为分析
  • 攻击响应:根据预设的安全策略,采取相应的措施进行响应
  • 日志记录:记录所有请求和响应的详细信息

waf分类

  • 硬件waf
  • 软件waf
  • 云waf

samba漏洞有哪些

  • 永恒之蓝
    • 利用SMB协议漏洞,自动扫描445文件共享端口开放的windows机器
  • 远程代码执行
  • 缓冲区溢出

返回403,如果绕过

  • 绕过ip限制
    • 原理:如果不是规定的ip,则会返回403
    • 绕过:X-Forwarded-For: 127.0.0.1
  • 扩展名的绕过
  • 更换协议版本
    • 如果使用http/1.1,尝试使用http/1.0
  • 修改referer
  • 修改user-agent

可爆破的默认端口

  • ftp21

  • ssh22

  • telnet 23

  • 1521 oracle

  • 3306 mysql

  • 3389 rdp

  • 6379 redis

  • ssh(22):弱口令、暴力猜解

  • telnet(23):弱口令

  • 3389(rdp):弱口令、暴力破解

  • 7001(weblogic):弱口令、ssrf、反序列化漏洞

  • 8080(tomcat):远程代码执行、弱口令-后门war包部署

  • 3306(mysql):弱口令、暴力破解

  • 1521(oracle):弱口令、暴力破解

  • 1433(mssql):弱口令、暴力破解

防火墙、全流量设备、态感、WAF、IDS之类的,知道它们应该部署在什么位置合适

  • 防火墙:部署在不同网络安全域之间
  • IDS:通常旁路部署在网络中
  • Ips:既可以串联部署也可以旁路部署
  • waf通常串联部署在应用程序前端

防火墙

流量识别:识别http数据包,检查请求头、请求体、Cookie、url等参数信息
攻击检测:特征匹配、正则表达式、行为分析

基于预定义的安全策略监控网络通信,过滤恶意流量和阻止未授权的访问

防火墙分类:

  • 硬件防火墙
  • 软件防火墙

按照功能分类

  • 代理防火墙
  • 包过滤防火墙
  • 状态检测防火墙

态势感知

通过日志采集探针和流量传感器,进行系统日志和流量日志的采集和处理,依托于各种分析引擎进行威胁判定,多维度综合判断

sql注入如何绕waf

  • 双写绕过
  • 等号用like绕过
  • order by绕过:可以用into变量名代替
  • and/or绕过:and用&&、or用||
  • 等价函数的绕过
    • sleep用benchmark()
    • group_concat()和concat_ws()

主机安全

主机安全(Host Security Service)是提升主机整体安全性的服务,提供资产管理、病毒查杀、安全监控、漏洞管理、入侵检测、基线检查等功能,帮助企业降低主机安全风险

容器安全

为云原生容器化环境提供全链路的容器生命周期产品解决方案和安全防护能力

从镜像构像、镜像文件的安全风险检测,到针对容器运行时的威胁检测与防御,漏洞风险评估以及容器基线的配置合规,提供全链路的容器生命周期产品解决方案

webshell攻击的还原攻击事件

  • 收集证据
    • web服务器的日志或者系统日志、安全日志有咩有访问敏感的文件路径或者其他命令执行的痕迹
    • 分析webshell的代码,了解其功能,比如是否包含特定的攻击者标记或者命令执行函数、攻击逻辑等
  • 追踪入侵路径
    • 漏洞评估:结合WebShell特征,检查系统和应用是否存在已知漏洞,比如文件上传、SQL注入、远程命令执行
    • 确定入口点:通过日志分析,确定攻击者最初是如何进入系统的,可能是通过某个Web应用、不安全的服务、弱口令等
  • 分析攻击链
    • 追溯攻击者的行动路径,包括横向移动、权限提升、数据盗取等行为
    • 使用取证工具分析文件修改时间、网络连接记录等,重建攻击时间线