安全测试内容
1、前端数据内容抓取
a、指定内容的抓取
对于关键内容比如userid, 投资金额等的数据进行修改
b、隐藏字段内容的抓取
对于页面type='hidden'的组件,尝试下是否可以进行修改及修改后的效果。
比如新手标的redmoney_id就是在页面里隐藏着,发现规律的话,可以将普通标买成新手标。
http cookie 也可以认为是一个隐藏的字段
尝试修改cookie
2、前端相关参数的修改
a、URL参数,主要针对是get请求的变量
b、referer, referer消息头可以准确的判断某个特殊的请求来自哪个url。所有正常的请求都来自已知的且是我们自己系统的url
将feferer修改后,看看效果
c、模糊数据
对于某些加密数据,可以尝试去进行解密
即使无法解密,我们也可以将一个更加便宜的商品加密价格 修改到一个贵的商品的加密价格上
3、安全处理客户端数据
a、减少客户端向服务器传输的数据,比如某个产品的价格,只要将购买产品的相关其他属性传给服务器,后台服务主动去查一下产品的价格即可。
减少数据传输从业务上来决定
b、如果确实需要进行传输数据,对必要的数据一定要进行加密。
攻击验证机制
1、验证技术
a、基于HTML表单的验证
b、多元机制,组合型密码和物理令牌
c、客户端ssl证书或智能卡
d、http基本和摘要验证
2、问题
a、密码保密性不强
空白,太短的密码,常用密码,密码和用户名
一致,密码尝试无限制等
b、记住我功能
确认记住我功能是只记住用户名? 还是记住用户名和密码?如果是第一种,还比较安全
如果是记住用户名和密码,则可以查看cookie在记住和不记住之间的区别
c、找回密码,修改密码等功能一般存在的都是逻辑漏洞
攻击数据存储区
SQL注入:
username= ' or 1=1
select * from user_main where username = '' or 1=1
username= ' or 1=1 --
select * from user_main where username= '' or 1=1 --
现在web应用系统的程序安全意识很强,所以sql注入漏洞也越来越少
对于update
update users set password='newsecret' where user='marcus' and password = 'secret'
user= admin' --
字符串渗透测试步骤:
1、提交一个单引号
作为查询目标,查看是否有错误
2、如果有错误或异常,提交两个单引号,看什么情况。
数字注入:
1、如果原始值为2, 尝试提交 1+1 或者3-1
2、可以使用 67- ASCII('A') 来表示 2
最简单直接的方式,可以使用sqlmap对网站进行sql注入检测
http://www.freebuf.com/articles/web/29942.html
sql 注入的防御措施
1、对于输入内容的过滤
2、参数化查询,避免sql的拼接
3、深层防御,访问数据库时,应用程序
尽可能使用最低权限的账户
尽可能将数据库一些默认的功能关闭
尽可能及时对数据库本身的漏洞安装安全补丁
注入nosql :
接口的安全测试:
1. 请求合法性校验,考虑采用token方式保证接口不被其他人访问。
2. 数据校验,白名单
方式验证数据确保不出现异常数据和注入攻击。
3. 数据加密,对数据进行加密保证其他人无法非法监听或截取。
4. 错误处理,对系统返回结果编制返回码,避免堆栈信息泄露。
5. 接口阈值,对接口访问频率设置阈值,超出设定的访问频率时返回错误码。
测试后端组件
1、注入操作系统命令
2、OS命令注入漏洞
3、路径遍历漏洞
4、防止脚本注入漏洞