本文主要是介绍蓝队面试经验总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Sql注入
1、sql注入漏洞原理
开发者没有在网页传参点做好过滤,导致恶意 sql 语句拼接到数据库进行执行
2、sql注入分类
联合注入 、布尔盲注 、时间盲注 、堆叠注入 、宽字节注入 、报错注入
3、堆叠注入原理
在 mysql 中,分号 代表一个查询语句的结束,所以我们可以用分号在一行里拼接多个查询语句
4、宽字节注入原理
a 数据库使用 gbk 编码
b 使用反斜杠进行转义
5、报错注入原理:
a 报错注入函数,例如:floor() 、group by 、exp() 、updatexml() 、extractvalue()
6、Dnslog注入原理
a 利用 load_file() 函数读取共享文件
b共享文件形式:\hex(user()).dnslog.cn/ 或者 \host\
c 利用 mysql 的 load_file() 函数解析拼接过的 dnslog 域名,进而带出数据
7、联合注入的步骤
a 找传参点
b 判断闭合符
c 判断列数
d 判断显示位
e 查询database()
f 查表
g 数据
8、盲注分类
a 布尔盲注(页面回显 长度 :burp 里的 Content-Length )
b 时间盲注(页面回显 时间 :burp 包的 右下角 )、Dnslog
9、盲注函数
if() 、sleep() 、substr() 、left() 、limit 、ascii() 、length()
10、判断闭合符方式:
构造真和假:id=1 and 1=1 、id=1’ and 1=2 、=1" or 1=1 、') or 1=2 、and 234=234 、and 1 、or 1 、and 1^1 、&&1 、||0
11、sql注入绕waf
a 代替空格:/**/ 、/!/ 、+ 、%09 、%0a 、%00 、括号
b 关键字:16进制 、char() 、字符串拼接
c 等价函数替换:sleep()==benchmark() 、if()==case when then else end 、ascii()==ord() 、substr()==substring()
d 内联注释:/*! */
12、sqlmap常用参数
a -r :用于post型注入,指定 txt 文件的 post 数据包
b -u :指定url,通常用于 get 型注入
c -p:指定注入点,例如: python sqlmap.py-u http://127.0.0.1/index.php?id=1&mid=2&page=3 -p “page”
d * :指定注入点,例如:python sqlmap.py-u http://127.0.0.1/index.php?id=1*&mid=2&page=3* 注意:* 号也可以用于伪静态的注入,用法同前面一样,直接在注入点后面加 *
e -m :用于sqlmap批量跑注入,指定一个含有多个 url 的 txt 文件
f --os-shell :用户获取 shell
g --os-cmd :执行系统命令
h --tamper :指定绕过用的脚本文件
i --level 3 :指定测试等级,等级越高,检查项越多,共 1-5 个等级
j --risk 3 :指定风险等级,等级越告,payload 越复杂,共 1-3 个等级
k --random-agent :指定随机 agent 头
l --batch :默认选项
m --dbms :指定数据库类型
13、sql注入获取 webshell 的方式
a 写文件(需要写权限)
b 写日志文件(不要学权限,但是需要通过命令开启日志记录功能,而且还需要把日志文件的路径指定到网站根路径下面)
14、sql注入防御
a 过滤敏感字符,例如:information_schema 、into out_file 、into dump_file 、’ 、" 、()
b 预编译
c 站库分离:增加攻击者的时间成本、防止通过数据库拿到webshell
15、mysql提权方式
a mof提权
b udf提权
XSS:跨站脚本攻击
1、XSS原理
开发人员没有做好过滤,导致我们可以闭合标签进而插入并执行恶意JS代码
2、xss类型分类
a DOM型 :由 DOM 文档完成解析
b 反射型 :即插即用,没有存储在数据库里面
c 存储型 :被存储在数据库里面,造成持久型的攻击
3、常用的JS函数
a document.cookie() :弹出当前网址的浏览器 cookie
b console.log(‘xss’) :在控制台输出日志
4、绕过方式
a 改变大小写:
b 编码绕过( html 实体编码、 十进制十六进制八进制编码、 unicode 编码)、
c 关闭标签:利用大于号 > 关闭标签使得xss生效
d 双写饶过:<scr
e 可以使用 空格 , 换行 ,tab 键或者 /**/ , /!a/,的形式绕过 关键词的检测
f 用/代替空格
g 用 反引号 代替 括号 、双引号
h 用 throw 代替括号
i 用 html 实体编码 : 代替 冒号
j 用 jsfuck 编码绕过大部分字符过滤
5、扫描工具
xsstrick
6、XSS钓鱼平台
kali工具:BEEF
免费平台:自行搜索
7、xss防御
过滤敏感字符
a 例如:aler() ,script ,onerror
b 增加 httponly :禁止前端执行JS代码
XXE:外部实体注入
1、漏洞原理:
PHP开启 外部实体引用 传入的 xml 数据未经过过滤
2、漏洞特点
a 传参数据是以 xml 标签的形式
b 相应包里的 Content-type:text/xml
3、攻击手法
a 利用 file 协议读取文件
b 利用 http 协议进行端口探测,例如:http://127.0.0.1:22
c 利用 php 伪协议读取文件
4、盲XXE
核心:加载执行远程xml文件,造成数据外发的效果
5、防御
关闭外部实体功能:libxml_disable_entity_loader(ture);
文件上传
1、漏洞原理
开发人员未在上传点对文件名和文件内容做严格的过滤
2、绕过黑名单
1 特殊后缀名绕过:php3-php5 、 phtml 、通过修改 httpd.conf 文件按可以实现解析任意后缀名
2 通过上传 .htaccess 文件可以实现解析任意后缀名
3 上传 .user.ini 文件,利用包含实现getshell
4 空格绕过,利用的是 windows 和 linux 不允许文件名出现包括 空格 在内的特殊字符,例如上传:1.php[空格]
5 点绕过,windows 不允许出现点结尾的文件名,会自动去掉文件名后面的点, linux 允许出现点结尾的文件
6 流文件绕过,windows 中,:: D A T A 符号后面的内容会被当成字节流数据,上传之后会自动去掉 : : DATA 符号后面的内容会被当成字节流数据,上传之后会自动去掉 :: DATA符号后面的内容会被当成字节流数据,上传之后会自动去掉::DATA 以及后面的内容
7 双写后缀名,例如上传 1.pphphp ,只适用于将 php 替换为空的情况
3、绕过白名单
1 00 截断
2 配合文件包含
4、对文件内容进行绕过
1 填充垃圾字符
2 免杀
5、绕过前端验证
1 在浏览器关闭前端 JS 功能
2 burp 抓包修改
文件包含
1、文件包含函数
a include() 、 require 、 include_once() 、 require_once()
2、文件包含支持的协议
a php 伪协议:fiter 、 input 、 data 、 zip 、phar
b file 协议
c http 和 https
3、利用条件
a 本地文件包含不需要开启 allow_url_* 参数
b 部分伪协议需要开启一个或者两个 allow_url_* 参数
4、防御
a 过滤关键字,例如:php:// 、 file:// 、 http://
b 关闭 allow_url_* 参数
命令执行
1、拼接 & 、&& 、 | 、 ||
2、原理:在操作系统中, & 、&& 、 | 、 || 都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令
CSRF:跨站请求伪造
1、原理:在 cookie 有效期范围内,诱使受害者点击某个页面,进而执行非受害者本意的操作。
2、同源策略内容
主机、端口、协议
2、防御
a 验证 referer
b 加 token 验证
SSRF:服务器请求伪造
1、原理
大都是由于服务端提供了从其他服务器获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
2、支持的协议
a http://
b https://
c dict://
d ftp://
e file1
f php 伪协议
g gopher://
3、危害
a 内外网的端口和服务扫描
b 主机本地敏感数据的读取
c 内外网主机应用程序漏洞的利用
d 内外网Web站点漏洞的利用
4、防御
a 过滤 file:// 、 gocher:// 等,过滤 端口
b 把网站需要访问的内网资源路径写死,不从外部接收
信息泄露
1、原理:
信息泄露可能是不慎泄露给浏览该网站信息用户的,也有可能是攻击者通过恶意的交互从网站获得数据。例如.svn、.git、.ds_store
2、利用手法:
a 通过 robots.txt 泄露网站隐藏目录/文件.或者站点结构
b 网站站点的 备份文件 未删除导致的泄露,可能会泄露网站源代码
c 没有正确处理网站的一些 错误消息 ,在错误消息中泄露数据库表,字段等
d 一些高度敏感的用户信息,银行账号等泄露
e 在源代码中泄露数据库 账号密码 ,等等(GitHub)
f 网站某些程序的细微差别提示是否存在某些资源,用户名
中间件漏洞
Apache
a 解析漏洞:多后缀名解析漏洞(从后往前解析,一直解析到可识别的后缀)、罕见
b 后缀名解析漏洞、.htaccess解析漏洞
命令执行漏洞:CVE-2021-42013
IIS
a 文件名解析漏洞,从前往后解析,遇到分号就截断,忽略分号后面的内容
例如:1.asp;.jpg
b 罕见后缀名,例如:.asa、.cer、.cdx
c IIS 5.X/6.0的文件夹解析漏洞,例如:将文件夹以1.asp命名,该文件夹中的所有文件都会被当做asp文件执行:1.asp/1.jpg、1.asa/1.jpg、1.cer/1.jpg、1.cdx/1.jpg
d IIS 7.0/IIS 7.5的CGI解析漏洞,例如上传1.jpg然后访问1.jpg/.php
e IIS PUT文件上传漏洞
f HTTP.sys远程代码执行漏洞:MS15-034
Nginx
a CGI解析漏洞,例如上传1.jpg然后访问1.jpg/.php
其他
1、IIS:目录解析漏洞、分号截断、CGI解析漏洞、PUT文件上传漏洞、MS15-034
2、Apache:多后缀名解析漏洞、目录遍历、命令执行漏洞:CVE-2021-42013
3、Nginx:CGI解析漏洞
4、Tomcat:后台部署war包、PUT文件上传漏洞、反序列化漏洞、样例目录session操控漏洞
5、Weblogic:后台部署war包、一大堆反序列化漏洞、未授权RCE漏洞
6、Jboss:后台部署war包、一堆反序列化
框架漏洞
thinkphp5.x RCE
基本都是对模型,对方法的路由处理有误导致RCE,反序列化漏洞的话需要有反序列化点
thinkphp5.0.x漏洞原因是对url处理有关,导致远程命令执行
Struts2
1、原理:struts2是一个框架,他在处理action的时候,调用底层的getter/setter来处理http的参数,将每一个http的参数声明为一个ONGL。导致命令执行
框架特点:文件后缀名”.action ” “.do”
2、例子:
S2-062漏洞形成的原因是struts在处理标签的name属性时,将用户输入当作表达式进行二次解释,导致OGNL表达式注入。
s2 046 通过Content-Type这个header头 filename 后面需要00截断,注入OGNL语言,进而执行命令,通过不恰当的 filename 字段或者大小超过 2G 的 Content-Length 字段来触发异常,进而导致任意代码执行。
Shrio 反序列化
1、原理:Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理,Shiro提供了RememberMe的功能,当用户关闭浏览器,下次再打开浏览器访问时,还是能记住我是谁,无需登录即可访问。
其实很多网站都有这功能,Shiro对RememberMe的Cookie做了加密处理,在CookieRememberMeManaer类中将Cookie中RememberMe字段内容分别进行序列化、AES加密、Base64编码等操作,但是默认的加密AES Key是硬编码进去的,都知道这个Key是什么,所以在逆向操作反序列化、Base64解密的时候,攻击者就可以伪造恶意数据通过反序列化远程执行命令。
Fastjson 反序列化
通过Fastjson反序列化漏洞,攻击者可以传入一个恶意构造的JSON内容,程序对其进行反序列化后得到恶意类并执行了恶意类中的恶意函数,进而导致代码执行。
redis未授权
1、redis在6379端口
2、写webshell
3、写公钥实现免密登录
4、写计划任务实现反弹shell
5、主从复制getshell
这篇关于蓝队面试经验总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!