个人介绍

平时没有事情的话会看着感兴趣的研究研究新爆出来的cve.然后还有会挖一些src,不过挖的不多,平时还是以学技术为主.护网的话,像国护网没有参加过,参加过两次小型的护网,也是我们这边驻场的邀请我们参加的,参加的蓝队,也是比较简单的一些工作.我的话呢,主要是负责监控流量,看安全设备,看SIP态势感知 WAF,微步查一下恶意IP,封IP.空闲时间也负责溯源和反制工作..比较擅长的是java方面的.

获取目标站点的绝对路径

  1. 如果是iis系统,尝试对参数进行恶意传值,使其出现报错页面
  2. 对目标网站进行js代码审计,查看是否存在信息泄露出站点的绝对路径
  3. 使用字典猜解目标站点的绝对路径
  4. 如果目标是thinkphp框架,尝试访问无效的路径,或者对参数进行而已传值使其报错
  5. phpinfo页面泄露站点的绝对路径

怎样进行信息收集

  1. 获取目标的真实ip,如果有cdn就绕一下
  2. 通过真实去进行半开放的端口扫描,获取目标服务
  3. 通过审计js代码 + jsfinder工具查看是否存在接口泄露可以使我们进一步的利用
  4. 对站点进行指纹识别,查看cms历史漏洞
  5. 通过乌云查找目标的历史漏洞,查看脆弱点
  6. 通过google黑语法搜索目标站点的敏感关键词 如 登录 后台 学号 上传
  7. 通过目录扫描工具扫描目标站点文件,查看是否存在未授权访问文件或者更多的功能点
  8. 通过潮汐 在线子域名 layer子域名挖掘机进行子域名收集
  9. 通过nmap goby对c端进行信息收集

绕cdn

  1. 通过境外ip去平目标系统
  2. 主动向我方的请求,如发邮件
  3. 获取多个子域名ip对比
  4. 查看dns记录
  5. 通过网络搜索引擎去搜索

只有一个登录页面如何去测

  1. 测试逻辑漏洞点
  2. sql注入漏洞
  3. js代码是否存在js接口泄露
  4. 目录扫描
  5. 查看漏洞库是否存在历史漏洞
  6. 提取页面关键词去黑暗引擎搜索

网站有验证码挖漏洞?

  1. 验证码无效
  2. 验证码由客户端生成 验证
  3. 验证码有回显
  4. 验证码固定
  5. 验证码可以爆破
  6. 验证码可猜解
  7. 可绕过
  8. 短信轰炸
  9. 任意用户注册
  10. 任意用户密码重置

load data local读入表条件

SHOW VARIABLES LIKE "secure_file_priv";
  • null 表示禁止
  • 如果value值有文件夹目录,则表示只允许改目录下文件
  • 如果为空则,表表示不限制目录

ban了sleep怎么实现时间盲注

  1. sleep()
  2. benchmark()重复执行某表达式
  3. 笛卡尔积
  4. get_lock 加锁
  5. rlike regexp 正则匹配

sqlmap的os shell原理

对于mysql数据库来说,–os-shell的本质就是写入两个shell文件,其中的一个可以让我们用来执行命令,另外一个,如果在网站访问的话可以让我们上传文件.

导入导出的权限是secure_file_priv参数来控制的,当这个参数的后面为null的时候,表示不允许导入导出,如果为具体文件夹时,表示仅允许在这个文件夹下导入导出,secure_file_priv参数的默认值为null已知目标站点的绝对路径

  1. 已知目标站点的绝对路径
  2. 已知目标站点的脚本语言
  3. 当前数据库权限必须是dba sa权限
  4. 网站不查杀木马文件

SQL注入绕waf的方式

白盒

根据waf的固定规则去寻找有没有漏网之鱼.

黑盒

架构层绕waf

  1. 用户本身是进入waf后访问web页面的,只要我们找到web的真实ip,就可以绕过waf
  2. 在同网段内,页面与页面之间,服务器与服务器之间,通过waf的防护,然后展示给我们,只要我们在内部服务之间进行访问,即可绕过waf
  3. 边界漏洞,同样类似于同网段数据,我们可以利用已知服务器存在的ssrf漏洞,将数据直接发送给同网段的web2进行sql注入.

协议层面绕过waf

  1. 基于协议层,有的waf只过滤get请求,而对post请求没有做别的限制,因此,可以将get类型转换成post请求

  2. 文件格式,页面只对Content-Type为application/x-www-form-urlencoded数据格式进行过滤,因此我们可以将Content-Tyoe格式修改为multipart/form-data,即可绕过

  3. 参数污染 有的waf仅对部分内容进行过滤如

规则层面绕过

  1. 首先使用比较特殊的方法进行绕过

  2. 常见规则

  3. 缓冲区溢出

  4. mysql特性绕过

  5. 黑魔法

  6. 内联注释

phpmyadmin如何拿shell?

数据库文件导入导出

条件

  1. 数据库root权限
  2. 数据库字段secure_file_priv没有具体的值
  3. 获取网站的绝对路径

数据库全局日志写入

条件

  1. 数据库root权限
  2. 获取网站的绝对路径

数据库慢查询日志写入

慢日志查询 记录所有执行时间超过字段long_query_time规定时间的所有查询或者不使用索引的查询,默认情况下慢查询日志为关闭,long_query_time值为10秒

条件

  1. 数据库root权限
  2. 获取网站的绝对路径

CVE

文件上传漏洞原理,绕waf

  1. 字符变异
  2. 畸形的boundary头部
  3. 顺序颠倒
  4. boundary内容重复
  5. filename重复
  6. 数据溢出
  7. 数据截断

为什么会存在文件上传漏洞

  1. 上传的文件是web脚本语言,服务器的web容器解释并执行了用户上传脚本,导致代码执行
  2. 上传文件是木马或者病毒.主要用于诱骗用户或者管理员下载执行或者直接自动运行
  3. 上传文件是flash的执行策略文件crossdomain.xml.黑客用以控制flash在该域下的行为(其他通过类似的凡是控制策略文件的情况类似)

http only怎么获取cookie

如果在cookie中设置了http only属性,那么将不能从js脚本中获取到cookie的信息,也就是说不能呢用document.cookie()来获取cookie

  1. 配置错误,htto only只是对特定的cookie做了保护
  2. 如果apache版本低,可以通过发送超长cookie,可以获取http only保护下的cookie

XSS绕过WAF姿势总结

  1. Script 标签
  2. JavaScript 事件
  3. 行内样式(Inlinestyle)
  4. CSS import
  5. Javascript URL
  6. 利用字符编码
  7. 绕过长度限制
  8. 超文本内容
  9. 变形主要包含大小写和JavaScript变形

XSS还能干嘛?

常规用到的就是盗取cookie js做钓鱼工具 流量指向等.主要作用是盗取管理员的凭证,就意味着得到后台的权限,可以直接利用.还能配合别的漏洞,比如可以和网站木马结合,扔到哪里去跳转

xss和csrf区别

  1. xss是单一网站不需要登录就能获取cookie,csrf是有一个漏洞网站,和一个攻击网站需要先登录漏洞网站

  2. xss是向网站注入js代码,执行js代码.csrf利用网站本身漏洞去执行网站功能

  3. CSRF比XSS漏洞危害更高。

  4. CSRF可以做到的事情,XSS都可以做到。

  5. XSS有局限性,而CSRF没有局限性。

  6. XSS针对客户端,而CSRF针对服务端。

  7. XSS是利用合法用户获取其信息,而CSRF是伪造成合法用户发起请求。

SSRF有哪些利用点?

  1. 分享:通过url地址分享网页内容

  2. 转码服务: 通过url地址把原地址的网页内容调优使其适合收集屏幕浏览

  3. 在线翻译 : 他弄个url地址翻译对应文本的内容,比如百度翻译,有道等

  4. 图片加载与下载: 通过指定url地址加载或者下载图片

  5. 图片文章的收藏功能:从分享的url中读取原文的标题等

  6. 从未公开的api实现以及其他调用url的功能

  7. ssrf漏洞验证

  8. ssrf利用方式

  9. 本地利用

  10. 远程利用

  11. 探测内网

  12. 攻击Redis服务

  13. 攻击Mysql服务

PHP命令执行函数有哪些?

  1. eval()

  2. assert

  3. preg_replace()

  4. create_function()

  5. array_map()

  6. call_user_func()

  7. call_user_func_array()

  8. array_filter()

java执行无回显

dnslog、当前环境中找响应对象、抛出异常、web目录里写入html

spring漏洞

image-20220613205748112

内存马查杀

内存马的分类

  1. servlet-api类
    • filter型
    • servlet型
  2. spring类
    • 拦截器
    • controller型
  3. java Instrumentation类
    • agent型

内存马的识别

  1. 利用java agent技术遍历所有已经加载到内存中的class,先判断是否是内存马,是则进入内存查杀
  2. filter名字很特别
  3. filter优先级是第一位
  4. 对比web.xml中没有filter配置
  5. 特殊class loader加载
  6. 对应的classloader路径下面没有class文件
  7. dilter的dofilter方法中有恶意代码

内存马的查杀

  1. 清除内存马中的filter的恶意代码
  2. 模拟中间件注销filter

阿里开源的Java诊断工具——Arthas

提权

linux

  1. 内核漏洞提权
  2. SUID提权
  3. sudo提权
  4. 数据库提权思路
  5. 第三方软件提权思路
  6. cve pkexec和dirty pipe

windows

  1. 令牌窃取提权
  2. 组策略首选项提权
  3. 权限配置错误

权限维持

windows

image-20220613115519668

Linux

  1. 一句话添加用户和密码
  2. SUID Shell
  3. ssh公私钥免密登录
  4. 软连接
  5. SSH wrapper
  6. strace后门
  7. crontab反弹shell
  8. openssh后门
  9. PAM后门
  10. rookit后门

蓝队反杀红队的经历有吗

针对ip溯源一二

一般来说,红队大部分都是使用代理节点进行测试,假如我们捕获或者从样本里面分析拿到了真实的ip,那么以下的操作场景就有用了,或者使用钓鱼反调的方式去获取到真实的ip

  1. 来自创宇盾等节点的流量ip
  2. whois 域名反查
  3. 探测端口 服务 进行反渗透
  4. 威胁情报
  5. 邮箱 qq 手机号 社工库
  6. qq 微信 抖音 陌陌 等接口
  7. ga数据 运营商数据

常见红队被反杀的姿势

  1. 使用个人工作pc,且浏览器里面保存了百度 163 sina等登录凭据,攻击对抗过程中踩到蓝队的蜜罐,被jsonp劫持漏洞捕获安全社交id,从而被溯源到了真实的姓名和所在公司
  2. 可能是蓝队封禁ip太厉害的原因,红队个人或者团队,使用自己的网站进行vps进行扫描,vps上含有团伙组织https证书,或者vps ip绑定的域名跟安全社交id对应,从而被溯源到真实姓名和所在的公司
  3. 部分攻击队写的扫描器payload里面含有攻击者的信息,如使用了私有的dnslog 攻击载荷里面含有安全社交id 含有个人博客资源请求等
  4. 投递的钓鱼邮件里面的木马样本被蓝队采集,逆向 反控c2c 溯源到个人信息
  5. 虚拟机逃逸打到实体机,暴露个人全部真实信息的

反制红队基础设施的操作

cobalt strike反制

  1. 批量上线钓鱼马,启几百个进程mddos红方的cs端.假如我们获取到了红方的cs样本,那么第一种方法可以批量启几百个进程运行该样本(注意隔离环境),然后红方的cs端几乎瘫痪,无法使用
  2. 爆破cs密码 一般而言,红队的cs设施为了多人运动,密码通常不会太复杂,很大机会是弱口令为主,甚至teamserver端口50050,那么针对cs端控制端,可以直接进行密码爆破,

针对dnslog的反制

判断是不是webshell

静态检测

静态检测通过匹配特征码,特征值,危险函数函数来查找 webshell 的方法,只能查找已知的 webshell

动态检测

webshell 传到服务器了,在执行函数时这些对于系统调用、系统配置、数据库、文件的操作动作都是可以作为判断依据

日志检测

使用 webshell 一般不会在系统日志中留下记录,但是会在网站的 web 日志中留下 webshell 页面的访问数据和数据提交记录

语法检测

语法语义分析形式,是根据 php 语言扫描编译的实现方式,进行剥离代码、注释,分析变量、函数、字符串、语言结构的分析方式,来实现关键危险函数的捕捉方式这样可以完美解决漏报的情况但误报上

webshell流量信息

菜刀

菜刀 webshell 只使用了 url 编码 + base64 编码

shell 特征就是传输参数名为 z0,还存在int_set("display_erros"**,**"0")字符串特征

蚁剑

默认的蚁剑 shell,连接时会请求两次,其请求体只是经过 url 编码,其流量中也存在和蚁剑一样的代码

第一次请求,关闭报错和 magic_quotes,接下来去获取主机的信息

第二次请求,会把主机目录列出来

蚁剑单向加密,支持客户端传入信息

冰蝎3.0

使用 aes 加密发起两次请求

冰蝎是双向加密的

哥斯拉

支持 n 种加密

采用了和冰蝎 3.0 一样的密钥交换方式,哥斯拉建立连接时会发起三次请求,第一次请求数据超级长,建立 session,第二三次请求确认连接

Weevely

信息payload放于accetp头中,采用gzip压缩传输,使用异或加密.进行base64加密

进程注入

由于防火墙对于系统中正常的网络相关进程(例如Services.exe、Svchost.exe等)默认都是放行的,因此,木马一般都是注入到这些系统进程当中,并以此来穿透防火墙。

拿到日志如何分析?

  1. 特征字符分析 在日志中寻找已知的漏洞特征 访问频率分析

  2. 在攻击过程中,需要对系统进行各种特定的访问,这些访问与正常使用的用户访问区别较大,每一种工具行为都有不同的特征

  3. 漏洞扫描检查

  4. 可以匹配user-agent特征的方式进行检测

  5. 暴力破解检测

  6. webshell检测

获取域控权限的几种思路

  1. 通过域控相关的漏洞

  2. 通过域内的中继

  3. 通过抓取域管登录服务器的hash

  4. CVE-2022-26923域内最新提权漏洞

  5. 通过攻击Exchange服务器、DNS服务器、SCCM服务器、WSUS服务器等

  6. 通过获取域控制器的localgroup中特权组成员的权限来获取域控权限

  7. 通过委派来获取域控权限

  8. 通过域控运维堡垒机

  9. 通过运维人员的个人主机

  10. 通过与域控相关的web服务器

黄金票据白银票据区别是?

黄金票据

所需条件

  1. 域名称
  2. 域的SID值
  3. 域的KRBTGT账号的HASH
  4. 伪造任意用户名

(获取域的SID和KRBTGT账号的NTLM HASH的前提是需要已经拿到了域的权限)

白银票据

  1. 域名
  2. 域sid
  3. 目标服务器名
  4. 可利用的服务
  5. 服务账号的NTML HASH
  6. 需要伪造的用户名

区别之处

区别点 黄金票据 白银票据
访问权限 获取任何Kerberos服务权限 访问指定的服务
加密方式 由krbtgt的Hash加密 由服务账号(通常为计算机帐户)Hash加密
认证流程 需要经过域控 不需要经过域控
生成的票据 TGT票据 TGS票据

windows命令

netstat -ano
查看开放端口

systeminfo
查看系统信息

ipconfig/all
查看网络信息

shell whoami/all
查看所有用户信息

wmic process list brief
查询进程信息

wmic startup get command,caption
查看启动程序信息

shell tasklist
查看常见的杀毒软件进程

hostname
获取dns信息

net view
查看当前局域网中的计算机列表

net user
查看当前计算机中的用户

systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
查询操作系统及软件信息

echo %PROCESSOR_ARCHITECTURE%
查看系统体系结构

powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name, version"
使用PowerShell收集软件的版本信息

whoami && whoami /priv
查看当前权限

wmic service list brief
查询本机服务信息

wmic product get name, version
查看安装的软件的版本、路径等


shell net view /domain
查看主域信息

shell net time /domain
查看时间服务器

shell net config workstation
查看当前的登录域与用户信息

nslookup god.org
寻找域dns服务器ip

windows入侵排查思路

  1. 查看系统账号安全
  2. 查看注册表中是否有隐藏账号
  3. 检查异常端口 进程
  4. 检查启动项 计划任务 服务
  5. 检查系统相关信息
  6. 日志分析 (C:\Windows\System32\winevt\Logs) 事件查看器
  7. 搜索一下有没有可疑bat exe文件

windows加固

  1. 在win ser2016中如何管理重命名administrator,禁用GUEST
  2. 系统不显示上次登录的账户名。
  3. 清理系统无效账户.
  4. 按用户类型分配账号
  5. 配置密码策略
  6. 账户锁定策略
  7. 远端系统强制关机设置
  8. 本地关机设置
  9. 用户权限指派
  10. 授权账户本地登录
  11. 授权账户从网络访问

linux命令

账号相关

awk -F: '$3==0{print $1}' /etc/passwd
awk '/\$1|\$6/{print $1}' /etc/shadow
/var/log/utmp

程序相关

#查看当前开放端口
netstat -tnlp

#查看当前系统上运行的所有进程
ps -ef

#查看进程
ps aux | grep pid

#可以直接看到进程实时情况
top

#查看cpu占用率前十的进程,互补top
ps aux --sort=pcpu | head -10

日志相关

日志默认存放位置:/var/log/
查看日志配置:more /etc/rsyslog.conf

启动项相关

#开机启动配置文件
/etc/rc.local
/etc/rc.d/rc[0~6].d

定时任务

#排查以下文件
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*

#查看目录下所有文件
more /etc/cron.daily/*

linux日志

image-20220613145246204

linux入侵排查思路

  1. 账号安全查看/etc/passwd /etc/shadow
  2. 历史命令 .bash_history
  3. 异常端口 netstat -a -t -u
  4. 检查异常进程 ps
  5. 检查开机启动项 /etc/rc.local
  6. 检查定时任务 crontab -l
  7. 检查服务 chkconfig -list
  8. 检查异常文件 找.php后缀文件
  9. 检查系统日志

linux加固思路

  1. 删除无用账号
  2. 检查特殊账号
  3. 添加口令策略
  4. 限制su
  5. 进制root直接登录
  6. 设置隐藏文件属性(先最小,后加)
  7. 关闭不必要服务
  8. 更改ssh端口号 防爆破
  9. 记录日志

免杀有了解吗?

免杀大概分为两种情况

  1. 二进制免杀(无源码),只能通过修改asm代码 二进制数据 其他数据来完成免杀
  2. 有源码的免杀,可以通过修改源代码来完成免杀,也可以结合二进制免杀的技术

免杀也可以分为这两种情况

  1. 静态文件免杀,被杀毒软件病毒 云查杀了,也就是文件特征码在病毒库了.免杀方式可能是上面的两种方式,看情况
  2. 动态行为免杀,运行中执行的某些行为被杀毒软件拦截报读.行为免杀如果没有源码就不是很好搞了

image-20220614103931753