面试笔记分为上下两部分,前半部分总体来说偏向于基础
面试不同的岗位,相对应的面试题量及难易程度也会不同,安服偏向于应急等知识,所以侧重点不是渗透的知识
借用一句话:背诵面试题目只是骗自己,技术晋升大部分都是实战大于理论,但理论基础也必不可少,二者相辅相成,万一人家让你远程直播实战操作,或者现场面试呢
本文章只为帮助大家入职,后续共同补强技术能力
反序列化原理
反序列化过程中,对用户输入的对象没有进行足够的检查而导致的
攻击者可以在序列化数据中插入恶意代码,使得在反序列时执行该代码
从而达到攻击目的
OSI体系结构
物理层、数据链路层、网络层、运输层、会话层、表示层、应用层
红队的一个大致流程
信息搜集–>找到脆弱资产–>漏洞利用→getshell
情报收集
建立据点
横向移动
给定目标如何渗透
信息收集
服务器相关信息(真实IP,系统类型与版本,开放端口,WAF等)
网站指纹识别(CMS,CDN,DNS记录,证书等)
whois信息:姓名,备案,电话,邮箱(丢进社会库)
子域名、旁站、C段等(一般主站比较难,可以看旁站有无漏洞利用方式)
探测网站的信息、后台、敏感文件
“
站长之家、CMSeek
使用
多地ping
如果出现多个解析IP地址,那就说明使用了CDN,那就会问了,有CDN怎样查真实IP呢,首先第一种就是利用漏洞漏洞去访问你的服务器、IP就是真实的,第二种就是自己搭建邮件服务器,发送或者收取给对方的邮件可以找到真实IP,第三种就是通过空间引擎搜索,工具进行全网扫描,微步等平台子域名可以通过fofa、鹰图等搜索引擎、证书查询、DNS历史记录查询(并不准确)、子域名挖掘机
layer
等等工具
漏洞挖掘
测试网站功能点,尝试
相应端口进行漏洞检测、目录扫描、弱口令
XSS,SQL注入,命令注入,CSRF,cookie安全检测,敏感信息,通信数据传输,暴力破解,任意文件上传,越权访问,未授权访问,目录遍历,文件 包含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等
漏洞利用
利用挖掘点拿到webshell、或者其他RCE方式
权限提升
mysql提权、linux内核版本提权、linux脏牛提权、udf提权等等
输出报告
如何在大量目标中快速拿下内网权限
工具批量化扫描,比如goby+awvs+xray等常见漏洞扫描工具进行联动
主流中间件+web服务组件进行漏洞检测
平时复现的漏洞
shiro550/721反序列化
fastjson反序列化
weblogic反序列化
log4j2远程代码执行
Jboss未授权
redis主从复制
linux命令
读写执行、rwx、421
find / -name "flag"所有目录查找flag文件
awk -F: '$3==0{print $1}' /etc/passwd-F
分隔符为冒号、$3==0
第三个字段UID是否为0(即root)、{print $1}
输出符合条件行的第一个字段
find / -perm -u=s -type f 2>/dev/null2>/dev/null
的意思就是将标准错误 、-perm
:按权限模式匹配文件、u
表示用户权限位、s
表示设置 SUID 位、-type f
仅搜索普通文件
等等不再枚举
常见端口
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
内存马原理
内存马是一种不需要在磁盘上写入任何文件、通过直接加载到目标系统内存中的恶意代码。
它依赖于Java虚拟机(JVM)动态类加载特性,通过注入和持久化恶意类,实现远程控制、信息窃取或其他恶意操作。
由于它们驻留在内存中,除非重启或手动清理,否则内存马在攻击期间会持续存在。
java反射
在运行时判断任意一个对象所属的类
在运行的时候构造任意一个类的对象
在运行时判断一个类所具有的成员变量和方法
在运行时调用任何一个对象的方法
xss类型和防护
反射、存储、DOM型
使用htmlspecialchars
函数将预定义的字符&、”、 ’、<、>通过HTML转义变换为HTML实体,从而防止浏览器将输入的部分内容作为HTML元素
“
DOM型XSS与前面两种XSS的区别就在于DOM型XSS攻击的代码不需要与服务器端进行交互,DOM型XSS的触发基于浏览器端对DOM数据的解析来完成,也就是完全是客户端的事情。
存储是持久型,反射和DOM型是非持久型
log4j2和weblogic反序列化原理
log4j2
log4j2框架下的lookup查询服务提供了{}字段解析功能,传进去的值会被直接解析。例如${java:version}会被替换为对应的java版本。
在lookup的{}里面构造payload,调用JNDI服务(LDAP)向攻击者提前部署好的恶意站点获取恶意的.class对象,造成了远程代码执行(可反弹shell到指定服务器)
weblogic
T3协议和IIOP协议默认开启且未对访问权限进行严格限制,允许未经身份验证的远程用户通过7001端口直接与WebLogic服务交互
攻击者通过构造恶意请求,利用协议层对远程对象绑定的支持,将恶意对象注入服务端。
“
JNDI(java命名和目录接口)是一组在java应用中访问命名和服务器的API,命令服务将名称和对象联系起来,使得我们可以用名称访问对象
RMI(JAVA远程方法调用) LDAP(轻量级目录访问协议) DNS(域名服务)
SQL注入时间盲注函数,报错注入函数和原理
时间盲注
sleep():如果写入到数据库被执行了,sleep(N)可以让此语句运行N秒钟
通过一个页面加载的时间延时来判断
报错注入
updatexml():当第二个参数包含特殊符号时会报错,并将第二个参数的内容显示在报错信息中updatexml(1, 0x7e, 3)
有长度限制不超过32字符,一般用limit(,)分页和substr(,,)截取字符
extractvalue()也是
floor():返回整数,mysql在执行该语句会建立一个虚拟表,表中有两个字段(一个是分组的值和一个计数的值),当分组已经存在后就会爆错。
sql注入绕过
空格过滤绕过:${IFS}
(空格)、${IFS}$9
(空格)、/**/
(空格)、%09
(制表符)、%0a
(换行符)、**`**(反引号)
内联注释绕过:/*!50726select*/*/*!50726from*/users;
(MySQL会执行放在/!…/中的语句,大于该版本就会报错,小于等于不会报错)
大小写绕过、双写字符绕过、编码绕过(双重url编码绕过)、十六进制编码绕过、Unicode编码绕过、ASCII编码绕过、
等价函数字符替换绕过:用like或in代替=
http://id/index.php?id=1 and 1 like 1
sleep函数可以用benchmark函数代替
ascii函数可以用hex, bin函数代替
group_concat函数可以用concat_ws函数代替
updatexml函数可以用extractvalue函数代替
逻辑符合替换:and --> &&
、or --> ll
宽字节绕过:
编码绕过(数字型可以绕过,字符型不行)
宽字节绕过(前提数据库的编码是gbk)。在gbk中,中文由两个字节组成,首字节对应81-EF(129-239),尾字节40-7E(64-126)
利用函数转移特殊字符代替magic_quotes_gpc:addslashes()
具体见:宽字节详解
正则规则:
“[-]”:字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符“/”:表示正则表达式的开始、再一个/表示结束,在结束的/后面跟上的为定界符“i”:表示在和模式进行匹配进不区分大小写“s”:如果没有使用这个模式修正符号,元字符中的"."默认不能表示换行符号,将字符串视为单行
文件上传绕过
客户端JS校验:抓包修改文件名后缀
服务端校验:
content-type字段绕过(Content-Type: text/plain-->image/jpeg)
文件头绕过(GIF89a)
文件后缀名绕过(双写,大小写、::$DATA
、%00
截断)
.htaccess是apache配置文件,可覆盖相应设置,将某某文件当问php或者指定文件形式分析
逻辑漏洞具体怎么挖
水平、垂直越权
常见的越权高发功能点有:根据订单号查订单、根据用户 ID 查看帐户信息、修改 / 找回密码等。
SRC中的逻辑漏洞总结
1.注册:
1.短信轰炸
2.验证码安全问题
3.密码爆破
4.邮箱轰炸
2.用户任意注册、批量注册
3.用户名枚举
4.XSS(有框的地方就可以尝试插XSS)
5.登录:
1.短信轰炸、验证码安全问题、密码爆破、邮箱轰炸
2.SQL注入
3.撞库
4.抓包把password字段修改为空值发送
5.认证凭证替换、比如返回的数据包中包含账号,修改账号就能登录到其他账号
6.Cookie仿冒
7.修改返回包的相关数据,可能会登陆到其他的用户
6.找回密码:
1.短信邮箱轰炸、短信邮箱劫持
2.重置任意用户账户密码、验证码手机用户未统一验证
3.直接跳过验证步骤
7.购买支付、充值(要利用抓包去仔细查看每一个可用的参数)
1.交易金额、数量修改、更换支付模块(比如更换支付的模块金额)
2.交易信息订单编码/导致信息泄露
3.整数溢出,int最大值为2147483647,超过最大值
4.修改充值账户
5.支付绕过
8.抽奖活动
1.刷奖品、积分
2.并发
9.优惠卷、代金卷
1.并发逻辑漏洞(burp批量获取优惠券)
2.修改优惠券金额、数量
10.订单信息
1.订单信息遍历、泄露
2.订单信息泄露导致用户信息泄露
3.删出他人订单
11.会员系统
1.修改个人信息上传文件,上传带弹窗的html
2.如遇上上传xlsx、docx,可能存在XXE,上传恶意的文档盲测
3.图片上传也可能遇到imagereagick命令执行,上传恶意图片
4.视频上传如果使用ffmpeg<3.2.4(视频按帧分割成图片),上传恶意avi盲测ssrf
5.用户横向越权访问、遍历、导致用户信息泄露
6.SQL注入、个人简历处存储XSS个人信息注册的名称也可以插入XSS
12.传输过程
1.明文传输账户密码
2.修改信息处无session/token导致csrf
3.POST/COOKIE注入
13.评论
1.POST注入
2.存储型XSS
3.无session/token导致CSRF
1.验证码问题
1.万能验证码
2.返回包中存在验证码
3.删除验证码或者cookie中的值可以爆破账号密码
2.短信轰炸
1.一直重放
2.删除修改cookie,重放数据包
3.遍历参数发送数据包
4.手机号后面加空格或者前面加其他的比如+86或者逗号分号等,然后重发数据包
5.请求参数修改大小写,或者添加请求参数比如&id=1
6.一个站的登录处可能做了防护,但是再找回密码处可能没有安全防护,或者在注册流程中没有安全防护,所以说多测试接口
7.如果对手机号一天的次数进行了限制,还可以再发一次短信,DO intercept之后修改为成功回显
3.水平越权
1.主要登陆后还是修改参数,主要找到多个接口不断测试
2.关注网页源代码,有时候会有表单,但被bidden(隐藏标签)给隐藏起来了,可以修改返回包然后尝试获取数据检测
3.多个账号,主要分析请求参数
4.数据泄露
1.再找回密码处,填写数据后抓包查看返回信息,有可能存在敏感数据返回
5.任意用户密码重置
1.目前大部分都是在修改密码处参数修改
2.有些是前端验证
shiro利用链有没有了解
无
黄金票据白银票据
黄金票据:是直接抓取域控中ktbtgt账号的hash,来在client端生成一个TGT票据,那么该票据是针对所有机器的所有服务。
白银票据:实际就是在抓取到了域控服务hash的情况下,在client端以一个普通域用户的身份生成TGS票据,并且是针对于某个机器上的某个服务的,生成的白银票据,只能访问指定的target机器中指定的服务。
网站被篡改怎么办
将受影响的系统进行隔离,查杀确认并修复导致篡改的漏洞
恢复到最近一次的备份
如果是通过通过凭证泄露造成,立即修改所有账户密码,包括数据库、服务器、管理界面等
常见中间件日志位置
apache
/var/log/httpd/access_log
或者/var/log/apache2/access.log
nginx
/var/log/nginx/access.log
mysql
/var/log/mysql/error.log
php
/var/log/php/php_error.log
postgresql
/var/log/postgresql/postgresql-<port>.log
redis
日志文件通常禁用
原文始发于微信公众号(hutututu):安服面试笔记(上)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论