信息泄露
敏感文件
- 备份文件泄露
漏洞影响:可能导致网站敏感信息泄露,被利用来进一步攻击等危害
URI中"1.zip"触发规则告警,访问URI地址,下载备份文件,分析备份文件,判断漏洞影响
修复建议:删除该网站目录下的备份文件
- 数据库配置文件泄露
- phpinfo泄露
- .svn源码泄露
- .git源码泄露
- swp源码泄露
- 脚本源码泄露
- 版本信息泄露
- phpinfo文件泄露
目录遍历
- 目录穿越
- 目录列表
自动目录列表
漏洞影响:任何人可以访问该路下的文件,可能造成敏感信息泄露
响应体中"Directory"触发规则告警,访问URL地址下目录文件,分析目录信息,判断漏洞影响。
修复建议:修改配置文件,禁止目录列表列出
目录穿越
漏洞影响:利用此漏洞,黑客可以发现一些敏感信息,包括读取服务器敏感文件等
请求头../../触发规则告警
修复建议:禁止目录遍历,对输入参数过滤../等字符.
.svn源码泄露
漏洞影响: 攻击利用该漏洞,可以获取到服务器源码,svn服务器账号密码等信息
URL"/.svn/entries"与响应体svn信息触发规则告警
修复建议: 禁止或删除.svn文件浏览
弱口令
密码简单,不满足复杂度要求;攻击者通过穷举法尝试web登录的账号名与密码
密码复杂度: 口令长度不小于8位,且为数字,字母,字符混合组合,用户名和口令不得相同,且无明显规律
邮件弱口令
- IMAP弱口令
- POP3弱口令
- SMTP弱口令
数据库弱口令
- redis数据库弱口令
- mysql数据库弱口令
- sqlserver弱口令
中间件弱口令
- tomcat弱口令
漏洞危害:通过弱口令进入中间件后台可直接部署war包getshell
中间件例如tomcat与basic认证弱口令信息在请求头Authorization字段中,可用base64进行解码
- weblogic弱口令
- jobss管理后台弱口令
Basic认证弱口令
web弱口令
漏洞影响:弱口令容易被人猜解,造成个人信息等数据丢失严重者可导致网站被攻陷
请求体中"password=123456"弱口令,服务器返回"success"
暴力破解
暴力破解称为穷举法,是一种对密码破译的方法.在一些领域,为了提高密码的破译效率而专门为其制造的超级计算机.
攻击特征: 攻击者在短时间内通过穷举账号名与密码的方法尝试web登录,看到暴力猜解的告警要结合流量日志分析溯源判断是否爆破成功
HTTP登录爆破,协议类型web日志
sip:("攻击IP")AND dip:("受攻击系统IP")AND data:("登录请求账号字段")
FTP、SMTP、Telnet、SSH、mysql数据库等登录爆破,协议登录动作
sip:("攻击IP")AND dip:("受攻击系统IP")AND proto:("爆破协议")
过滤爆破登录成功
sip:("攻击IP")AND dip:("受攻击系统IP")AND proto:("爆破协议") AND NOT(info:fail* OR info:530)
XSS
恶意攻击者往web页面里插入恶意代码,当用户浏览该页时,嵌入其中web里的js代码会执行,从而达到恶意攻击用户的特殊目的,利用xss可盗取cookie,结合windows10可导致Badcon漏洞使系统蓝屏
反射型
经过后端服务器,不经过数据库
攻击特征:请求头"<script>alert(xss)
与响应体 <script>alert(xss)</script>
"
可将响应代码复制下来进行打开,看是否存在被注入
存储型
存储在服务器中
DOM型
经过服务器
SQL注入
因程序设计不良,被数据库服务器误认为正常SQL指令而运行
注入方式
- 数字型
- 字符型
- 布尔盲注
- 时间盲注
- 报错注入
- 堆叠注入
SQL注入分析
无回显
- 时间盲注
3. 布尔盲注 根据响应体长度进行判断是否成功,大多布尔盲注攻击时返回错误页面的,少数是返回正常页面,利用错误页面长度与正常页面长度不一致的特征进行分析。上面数据包查看数据库用户名对应ascii码值,如果此ascii码值等于真正对应用户名母ascii值则返回正常页面,如果不等于则返回错误页面 4. 其他 3. 有回显、
- 报错注入
- union联合查询对SQL注入 成功payload进行分析,如果服务器返回相应数据库查询信息,则判断攻击成功 发现成功爆出当前数据库用户:root@localhost,SQL注入攻击成功
- 堆叠注入
- 其他
文件上传
检测方式
- 客户端JavaScript检测(通常检查文件扩展名)
通过bp进行抓包,修改扩展名,绕过前端js的文件校验
- 服务端MIME类型检测(检测content-Type内容)
通过bp进行抓包,修改为何时的内容,绕过服务端的文件校验
- 服务端文件扩展名检测(检测跟文件extension相关的内容)
- 黑名单,文件大小写绕过 用像Asp,PHP之类的文件名绕过黑名单检测
- 白名单,通过利用解析漏洞或使用文件名进行检测绕过
- 0X00截断,通过0x00截断将文件名进行截断处理
- 白名单列表绕过,黑名单里没有的名单,例如cer等
- .htaccess文件,修改该文件配置内容可设定指定目录下的文件解析成指定格式
通过大小写,等方法绕过
- 服务端文件内容检测(检测内容是否合法或含有恶意代码)
- web应用程序解析
- Apache解析漏洞
- IIS解析漏洞
- Nginx解析漏洞
常见上传点
- 上传头像
- 上传相册
- 上传附件
- 添加文章图片
- 前台留言资料上传
- 编辑器文件上传
攻击特征:客户端请求数据为PHP木马,服务器返回信息"success upload"判断webshell上传成功
检测方法:通过检测日志文件,通过访问路径的判断,是否与木马路径是否一致,而进行判断是否上传成功或自行访问测试
企图告警分析
文件上传企图告警,更具数据包无法判断是否上传成功,可到分析平台查看是否有脚本文件的访问记录,如果有成功访问脚本文件记录,则脚本文件上传成功
检索语法:uri:("webshell文件名"),如果上传脚本文件被重命名,就筛选出攻击IP对服务器的文协议的访问流量进行分析判断
文件包含
文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外文件的泄露甚至恶意的代码注入
本地文件包含
远程文件包含
文件包含的函数
- include( ) 当便用该函数包含文件时,只有代码执行到 include( )的数时才将文件包含进来,发生 错误时,给出一个警告,继续向下执行。 include_once( ) 功能与 Include( )相同,区别在于当重复调用 同一文件时,程序只调用一次 require( ) require( )与include( )的区别在于reqvire() 执行如果发生错误,函数会输出错误信息,并终止脚本的运行。 require_once( ) 功能与require( )相同,区别在于当重复调用 同一文件时,程序只调用一次。
伪协议
file://
file=file://d:/phpstudy/www/webshell.txt
data://
?file=data://text/plain,<?php phpinfo()?>
php://filter
?file=php://fiter/read=convert,base64-encode//resource=./index.php
php://input
?file.php://input [post data]<?pnp phpinfo()?>
文件包含
告警分析
Webshell
通过各种手段获取webshell从而获取企业网站控制权,功能包括但不限于shell命令执行、代码执行、数据库枚举和文件管理
webshell
- 大马
- 体积大,功能全
- 会调用系统关键函数,例如调用函数进行提权
- 以代码加密进行隐藏
- 小马
- 体积小,只包含上传功能
- 一句话木马
- 代码极短,通常只有一句话
- 使用方便,单独作为一个文件夹
- 变形多,难以查杀
webshell工具
- 冰蝎
payload特征:
php在代码中同样会存在eval或assert等字符特征
在aps中会在for循环进行一段异或处理
PHP代码中可能存在eval、assert等关键词;
jsp代码中可能会有get class(),get class loader()等字符特征
- 冰蝎2.0
payload特征:
第一阶段请求中返回包状态码为200,返回内容必定是16位的密钥 请求包存在:Accept: text/html, image/gif, image/jpeg, ; q=.2, /; q=.2
建立连接后的cookie存在特征字符 所有请求 Cookie的格式都为: Cookie: PHPSESSID=; path=/;
- 冰蝎3.0
请求包中content-length 为5740或5720(可能会根据Java版本而改变) 每一个请求头中存在 Pragma: no-cache,Cache-Control: no-cache Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/*;q=0.8,application/signed-exchange;v=b3;q=0.9
- 菜刀
payload特征:
PHP: <?php @eval($_POST['caidao']);?>
ASP: <%eval request(“caidao”)%>
ASP.NET: <%@ Page
Language=“Jscript”%><%eval(Request.Item[“caidao”],“unsafe”);%>
数据包流量特征:
请求包中:ua头为百度,火狐
请求体中存在eval、base64等特征字符;
连接过程中使用base64编码对发送的指令进行加密;
还有一段以QG开头,7J结尾的固定代码 QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J
- 哥斯拉
payload特征: jsp会出现xc,pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码等特征 php,asp则为普通的一句话木马
哥斯拉流量分析: 作为参考: 所有请求中Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 所有响应中Cache-Control: no-store, no-cache, must-revalidate, 同时在所有请求中Cookie中后面都存在;特征
哥斯拉是一个基于流量、http全加密的webshell管理工具,所以从报文很难看出有明显攻击特征,需要结合流量上下文找到哥斯拉的webshell上传成功的流量来进行分析和判断
- 蚁剑
payload特征: php 中使用 assert
,eval
执行, asp 使用 eval
jsp 使用的是Java类加载(ClassLoader
),同时会带有base64编码解码等字符特征
默认的 user-agent
请求头是 antsword XXX
(不过可以修改)
一般将payload进行分段,分别进行base64编码;
一般具有像eval这样的关键字和 @ini_set("display","0");
这段代码。
响应包的结果返回格式为: 随机数 编码后的结果 随机数
命令执行
用户通过浏览器提交执行命令,由于服务器未做过滤,导致在没有指定绝对路径的情况下就执行命令,或程序执行环境的其他方面来执行一个恶意构造代码
漏洞分类
- SQL注入漏洞命令
- 通用漏洞命令执行
- struts2命令执行 大多都是在HTTP的请求头或者请求体插入精心构造的恶意代码,如执行echo、print、whoami函数
- weblogic命令执行
- apache shiro命令执行
- fastjson命令行执行
- 业务系统功能模块
执行函数
- PHP
- system
- exec
- shell_exec
- java
- Runtime
- processbuilder
XML实体注入
XXE全称XML External Entity Injection即xml外部实体注入漏洞,触发点多位于xml文件上传点。xml实体注入一般可以探测内网、读取系统任意文件,任意文件上传等
XML基础知识
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义、文档元素。
xml实体注入分类
- 执行系统命令
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe[
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "expect: //id" >]>
<root>
<name>&xxe,</name>
</root>
- 任意文件读取
<?xmi version "l.0" encoding="utf-8"?>
<IDOCTYPE xxe[
<IELEMENT name ANY >
<IENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>
<name>&xxe:</name>
</root>
- 内网存活主机探测
<?xml version="l.0" encoding="utf-8"?>
<IDОCTYPE xxe [
<IELEMENT name ANY >
<IENTITY xxe SYSTEM "http://27.0.0.1:80" >]>
<root>
<name>&xxe:</name>
</root>
文件上传
然后再通过base64进行解码