以下内容纯属自嗨
- 从代码审计角度来看,就是分析可能存在漏洞的位置是否外部可控,比如命令执行函数中的参数是否来自外部http,是否进行了足够过滤或者白名单。
- 逻辑漏洞是一些功能上的执行流程上的疏漏,代码层面考虑不够全面。
- 挖漏洞不能急,要仔细观察每个链接,分析每个流程,分析代码实现逻辑。
攻击者注入恶意SQL语句,拼接到后端成功执行。
-
输入单引号、双引号或括号等闭合
-
常用测试payload
https://github.com/payloadbox/sql-injection-payload-list
-
在存在数据交互的链接参数测试
-
Burpsuite
- 使用intruder功能 自带SQL注入爆破字典,可探测注入点
-
sqlmap
可联动CO2插件
使用手册 https://sqlmap.kvko.live/usage 常用命令 python sqlmap.py -u http://xxx.xom --random-agent --cookie=COOKIE --batch -v 3 --delay 2 从http请求探测 -r 测试指定参数 加* python sqlmap.py -u "http://targeturl/param1/value1*/param2/value2/" 指纹识别 默认识别指纹,如果想更准确识别开启下列参数 -f 或 --fingerprint 并发 --threads 使用技巧 - 没检测到问题时可提升level等级探测尝试一下
-
WAF
-
预编译
这种形式是预先确定了SQL的语法格式,用户输入不能改变后端SQL语法
身份验证和授权的区别:一个是验证身份,另一个是被允许做某事。
- 身份验证机制弱,无法防止爆破
- 代码逻辑存在问题,可绕过
-
基于密码登录
-
多因素身份认证
例如带验证码
-
当口令输入和验证码输入不在一个页面
尝试用自己账户或已知账户登录,记录登录后的URL,然后切换其他用户,在跳转验证码页面时候,修改URL。这种情况是后端在没确认验证码就认为用户已经登录
-
测试验证码是否可以绕过
-
-
绕过限制
根据目标限制策略制定爆破方式
-
分析逻辑,考虑多种可能性
- Burpsuite
加载文件内容功能的链接没有过滤,或者文件名后台没有进行标准化处理过滤,攻击者可以拼接系统绝对路径或上层目录方式读取任意文件。
-
在读取文件内容或加载文件的参数后添加payload
../../ect/passwd 直接添加绝对路径:/etc/passwd
-
在web页面图片右键新链接打开,更改文件名为payload
-
绕过限制
- 双写payload
- URL编码或双重URL编码
- 给定文件目录后添加payload
- 后缀名前%00截断
- Burpsuite自带fuzz 目录遍历字典,或使用自己的字典,包含常规测试payload。
- 爆破位置:文件名处、后缀前、指定目录文件名后边
- 白名单过滤
- 后台使用路径规范化函数过滤
(白盒)后台代码调用系统命令的位置可被外部控制。
白盒代码审计可较好的覆盖该漏洞类型,定位命令执行函数,分析参数是否外部可控,是否过滤。
开发过程中对某一功能或流程考虑不全面,对用户输入考虑不充分,导致流程绕过或者意外输入产生威胁。
- 商城常见场景
- 修改代表数量、价格的参数值
- 数量不小于0不大于某个整数,抓包也无法修改,爆破最大数量试一试
- 首先正常走完功能流程,然后分析可能出现的逻辑缺陷
Burpsuite
- 修改、爆破
- 充分考虑用户各种输入
使用不严谨的访问控制手段,如通过URL参数来判别用户授权访问资源,攻击者可以绕过鉴权逻辑,达到越权访问资源的目的。
-
结合burpsuite Autorize插件可检测
在测试时候要做到仔细,仔细访问每个链接,测试是否可以越权
-
其他方式
分析鉴权逻辑,找到绕过方式
web服务器没有充分验证上传文件的名称、类型、内容或者大小的情况下将文件上传到其文件系统,这些不符合预期的上传文件对系统造成破坏。
类似跨目录或者zip炸弹这种黑盒测试无法看到结果,且可能造成破坏。外部找到上传点,结合白盒代码审计可高效测试。
-
文件类型
-
文件名称
java跨目录上传,文件名包含 ../
前后端是否校验一致
-
文件大小
过大文件可造成资源耗尽
-
文件内容
包含恶意代码
-
压缩文件上传
- 文件大小,zip炸弹
- 文件内容,跨目录
-
白盒代码审计
- burpsuite抓包修改
- find-sec-bugs+IDEA 代码审计(java)
- 校验文件类型、名称、大小
- 白名单、路径标准化
服务端请求伪造,攻击者诱导服务器向非预期的位置发出请求。
- 重点关注存在URL、加载资源的链接
- 爆破
- 探测端口
burpsuite
-
反射型XSS
输入处注入恶意脚本,后端没有对用户输入安全过滤,脚本返回被浏览器解析。
-
存储型XSS
恶意脚本注入了数据库,用户访问漏洞页面,加载恶意脚本。
-
DOM型XSS
页面DOM从用户输入获取内容,注入恶意脚本被DOM解析。
-
手工测试
-
在输入点输入一串数字 如:111111
-
观察是否原样返回
-
输入测试payload
-
payload 常用技巧
闭合、大小写、双写、伪协议
-
-
自动化测试
- burpsuite爆破插入点
- xray被动扫描
- AWVS和appscan也能扫描
- 输入过滤,后台过滤
- 输出内容编码
攻击者伪装成网站信任用户对网站发起恶意请求。
利用条件
- 用户已经登录网站
- 用户用同一浏览器访问恶意链接
- 没有不可预测的参数
-
使用burpsuite自带poc生成工具进行测试
-
测试cftk
测试是否可截断、退出登录后是否有效,在cookie中是无法防御的
- 攻击条件是利用浏览器访问网站自动携带认证cookie的特性
- 同源策略可以通过html tag加载资源,同源策略不拦截跨域请求而是阻止返回结果,参考
- 注意攻击请求和正常请求页面代码区别,攻击请求是嵌入在hack网站页面代码中的,这部分代码没办法获取正常用户请求token字段内容
-
表单token
每次发送请求在表单附带一个token随机数,攻击者网站可以构造请求,但是攻击者网站页面代码是没办法获取服务器发送给用户的token的。
-
header头token
用户获取服务器返回token,每次请求Ajax自定义请求头,提取token值附带在request