我正在使用OWASP ZAP对我的localhost进行一些渗透测试,并且它会不断报告此消息:
Anti-MIME-Sniffing标头X-Content-Type-Options未设置为'nosniff'
此检查特定于Internet Explorer 8和Google Chrome.如果Content-Type标头未知,请确保每个页面设置Content-Type标头和X-CONTENT-TYPE-OPTIONS
我不知道这意味着什么,我在网上找不到任何东西.我试过添加:
<meta content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff" http-equiv="Content-Type" />
Run Code Online (Sandbox Code Playgroud)
但我仍然得到警报.
设置参数的正确方法是什么?
我需要删除过多的标题(主要是为了通过渗透测试).我花时间查看涉及运行UrlScan的解决方案,但这些都很麻烦,因为每次启动Azure实例时都需要安装UrlScan.
必须有一个很好的Azure解决方案,不涉及从startup.cmd部署安装程序.
我知道响应标头添加在不同的地方:
是否有任何方法配置(通过web.config等?)IIS7删除/隐藏/禁用HTTP响应标头,以避免asafaweb.com上的"过多标题"警告,而无需创建IIS模块或部署需要的安装程序每次Azure实例启动时运行?
我打算检查我的网站,以防止所有常见的安全漏洞,如跨站点脚本,sql注入等.有人可以告诉我,是否有任何自动化工具,我可以运行我的.net网络应用程序,并发现存在所有安全漏洞.我试过CAt.net,但它无法支持大型应用程序.我看到了abt owsap但是它也不是自动化的.我正在寻找可以告诉我文件名和方法名等的东西.
我不知道渗透测试和其他形式的安全测试之间的区别.那个地区有经验的人可以告诉我不同之处吗?我真的很感激.另外,是否有任何模拟DoS的测试?我不知道如何防御它.
多年来,我有一些我开发的网站提交给客户进行渗透测试.大多数情况下,结果返回时突出显示的问题与ASP .Net的默认行为有关,例如可能的跨站点脚本攻击等.
是否有任何关于ASP .Net应用程序中默认存在哪些漏洞的好文章,其次是否有任何好的检查表可以帮助提前准备一个站点?
ASP和ASP.NET Web应用程序在表单中使用名为VIEWSTATE的值.据我所知,这用于在对Web服务器的请求之间在客户端上保持某种状态.
我从未使用ASP或ASP.NET,需要一些帮助来解决两个问题(以及一些子问题):
1)是否可以以编程方式欺骗/构建表单的VIEWSTATE?澄清:一个程序可以查看一个表单,并从该构造中查看base64编码的VIEWSTATE值的内容吗?
1 a)或者它总是可以省略吗?
1 b)特定表单的旧VIEWSTATE是否可以在以后调用同一表单时重用,或者只是运气好吗?
2)我从http://msdn.microsoft.com/en-us/library/ms972976.aspx#viewstate_topic12收集,可以打开安全性,以便VIEWSTATE免于欺骗.程序是否有可能以这种方式检测到VIEWSTATE是否受到保护?
2 a)EVENTVALIDATION值的出现与安全的VIEWSTATE之间是否存在一对一的映射?
关于1)和2),如果是,我可以暗示我将如何做到这一点吗?2)我想我可以对该值进行64位解码并搜索一个总是在未加密的VIEWSTATE中找到的字符串."第一:"?别的什么?
我已经制作了一个小工具来检测和利用所谓的CSRF漏洞.我使用它来快速证明我发送给受影响的网站所有者的此类漏洞的概念.我常常在VIEWSTATE遇到这些表格,而这些表格我不知道它们是否安全.
编辑1:稍微澄清问题1.
编辑2:以斜体添加文本.
我有一个网站,我让用户编辑网站的前端.用户只能访问编辑器,而不能访问其托管的服务器.
用户要求我也允许javascript.这意味着用户可以在前端创建自己的脚本.
我担心的是用户可能会使用它来做恶意的事情.我担心,如果用户知道的东西足够好,他可能会搞砸网站.
我的问题: - 假设用户拥有SQL DB的连接字符串,他是否可以设法在该服务器上执行查询?通常这应该是NO,因为javascript是客户端的权利吗?
我找到了以下代码段:
var connection = new ActiveXObject("ADODB.Connection") ;
var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB";
connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");
rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
document.write(rs.fields(1));
rs.movenext;
}
rs.close;
connection.close;
Run Code Online (Sandbox Code Playgroud)
假设我的连接字符串看起来像
Data Source=(local);Initial Catalog=TestDB;Application Name=TestDB;Integrated Security=True
Run Code Online (Sandbox Code Playgroud)
我试图让脚本运行,但幸运的是它显示了一个空白页面.但这是因为我可能做错了什么?或者它确实是因为javascript是客户端的,并且不会允许做那种东西?
其他问题: - 我采取了哪些其他风险的例子,允许他在前端使用javascript?如果javascript确实是一个完全客户端的语言,那就意味着他不能冒任何其他风险吗?
我最近在我的asp.net网站上进行了一些xss/javascript-injection/penetration-testing,发现现代网络浏览器(即最新的FF和Chrome)正在逃避输入地址栏的网址.
所以:
http://example.com/search/?q= "> <script> alert('hi'); </ script>
被发送到我的服务器:
http://example.com/search/?q=%22%3e%3cscript%3ealert(%27hi%27)%3b%3c%2fscript%3e
是否存在执行此操作的所有(主要)浏览器和不执行此操作的浏览器的列表?移动浏览器会这样做吗?
在哪里可以获得Flutter App安全文档或最佳实践?我几乎准备发布我的应用程序。我使用在线(免费版本)https://www.ostorlab.co/report/并检查我的应用程序的安全性。
我上面有一个主要问题,下面有一些其他问题。
这些是我面临的安全问题。————————————————————————————————
高调试模式已启用说明
该应用程序以调试模式进行编译,攻击者可以通过该调试器连接调试器以访问敏感数据或执行恶意操作。攻击者可以在不访问源代码的情况下调试该应用程序,并利用它来代表用户执行恶意操作,修改应用程序行为或访问敏感数据,例如凭据和会话Cookie。
建议
通过在application标签中将android:debuggeable属性设置为false来禁用调试模式。
参考•DRD10-J不要释放可调试的应用程序(CERT安全编码)
例如:AndroidManifest:
<activity android:name="com.apptreesoftware.mapview.MapActivity" android:theme="@7F0C0102"> </activity>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value=“****************************”></meta-data>
<meta-data android:name="com.google.android.gms.version" android:value="@7F080004"></meta-data>
Run Code Online (Sandbox Code Playgroud)
——————————————————————————————
可能启用了备份模式说明
默认情况下,Android执行应用程序的完整备份,包括/ data分区上存储的私有文件。备份管理器服务会将这些数据上传到用户的Google云端硬盘帐户。
建议
如果应用程序包含您不想还原的敏感数据,则可以通过在应用程序标签中将android:allowBackup属性设置为false来禁用备份模式。
参考资料•M开发者预览版上的随机缪斯:丑陋(第二部分)•DRD22。不要缓存敏感信息
——————————————————————————————
可能声明了未经许可的服务说明
服务是一个应用程序组件,可以在无需用户交互的情况下处理在后台执行的操作。服务还可以用于向其他应用程序公开功能。这对应于对Context.bindService()的调用,以建立与服务的连接并与其进行交互。不受保护的服务可以被其他应用程序调用,并可能访问敏感信息或执行特权操作
建议
服务可以向外部组件公开几种方法。可以使用方法checkPermission为每个方法定义任意权限。通过在清单的标记中强制执行权限,也可以分离服务并限制访问。
<permission android:name="co.ostorlab.custom_permission" android:label="custom_permission" android:protectionLevel="dangerous"></permission>
<service android:name="co.ostorlab.custom_service" android:permission="co.ostorlab.custom_permission">
<intent-filter>
<action android:name="co.ostorlab.ACTION" />
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
在执行该调用的实现之前,该服务可以通过调用方法checkCallingPermission来对单个IPC调用强制执行权限。
参考资料•CWE-280:权限或特权不足的处理不当•通过不受信任的输入进行的安全决策(OWASP Mobile前10名)•服务(Android开发者文档)
AndroidManifest.xml中的技术细节误报服务定义:
<service android:name="com.mobile.niyazibank.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT">
</action>
</intent-filter>
</service>
<service android:name="com.mobile.niyazibank.MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT">
</action>
</intent-filter>
</service>
<service android:name="io.flutter.plugins.firebasemessaging.FlutterFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT">
</action>
</intent-filter> …Run Code Online (Sandbox Code Playgroud) 我们进行了渗透测试,其中一项发现是:
“缺少内容安全策略 HTTP 响应标头”
我们做了一些研究,发现了如何在 web 服务器的 httpd.conf 文件中设置它。问题是我们不知道确切地包含什么。我们的网络应用程序对外部站点(如 googleapis 或任何 CDN 或网络上的外部图像)没有任何依赖。所以,我们真的不确定该放什么。
下面是一个示例,但这依赖于一些谷歌链接。
<Location "/CompanyXYZ/">
Header always append X-Frame-Options deny
Header always set Content-Security-Policy "default-src 'self' data: blob: *.google.com *.gstatic.com; style-src 'self' 'unsafe-inline' *.google.com *.googleapis.com; script-src 'self' 'unsafe-inline' *.googleapis.com *.google.com;"
</Location>
Run Code Online (Sandbox Code Playgroud)
如果我们没有这些依赖怎么办?我们应该如何设置我们的?