安全二进制学习
2网络攻击攻击的原理和基本防护手段
2.1 XSS攻击
本质是将恶意脚本嵌入到网页并执行的攻击,产生的主要原因是网站对用户提交的数据检查不严格。一般分为
- 反射性跨站:将用户输入的数据通过URL的形式直接或未经过完善的安全过滤就在浏览器输出
- 存储型xSS:将用户输入保存在服务器的数据段或者文件里,网页查询数据时会展示
- DOM型跨站攻击
XSS攻击IDE条件,针对不同阶段
- 入库处理阶段:
- 网页有攻击者可控制的输入点
- 输入信息可以再受害者浏览器显示
- 数据预备功能的可执行脚本,且没有特殊字符过滤和字符串转意或者防护措施具备一定的绕过手段
- 出库处理阶段:
- 浏览器将输入解析为脚本,且具备脚本执行的能力
XSS测试及绕过部分防护的手段
一般都是测试能否输入,然后能否显示,是否有过滤。一般都是输入下面的语句看什么效果做测试
<script>alert(/xss/)</script>
- 闭合标签测试,如果script的语句被包含在标签里比方说
<testxtarea></textarea>
标签里面,那么久尝试先闭合textarea标签 - 大小写混合测试,主要针对过滤script没区分大小写的匹配导致
- 多重嵌套,如果服务端会替换script语句,而且只替换一次,那么就需要使用这个手段换言之,语句为
<scr<scritp>ipt>alert</xss/></script>
- 宽字节注入法,宽字节主要是针对常见中文编码比方说GBK啥的,它会吃一字节字符。如果网页字符是GBK,然后因为单引号被转移,但是转移符号的编码是0x5c,在GBK的低字节里面,后面加一个高字节编码,高字节编码就会和原先的编码组合成合法字符,然后跨站就过了
Xss的防范手段
- 过滤特殊字符,这种方法又被叫做xss filter
- 利用实体化编码,严格限制哪些语句是数据,哪些语句是代码
- httponly
2.2请求伪造漏洞和防护
2.2.1 CSRF
CSRF本质就是攻击者伪造一个链接,这个链接会自动向当前用户的用户服务器提交攻击者伪造的业务请求
触发条件:
- 用户处于登录状态
- 伪造的连接和正常应用请求链接一致
- 后台未对用户业务开展合法性校验 <==
针对CSRF的防护
- 添加中间环节:
- 添加验证过程
- 添加验证码
- 验证用户请求的合法性:
- 验证refer。从哪里来
- 验证token,token一般是攻击者无法获取的,因此即使发起了攻击也不可以拿到。但是这个有限制
- token必须为一次性的
- token具备较强的随机性
2.2.2.2 SSRF
2.3 SQL注入
本质是对用户的输入没做充分的校验,一般有以下几种条件
- 参数处理问题
- 对用户参数进行了错误的类型处理
- 对转义字符处理环节产生了遗漏或者可悲绕过
- 服务配置问题
- 不安全的数据库主力
- web应用对错误的处理不同
- 不当的类型处理
- 不安全的数据库配置
SQL注入的分类
- 回显注入,其思路如下
- 寻找注入点,检查页面是否有变化;页面是否缺少了部分内容;是否有错误回显;跳转到默认界面;
- 确定有注入点以后,尝试获取表的信息
- 盲注
防护手段
- 参数类型检测及绕过:参数类型检测是否符合预期,比方说是不是数字,是不是正负数,是不是数字字符串啥的
- 绕过:针对具体的防护手段,比方说检查数字的时候提交0x01
- 参数长度检测:判断参数长度,strlen可以获取参数长度,太长就截断
- 危险参数绕过
- 黑名单过滤,将尖括号,union啥的过滤掉
2.4文件上传攻击
是否允许用户上传特殊文件,上传检测绕过技术
- 上传检测绕过基础
- JS检测及绕过,一般是检查拓展名。
- 绕过:禁用js或者直接修改拓展名,或者直接就该拓展名后缀
- MIME类型,HTTP协议利用content-typoe表示上传内容类型,
- 绕过:毕竟也是客户端的东西,可以控制
- 服务端解析:在服务端检查上传类型和具体内容,
- JS检测及绕过,一般是检查拓展名。
- 文件解析攻击
- .htaccess攻击
- apache解析漏洞攻击
- IIS解析漏洞攻击
- nginx解析漏洞攻击
2.5 Web木马
2.6 文件包含攻击
2.7 命令执行攻击
结尾
唉,尴尬