http://zhouanya.blog.51cto.com/4944792/1388681/
1.SQL注入
1.1.什么是sql注入
所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,获取想得到的资料(如数据库用户名、密码、表结构等)。
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报。动态生成Sql命令时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。
1.2.sql注入原理
攻击者会将一些恶意代码插入到字符串中,然后会通过各种手段将该字符串传递到SQLServer数据库的实例中进行分析和执行。只要这个恶意代码符合SQL语句的规则,则在代码编译与执行的时候,就不会被系统所发现。
SQL注入式攻击的主要形式有两种:一是直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量,由于其直接与SQL语句捆绑,故也被称为直接注入式攻击法。二是一种间接的攻击方法,它将恶意代码注入要在表中存储或者作为原数据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。
![图片1.jpg wKiom1M61SehIKCIAADrMkAzWr8048.jpg](https://i-blog.csdnimg.cn/blog_migrate/d130a17ed18b19c2ab55b859fb27e7c8.jpeg)
2.AppScan注册
2.1.注册步骤
1.将patch.exe文件当到APPSCAN的安装目录(如:D:\Program Files\IBM\Rational AppScan)下,运行。
2.运行keygen.exe,生成lince.lic文件。
打开APPSCAN,帮助-》许可证-》装入旧格式(.lic)的许可证,将刚才生成的.lic文件装载。
![图片2.jpg wKiom1M61VmxyVvYAAB33WILtio752.jpg](https://i-blog.csdnimg.cn/blog_migrate/2022c6000271765f5a70ac3005412609.jpeg)
3.新建扫描任务
3.1.扫描模板选择
打开AppScan工具,点击“新建”,会弹出一个扫描模板选择框,一般选择“常规扫描” 或者自己定义的模板。
![图片3.jpg wKioL1M61W-xlRgLAAExyLzQ_OY136.jpg](https://i-blog.csdnimg.cn/blog_migrate/870a132b905a0b1b8dd89176186623e6.jpeg)
下一步会进入扫描配置向导,选择执行的扫描类型,默认是“Web应用程序扫描”,点击“下一步”,输入“起始URL”
![图片4.jpg wKioL1M61ZqStzeDAAF899H3qVo042.jpg](https://i-blog.csdnimg.cn/blog_migrate/92a2d57f499ccee3a18c8d1057ecf23c.jpeg)
3.2.登录管理
进入登录管理,因为有些页面需要登录后 才能做有效的扫描,这里记录的是登录所需信息,便于扫描时能登录应用程序。总共有4种方法,比较常用的是“记录”和“自动”
记录: 点击“记录”按钮,进行录制登录操作。操作类似于用LR做脚本录制。
![图片5.jpg wKioL1M61dWDsMSTAAFDv3aZVHw192.jpg](https://i-blog.csdnimg.cn/blog_migrate/406c2ddb77f4be05c6f3abb2f32169b1.jpeg)
自动:输入用户名和密码,扫描时会自动根据这个凭证登录应用程序。
![图片6.jpg wKioL1M61fjT37x1AACNy8KanvA495.jpg](https://i-blog.csdnimg.cn/blog_migrate/5e6e2bd820bc0436a2676ee7ad62a4bb.jpeg)
3.3.测试策略选择
选择测试策略,AppScan会根据你的测试策略来进行安全扫描测试。我们可以先选择“Default”,后面再做相应修改,或者点击“浏览” 选择已整理的测试策略模板
![图片7.jpg wKioL1M61iOxN0mcAAEZGvJx-Mw539.jpg](https://i-blog.csdnimg.cn/blog_migrate/4bb39a0b358e9e2deadf388cb6612a3d.jpeg)
3.4.完成扫描配置
完成扫描配置向导后,会提供如何启动的4个选项给你。
![图片8.jpg wKiom1M61mnThUlIAACrtuEsP9Y094.jpg](https://i-blog.csdnimg.cn/blog_migrate/26b0300b39042a24046a18fbfd37789e.jpeg)
1)启动全面自动扫描:会自动探索URL,而且边探索边扫描页面。
2)仅使用自动“探索”启动:自动探索URL,不做扫描。
3)使用“手动探索”: 手动去访问页面,AppScan会自动记录你访问页面的url
4)我将稍后启动扫描:AppScan不做任何操作,需要自己手动去启动扫描。
选择第4个——“我将稍后启动扫描”, 在扫描配置模块,可以查看刚才所做的配置信息
![图片10.jpg wKioL1M61nSQ8VoAAAG1H0pe3_A003.jpg](https://i-blog.csdnimg.cn/blog_migrate/df7a0d17c67b3508af857650a8c3b8e6.jpeg)
3.5.导入测试策略模板
扫描配置>>测试策略,点击“导入”,导入一份测试策略模板
![图片11.jpg wKiom1M61suBe2hiAAEHuPbZtkc665.jpg](https://i-blog.csdnimg.cn/blog_migrate/e78d7f777499d09d89442429a00f2d72.jpeg)
3.6.扫描线程设置
可以设置扫描的线程数,从而减低扫描速度,减少对应用服务器造成过高负载:
在扫描配置>>连接>>通信和代理里设置
![图片12.jpg wKioL1M61tHQFa_ZAABowGMPpoI699.jpg](https://i-blog.csdnimg.cn/blog_migrate/17ee73c57d66c598ccc280df92e1ad70.jpeg)
3.7.导出扫描配置模板
扫描任务可能以后我们还需要重复做,为了减少重复的扫描配置,我们可以把扫描配置导出成模板,便于以后的复用。在“扫描配置”模块,点击“导出为模板”,后缀名是“.scant”
![图片13.jpg wKiom1M61yHxqvwWAABB8sE5iAM705.jpg](https://i-blog.csdnimg.cn/blog_migrate/6718595ec4951966bfc5a2fca8a2a050.jpeg)
4.扫描指定的URL
4.1.处理伪静态页
伪静态页定义:其共同特征,都是以 html 为后缀名,最后的文件名格式都是 file+ 数字格式;这种类型的页面经常存在新闻,论坛等。如果访问这些页面,发现页面结构相同,差异的都是里面的文本内容,如提供不同的新闻内容等,这些页面就是所谓的“伪静态页面”,其实是网站发布系统动态产生的,由于结果相似,在安全扫描中,没有必要针对这些页面每次都进行扫描。
如 autobbs:
http://bbs.pcauto.com.cn/forum-15580.html
http://bbs.pcauto.com.cn/forum-17065.html
方法:在扫描配置>>排除路径和文件,增加一个排除的路径
![图片14.png wKioL1M61x-iV_gDAAD53RLVfD0973.jpg](https://i-blog.csdnimg.cn/blog_migrate/45e134a9cf0b69f0ad0a53902a76cd08.jpeg)
一般来说,我们需要保留一个html页来让它扫描,因此增加一个异常项(例外)
![图片15_副本.png wKiom1M618-id_yIAAFA7_6Gj2s836.jpg](https://i-blog.csdnimg.cn/blog_migrate/dba39dbba5fd5c0602128d5dfb2ce725.jpeg)
4.2.指定扫描的URL
先排除所有的URL(如配置正则表达式:.*:82),然后把需要扫描的URL设为异常
![图片16_副本.png wKiom1M62E_ArrTuAAHnmJxEme4352.jpg](https://i-blog.csdnimg.cn/blog_migrate/5accaaaff575cad21832c8449ef4659d.jpeg)
4.3.排除文件类型
在扫描配置>>排除路径和文件中可设置排除文件类型,排除一些不扫描的文件:如swf、jpg、gif
![图片17.png wKioL1M62FCTiBU_AAF-vXYxvnM164.jpg](https://i-blog.csdnimg.cn/blog_migrate/3e05b54a63b20ec6c7252f6649cc9431.jpeg)
4.4.冗余路径设置
如果我们遇到如下类型的页面,都是 menu 参数值不同,访问以后发现出现的是页面中有不同的超链接:
![图片18.png wKioL1M62HXROx9UAAB3lXwIjfs287.jpg](https://i-blog.csdnimg.cn/blog_migrate/dc23ec6aede18a685d229867a899671f.jpeg)
这种页面是属于业务类型的“冗余路径”,需要全面扫描,这时可以打开“扫描配置”:探索>>探索选项 中 把 “冗余路径限制”的参数值设大一点(默认是5)。
也可以针对该目录建立一个单独的扫描任务,只扫描该目录和其下子目录。
![图片19.png wKiom1M62LqCsKz9AADrhgqguY8333.jpg](https://i-blog.csdnimg.cn/blog_migrate/0c981c96ad596b8d2cd6c3c6e71b18e8.jpeg)
4.5.探索的结果检查
探索完后,点击“应用程序数据”,查看“已访问的URL”,检查这些已访问的URL是否已经包含了指定扫描的URL。
![图片20_副本.png wKiom1M62RmyI9g6AAHEK3Lf2sw033.jpg](https://i-blog.csdnimg.cn/blog_migrate/2275f7d2a85c21236633c59f83a06841.jpeg)
5.扫描结果分析
5.1.安全问题分析
扫描结果会根据安全问题的类别和严重级别排序:
点击最下面的节点。
![图片1_副本.png wKioL1M62Xuh83fkAADSiUhHnQY965.jpg](https://i-blog.csdnimg.cn/blog_migrate/e70bf02a131fa2b21b3ce58f15858c21.jpeg)
了解变体的详细信息。可以把变体理解成安全扫描执行的“测试用例”,当实际结果与预期结果一直时,说明应用程序存在这个安全漏洞。
![图片2.png wKiom1M62dHgW0iMAADHtw3bBsc479.jpg](https://i-blog.csdnimg.cn/blog_migrate/b6acec044cebf1ae0ad437960ac66cff.jpeg)
对比测试与原始有什么不同。一般有差异的地方,appscan会用红色字体标识。
![图片3.png wKiom1M62fuDqjLTAADjBkbm-kw994.jpg](https://i-blog.csdnimg.cn/blog_migrate/0d7657a36f39b71a96871733e69e1914.jpeg)
在浏览器中查看具体的报错(问题)。
![图片4.png wKioL1M62fTztOQAAACmFRCqLcY813.jpg](https://i-blog.csdnimg.cn/blog_migrate/aed481f5bb4903aad09e79acfc5e8e90.jpeg)
5.2.页面中模拟重现安全问题
查看“测试”的请求信息。
![图片5.png wKioL1M62iOQBRGAAAJF2wl1V88428.jpg](https://i-blog.csdnimg.cn/blog_migrate/04987c673ad8d9ffd8bf1d0cb00c3a59.jpeg)
在页面的“新建分类名称”中输入 “\'%20having%201=1--”,点击“添加分类”按钮,能够保存成功
![图片6.png wKiom1M62nyweKKPAABie_36hRI843.jpg](https://i-blog.csdnimg.cn/blog_migrate/f3f0cf856402e9fe8cc6a3e39b234d3d.jpeg)
6.加强部分
下面是加强部分,不要求掌握,有兴趣可了解一下:
6.1.了解被测网站
如何了解到网站具体有哪些页面呢?这里我们可以利用 AppScan 的探索(页面爬行)功能。
在扫描配置里面设置了主 URL 以后,工作菜单中中依次选择扫描 - 仅探索。对网站进行探索。一般会让探索工具运行 10 到 30 分钟,看该网站具体存在哪些页面,哪些参数等。这个就可以切换到“应用程序数据”视图来查看。
我们一般关心这3个视图:
·已访问的URL():AppScan 已经探索到并且进行了分析的页面
·已过滤掉的URL():AppScan 已经发现,同时根据扫描配置,认为不需要进行安全扫描的页面。
·中断链接URL():AppScan 发现了,但是无法访问到或者访问出错的页面,如 404 页面不存在,或者 500 服务器错误等。
6.2.制定测试策略模板
确定测试策略,我们主要关心是否存在“跨站点脚本执行”和 “SQL 注入”的问题,则在扫描规则中,我们就可以选择这两种类型的规则,其他规则都排除。可以在扫描配置>>测试 >>测试策略中选择,如下图所示:
![图片7.png wKiom1M62q7TVH3oAAIvY_U17zM753.jpg](https://i-blog.csdnimg.cn/blog_migrate/a2ff36c9199f9ae1152329fec208e480.jpeg)
在测试策略中,有多种不同的分组模式,最经常使用的是“严重性”,“类型”,“侵入式”、“WASC 威胁分类”等标准,根据不同分组选择的扫描策略,最后组成一个共同的策略集合。
测试策略选择步骤如下:
1选择缺省的扫描策略,切换到按照“类型”分类,取消掉“基础结构”和“应用程序”两种类型。
说明:把扫描策略置空,没有选择任何的扫描策略。在分组类型中选择“类型”分类,类型分类中只有两种类型:“基础结构”和 “应用程序”,可以快速全部都取消掉。
![图片8.png wKioL1M62qPT6Bt6AABsmpj5nsU607.jpg](https://i-blog.csdnimg.cn/blog_migrate/be2787b938d6bcb4ba7637b157e7d765.jpeg)
2分组类型,切换到“WASC 威胁分类”,选择“SQL 注入”和“跨站点脚本编制”。
![图片9.png wKiom1M62vCSxhsYAAEvIxDlEh8273.jpg](https://i-blog.csdnimg.cn/blog_migrate/9f2b910300b8b4eefb528af514200028.jpeg)
3.分组类型,切换到“类型”,发现这时候“基础结构”和“应用程序”两种类型的扫描策略都是选择上的模式,而且是虚线,说明这两种类型下均有部分扫描策略被选择了,我们不关心“基础结构”级别的安全问题,所以在这里取消“基础结构”。
![图片10.png wKioL1M62uqTWbhbAACAPVNvz2I475.jpg](https://i-blog.csdnimg.cn/blog_migrate/1be4e4614be0559b4d4ed829901320e0.jpeg)
4.分组类型,切换到“侵入式”,发现这时候“侵入式”和“非侵入式”两种类型的扫描策略都是选择上的模式。“侵入式”会有有比较强的副作用,可能对系统造成伤害,所以一般扫描生产系统的时候,很少选择。这里把“侵入式”的用例取消掉。
![图片11.png wKiom1M62z_yQGPmAABpqWwIDKs522.jpg](https://i-blog.csdnimg.cn/blog_migrate/592810caed22077413fa197e9b202e54.jpeg)
把选择好的测试策略,我们可以把它导出成一个模板,方便以后使用:
![图片12.png wKiom1M620zBmftTAAFLK4AIHkg846.jpg](https://i-blog.csdnimg.cn/blog_migrate/4d12aa800286e8763fd043ac18f1b0fa.jpeg)
6.3.匹配正则表达式例子
http://xx.xx.com.cn/forum-15580.html
正则表达式:.*forum-\d+.html
http://xx.xx.com.cn/bbs6/forum-16071-2.html
正则表达式:.*forum-\d+-+\d+.html
http://xx.xx.com.cn/bbs6/pick_101-16260.html
正则表达式:.*pick_\d+-+\d+.html
http://xx.xx.com.cn/bbs6/type_g539fg521b-16071.html
正则表达式:type[_a-z0-9]+-+\d+.html
http://xx.xx.com.cn/bbs6/forum-16260_postat.html
正则表达式:forum-\d+_+postat+.html
http://xx.xx.com.cn/bbs6/forum-16071-10_replyat.html
正则表达式:forum-\d+-+\d+_+replyat+.html
http://xx.xx.com.cn/bbs6/time_0-16071-4.html
正则表达式:.*time_\d+-+\d+-+\d+.html
http://xx.xx.com.cn:8002/price/q-p1.html
正则表达式:q+-+[a-z]\d+.html
6.4.重复的“脚本参数”处理
在“我的应用程序数据”树状结构,鼠标选择目录以后,在右边视图中选择“脚本参数”,然后查看是否存在不同页面(URL) 存在相同或者类似参数的情况:如下图,在不同 URL 中,都存在 title 参数,默认的参数值是“不适用”:
![图片13.png wKioL1M624-w0UdNAAFvfU0MeFU935.jpg](https://i-blog.csdnimg.cn/blog_migrate/4bf4902243c0e8dd723792e793288685.jpeg)
像这些页面,在一个 URL 中进行测试以后,没有必要在另外一个页面也进行测试。所以该参数值的变化,可以认为是冗余页面,没有必要进行下一步的重新探索和测试。可以把title 添加到“参数和cookie”: 扫描配置>>参数和cookie>>其它选项—冗余调整
![图片14.png wKiom1M6287Qjy-oAAG1XLRA3J0970.jpg](https://i-blog.csdnimg.cn/blog_migrate/c1fa61b6ad1a5ff2f77e34486af04ae9.jpeg)
取消选择任何一个选择框,则表示无论是否含有该参数,无论该参数值是否发生变化,都不认为是新页面,没有必要重新测试,而且不应该因为该参数的变化去影响其他参数的测试。
6.5.常见问题
1.IBM Rational AppScan扫描时发生"AppScan内存需求已超过预定义的限制"错误从而停止工作。
原因:为了防止Rational AppScan因为超过内存限度而停止工作,可以进行相应的设定使Rational AppScan当内存使用量相对过大时自动重新启动。
这样当扫描因为剩余的虚拟内存量过低从而被迫停止时,Rational AppScan会监测系统注册表的设定来决定是否重新启动。
解决办法:自Rational AppScan 7.7版本以上,在主画面中选择菜单[工具]->[选项]->[高级]页面。
·检索PerformanceMonitor.RestartOnOutOfMemory属性并将其设定为布尔值True。
还可以使用下面的属性
·检索PerformanceMonitor\minScanTimeDurationForRestart属性并设定适当的DWORD双字节数值,该数值是指定Rational AppScan在遇到内存问题之前应当运行的分钟数。
本文出自 “安雅个人技术博客” 博客,请务必保留此出处http://zhouanya.blog.51cto.com/4944792/1388681