安全测试学习
目录
- 一、常见状态码
- 二、cookie
- 三、如何确认前后端的bug
- 四、burpsuite做安全测试
- 五、暴力破解——用户名和密码
- 六、暴力破解——有验证码,服务端生成
- 七、暴力破解 -- 有验证码,在客户端生成
- 八、SQL注入
- 第一步:是否存在SQL注入漏洞
- 第二步:确认该界面对应的SQL涉及到多少列
- 第三步:查询数据库的名字
- 第四步:查询数据库pikachu中的表名
- 第五步:查询用户表 users中的列名
- 第六步:查询出users表下面的账号跟密码
学习目标:burpsuite使用、常见状态码、前后端的bug确认、cookie学习
一、常见状态码
1、为什么要学习常见的状态码
可以通过状态码快速判断出是前端还是后端bug
2、如何查看状态码
2开头
200:请求成功,返回所需数据
3开头
重定向:你请求a链接,在服务器内部转为b链接
301:永久重定向
302:临时重定向
4开头:请求有问题
400 Bad Request 请求语法错误或参数无效。
401 Unauthorized 被请求的页面需要用户名和密码。
403 Forbidden 对被请求页面的访问被禁止。
404 Not Found 服务器无法找到被请求的页面。
429 too many requests 客户端发送的请求过多(限流)
5开头:服务器问题
500:服务器内部错误
502:代理服务器从上游服务器收到无效响应
二、cookie
1、cookie是什么?
所谓“cookie”数据是指某些网站为了辨别用户身份,储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。通俗来讲就是指缓存数据,包括用户名、密码、注册账户、手机号等公民个人信息。
2、为什么有些网站登录成功后去看个人数据无需再次输入账户号和密码?
因为这些电脑把你的账号和密码等用户信息存在在cookie、session或token中,以后我们去访问比如个人中心,我的订单,前端开发会把这些数据也一同发送过去给服务器,然后后端开发接收到cookie、session或者token后,开发会把他们进行逆向解开,然后校验这些数据的用户名、密码、有效时间是否都有效,如果有效则允许用户查看对应的数据,否则提示访问有异常等。
3、cookie如何测试
3.1 cookie是否加密
3.2 cookie的有效时间
3.3 篡改cookie测试
如果cookie被修改后还能正常访问数据,表示项目有大问题。
3.4 删除cookie测试
如果cookie删除后还能正常访问,表示项目有大问题。
三、如何确认前后端的bug
没交互
如有问题,则是前端bug
有交互
如发送的内容少了、多了、错误、空时,是前端bug。
如响应的内容少了、多了、错误、空时,是后端bug。
如发送跟响应的内容都没有问题,则是前端bug。
这是前端bug,请求文件的路径拼接有问题
四、burpsuite做安全测试
1、burpsuite是什么?
一个安全测试工具,还可以做抓包。
2、burpsuite安装
傻瓜式安装
3、设置burpsuite支持字体大小跟支持中文抓包
4、burpsuite常用功能
五、暴力破解——用户名和密码
1、 暴力破解
对输入框不断使用不同数据进行尝试,直到正确为止。
2、 应对方法
限制连续操作错误
3 、burpsuite做暴力破解操作
3.1 使用自带的浏览器打开目标页面
3.2 在目标页面输入内容
3.3 选择目标,然后发送到暴力破解界面
3.4 相关设置然后输入需要测试的数据
3.5 点击start attack,发起攻击
3.6 如何确认是都破解成功
破解成功的提示,跟破解失败的提示是不一样的,换句话
而言,成功跟失败提示的数据大小不一样
六、暴力破解——有验证码,服务端生成
1、 在页面上输入相关内容
2、 在burp suite上开启拦截点 (让验证码不能刷新)
3、 发送内容到暴力破解
4、 后面的操作跟前面那个没有验证码操作一样
七、暴力破解 – 有验证码,在客户端生成
1、 在界面上输入相关内容
2、 burp suite 不用开启拦截 --》因为前端生成的验证码,只有输入正确的情况下才会发送
3 、然后把内容发送到暴力破解
4、 后面操作跟之前没有验证码的暴力破解一模一样
八、SQL注入
1、 SQL注入是什么?
往输入框或者下拉框等输入外部来的数据,可以看到数据库的数据或者进入后台
2、 如何确认是否存在SQL注入漏洞
可以通过在里面添加相应的内容,如果存在报错,表示存在SQL注入漏洞。
3、 如何防止SQL注入
在注册/登录等操作,禁止使用特殊符号;其他方法:防止SQL注入攻击的10种有效方法
4、 SQL注入操作
第一步:是否存在SQL注入漏洞
1 在软件上进入目标操作界面
2 开启拦截点
3 在界面上随意操作一份内容
4 在burp suite 找到拦截的内容,然后在 目标内容id=4 后面添加上 and 1==2
5 点击forword按钮,进行下一步操作
6 回到目标界面,查看内容,是否有报错的,说明存在SQL注入
第二步:确认该界面对应的SQL涉及到多少列
1.开启拦截点
2.随意下来一个内容,然后点击查询
3.在id=2 后, 插入以下内容 order by 5 ,意思是根据select后面的地5列进行排序
4.点击forward,操作,然后看界面是否报错,如果报错表示select后面没有第五列
5.经过上面的反复操作,知道order by 2,不会报错!!!!到这一步可以确定select后面有两个列名。
第三步:查询数据库的名字
1.在burpsuite 开启拦截点
2.在界面随便选一个,然后在点击查询,然后在 burpsuite 抓包的界面,输入
union select 1,database()
3.点击forword,然后去界面看效果内容
第四步:查询数据库pikachu中的表名
1.在UI界面回到操作目标界面
2.在burusuite 开启拦截点
3.在目标界面随便选一个,然后点击查询
4.在burpsuite 的抓包界面,输入union
+ 下面的语句
select information_schema.`TABLES` .TABLE_NAME,1
from information_schema.`TABLES`
where information_schema.`TABLES` .TABLE_SCHEMA = 'pikachu'
5.点击forward
第五步:查询用户表 users中的列名
1.在UI界面回到操作目标界面
2.在burusuite 开启拦截点
3.在目标界面随便选一个,然后点击查询
4.在burpsuite 的抓包界面,输入union
+ 下面SQL语句
select information_schema.`COLUMNS`.COLUMN_NAME , 2
from information_schema.`COLUMNS`
where information_schema.`COLUMNS`.TABLE_SCHEMA = 'pikachu'
and information_schema.`COLUMNS`.TABLE_NAME = 'users'
第六步:查询出users表下面的账号跟密码
1.在UI界面回到操作目标界面
2.在burusuite 开启拦截点
3.在目标界面随便选一个,然后点击查询
4.在burpsuite 的抓包界面,输入union
+ 下面的SQL
select u.username , u.`password` from users u
确认账号密码后https://www.cmd5.com/进行MD5解密