(转)IBM AppScan 安全漏洞问题修复(.net)
原文:https://www.cnblogs.com/anngeiBKY/p/4952269.html
按问题类型分类的问题
- 使用 SQL 注入的认证旁路2
- 已解密的登录请求3
- 登录错误消息凭证枚举1
- 会话标识未更新2
- 跨站点请求伪造1
- Missing "Content-Security-Policy" header 9
- Missing "X-Content-Type-Options" header 9
- Missing "X-XSS-Protection" header 9
- 查询中接受的主体参数1
- 启用了 Microsoft ASP.NET 调试2
- 缺少跨帧脚本编制防御1
- 已解密的 __VIEWSTATE 参数1
- 检测到应用程序测试脚本1
- 应用程序错误9
- 整数溢出3
问题修复
1.使用 SQL 注入的认证旁路
答: 登录、注册页面输入信息,过滤sql关键字或关键字符;
提交表单页面、查询页面的输入项,过滤sql关键字或关键字符。
// 关键字
string StrKeyWord = @"select|insert|delete|from|count\(|drop table|update|truncate|asc\(|mid\(|char\(|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and";
//关键字符
string StrRegex = @"[-|;|,|/|\(|\)|\[|\]|}|{|%|\@|*|!|']";
最佳的解决方法是 参数化查询,防止sql注入漏洞攻击。
2.已解密的登录请求
答:一种说法是使用SSL证书,暂时没有解决。
3.登录错误消息凭证枚举
答:用户登录时,如果输入错误的用户信息,最好提示同一个错误消息提醒,比如:你的用户名或密码输入错误。提供枚举提示,容易被暴力破解。
4.会话标识未更新
答:登录之后更改会话标识符,主要用于登录页面。
参考方案: http://www.2cto.com/Article/201302/190228.html 测试没有效果
http://blog.itpub.net/12639172/viewspace-441971/ 测试ok
在登录页面,添加红线加粗部分
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session.Abandon();
//清除SessionId
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
txt_Fileld1.Focus();
}
}
5.跨站点请求伪造
答:每个页面请求时,判断主机和端口与配置文件信息是否一致。
网上参考方法:
1,利用referer判断,
但是用户有可能设置浏览器使其在发送请求时不提供 Referer,这样的用户也将不能访问网站。
2,在请求中添加 token 并验证
关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中,
可以在服务器端生成一个随机码,然后放在form的hidden元素中,form提交的时候在服务器端检查。
6.Missing "Content-Security-Policy" header
答: 在web.config 配置文件中添加如下响应头
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
<add name="X-XSS-Protection" value="1;mode=block"/>
<add name="X-Frame-Options" value="SAMEORIGIN"/>
<add name="Content-Security-Policy" value="default-src 'self'"/>
</customHeaders>
</httpProtocol>
</system.webServer>
7.Missing "X-Content-Type-Options" header
答: 在web.config 配置文件中添加如下响应头,添加节点见 第6 个问题
<add name="X-Content-Type-Options" value="nosniff"/>
8.Missing "X-XSS-Protection" header
答: 在web.config 配置文件中添加如下响应头,添加节点见 第6 个问题
<add name="X-XSS-Protection" value="1;mode=block"/>
9.查询中接受的主体参数
答:未解决
10.启用了 Microsoft ASP.NET 调试
答:应用程序发布后,修改配置文件节点compilation 的属性 debug为 false。
<compilation debug="false" targetFramework="4.0"/>
11.缺少跨帧脚本编制防御
答:在web.config 配置文件中添加如下响应头,添加节点见 第6 个问题
<add name="Content-Security-Policy" value="default-src 'self'"/>
注意,添加之后,可能会出现不同浏览器,出现兼容性问题,会有不同的反应。比如,极速模式会出现页面内部css无效。
12.已解密的 __VIEWSTATE 参数
答:在web.config 配置文件中添加 pages 的属性viewStateEncryptionMode 为Always。
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" viewStateEncryptionMode="Always" />
13.检测到应用程序测试脚本
答: 在系统开发过程中,添加的测试页面,在程序发布前需要“从项目中排除”后再发布。
14.应用程序错误
答:出现应用程序错误页面。
如 :Server Error in '/' Application.
一是解决属于开发人员的应用程序错误问题,二是在配置文件添加默认出错页面
<customErrors mode="On" defaultRedirect="~/error.html" />
15.整数溢出
答:情况一:针对请求的url中的参数, 检查其数据类型及边界范围。
如 /ApplyShow.aspx?id=99999999999999999999
情况二:登录页面按钮参数,在请求正文里,未找到原因???
http://localhost:83/login.aspx 实体: ImgbtnDl.y (Parameter)
16.WebResource.axd
WebResources.axd?d=xyz。
WebResource.axd有一个特点,便是会对错误的密文(即d=xyz中的xyz)产生500错误,而对正确的密文产生404错误,这便形成了足够的提示
参考资料:
http://www.2cto.com/Article/201009/75162.html
http://pan.baidu.com/share/link?shareid=3851057069&uk=2164275402
http://www.cnblogs.com/JeffreyZhao/archive/2010/09/25/things-about-padding-oracle-vulnerability-in-asp-net.html
http://www.cnblogs.com/shanyou/archive/2010/09/25/1834889.html Padding Oracle Attack 检测工具
解决方法: http://www.cnblogs.com/shanyou/archive/2010/09/24/1833757.html 中文版
http://weblogs.asp.net/scottgu/important-asp-net-security-vulnerability 英文版
步骤一.添加配置节点
.net 3.5 及以前版本,添加配置节点
<customErrors mode="On" defaultRedirect="~/error.html" />
.net 3.5 SP1 或 .net 4.0添加如下配置节点,注意加粗部分必须
<customErrors mode="On" defaultRedirect="~/error.aspx" redirectMode="ResponseRewrite" />
步骤二.添加默认错误页面
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<%@ Page Language="C#" AutoEventWireup="true" %><%@ Import Namespace="System.Security.Cryptography" %><%@ Import Namespace="System.Threading" %><script runat="server"> void Page_Load() { byte[] delay = new byte[1]; RandomNumberGenerator prng = new RNGCryptoServiceProvider(); prng.GetBytes(delay); Thread.Sleep((int)delay[0]); IDisposable disposable = prng as IDisposable; if (disposable != null) { disposable.Dispose(); } }</script><html><head runat="server"> <title>Error</title></head><body> <div> An error occurred while processing your request. </div></body></html> |
(转)IBM AppScan 安全漏洞问题修复(.net)的更多相关文章
- IBM AppScan 安全漏洞问题修复(.net)
按问题类型分类的问题 使用 SQL 注入的认证旁路2 已解密的登录请求3 登录错误消息凭证枚举1 会话标识未更新2 跨站点请求伪造1 Missing "Content-Security-Po ...
- appscan 安全漏洞修复办法
appscan 安全漏洞修复办法http://www.automationqa.com/forum.php?mod=viewthread&tid=3661&fromuid=21
- IBM appscan 9.0破解版分享
简介:IBM AppScan该产品是一个领先的 Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界.Rational AppScan 可自动化 Web 应用的安全漏洞评 ...
- 【阿里聚安全·安全周刊】 全美警局已普遍拥有破解 iPhone 的能力 | 女黑客破解任天堂Switch,称硬件漏洞无法修复
本周的七个关键词: 破解 iPhone丨 女黑客破解任天堂丨假的身份证 丨 扫黄打非丨华盛顿特区发现手机间谍设备 丨 Telegram被俄罗斯监管机构告上法庭丨价值5万美金的Firefox浏览器漏洞 ...
- THINKPHP网站漏洞怎么修复解决
THINKPHP漏洞修复,官方于近日,对现有的thinkphp5.0到5.1所有版本进行了升级,以及补丁更新,这次更新主要是进行了一些漏洞修复,最严重的就是之前存在的SQL注入漏洞,以及远程代码执行查 ...
- phpcms2008网站漏洞如何修复 远程代码写入缓存漏洞利用
SINE安全公司在对phpcms2008网站代码进行安全检测与审计的时候发现该phpcms存在远程代码写入缓存文件的一个SQL注入漏洞,该phpcms漏洞危害较大,可以导致网站被黑,以及服务器遭受黑客 ...
- MetInfo最新网站漏洞如何修复以及网站安全防护
metinfo漏洞于2018年10月20号被爆出存在sql注入漏洞,可以直接拿到网站管理员的权限,网站漏洞影响范围较广,包括目前最新的metinfo版本都会受到该漏洞的攻击,该metinfo漏洞产生的 ...
- ecshop 漏洞如何修复 补丁升级与安全修复详情
目前ecshop漏洞大面积爆发,包括最新版的ecshop 3.0,ecshop 4.0,ecshop2.7.3全系列版本都存在着高危网站漏洞,导致网站被黑,被篡改,被挂马,许多商城系统深受其漏洞的攻击 ...
- Appscan安全漏洞扫描使用(转)
这里主要分享如何使用AppScan对一大项目的部分功能进行安全扫描. ----------------------------------------------------------------- ...
随机推荐
- mysql update受影响的行数为0或查询结果为空时
当执行update语句时,如果受影响的行数是0,返回的也是true. $conn = new mysqli(); $sql = "update ..."; $query = $co ...
- IntelliJ IDEA 2017版 spring-boot2.0.2 自动配置Condition
描述: 编译器修改参数 -Dfile.encoding=GBK -Dstr.encoding=GBK Condition位置: 某一个类或注解存在的时候,装配,否则不装配 相关代码: ...
- DDR4 PSOD输出的优点--DBI的优点
DDR4是JEDEC组织关于DRAM器件的下一代标准.DDR4主要是针对需要高带宽低功耗的场合.这些需求导致了DDR4芯片引入了一些新的特点,这些新的特点,导致在系统设计中,引入一些新的设计需求. D ...
- SDIBT 2345 (3.2.1 Factorials 阶乘)
Description N的阶乘写作N!表示小于等于N的所有正整数的乘积.阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了.你的任务是找到阶乘最后面的非零位.举个例 ...
- leetcode - [1]Reverse Words in a String
Question: Reverse Words in a String Given an input string, reverse the string word by word. For exam ...
- c 语言申明头文件和实现分开简单例子
很多时候,看到很多c函数的声明和实现是分开的.声明放在头文件,实现却放在另一个文件,最后函数被其他文件调用. 下面以简单例子说明. 一.声明部分 /* test.h */ #include <s ...
- BUG 图片元素img下 高度超出 出现多余空白
BUG 图片元素img下 高度超出 出现多余空白 1.将图片转换为块级对象 即,设置img为“display:block;”. 2.设置图片的垂直对齐方式 即设置图片的vertical-align ...
- (DP 雷格码)Gray code -- hdu -- 5375
http://acm.hdu.edu.cn/showproblem.php?pid=5375 Gray code Time Limit: 2000/1000 MS (Java/Others) M ...
- mysql_事务
事务是针对数据的,不是针对结构的 存储引擎innodb支持事务,myisam不支持事务需求:有一张银行账户表,有A用户给B账户转账,A账户减少,B账户增加,但是A操作之后断电. 解决方案:A减少钱,但 ...
- EBS Custom Password Rules
https://blogs.oracle.com/manojmadhusoodanan/entry/custom_password_rules Custom Password Rules By Man ...