web常见安全漏洞

来源:互联网 发布:淘宝logo尺寸大小 编辑:程序博客网 时间:2024/05/19 20:37
1.xss(cross_site scripting)
跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个网站。
1)、非持久型
通过GET、POST、referer 等参数未加处理直接输出到页面执行。该类型是最为常见的,攻击者主要利用此类型通过email、热度非常大的论坛、或者有针对性的某一用户发送一个隐藏性的链接,让受害者进行点击触发。
eg:http://xxxxxxx"><script>alert(1)</script><s="
2)、持久型
由攻击者输入恶意数据保存在数据库,再由服务器脚本程序从数据库中读取数据,然后显示在公共显示的固定页面上,那么所有浏览该页面的用户都会被攻击。该类型攻击性非常大,危险也非常大。
eg:一般会对一些关键字的非常标签进行过滤,比如 script\javscript\onerror\expression 等关键字,但是由于 IE 的原因,用于style. 属性里面的 expression 关键字,如果改变成 expr/**/ession 写法,也可以执行的特性
3)、DOM型
由Javascript. 脚本动态创建、输出到页面造成的。该类型不容易发现,具有隐藏性的特点,必需手工去发现。
4)、浏览器漏洞
在某个浏览器版本造成的漏洞,由浏览于用户浏览历史、页面交互等方式,未加处理,所造成的。该漏洞攻击危害非常大,一旦存在,基本可以实现跨域操作,严重者可以以本地权限执行 javascript. 脚本,访问读取本地文件。
eg:http://www.google.cn/search?q='"><script>alert(/xss/)</script><'

2.csrf(cross_site request forgery)
跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法。此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者。这样,就很难确定哪些请求是属于跨站请求伪造攻击。
eg:
以下请求:
GET http://bank.com/transfer.do?acct=jim&amount=10000 HTTP/1.1
可以被伪造成:
http://bank.com/transfer.do?acct=mak&amount=100000
通过诱使用户点击伪造的链接,来达到攻击的目的。
防范办法:
0、使用POST方式而不是使用GET来提交表单,在处理表单提交时使用$_POST而不是$_REQUEST。
1、使用Form表单替换A标签方式提交(A 的href参数中加入 token,就会造成风险,因为后置页面可以通过referer获取来源页面的完整url)。

2、在特别重要的位置使用 https 进行数据传输。

3.sqlInjection
SQL injection攻击包括插入或“注入”的SQL查询,通过输入数据从客户端的应用程序。一个成功的SQL注入攻击可以从数据库中阅读敏感数据,修改数据库数据(插入/更新/删除) ,执行管理处业务的数据库(如关闭数据库管理系统) ,收回的内容,一个给定的文件现有的数据库管理系统文件系统,在某些情况下,发出命令的作业系统。
漏洞形成原因:
1). 在应用程序中使用字符串联结方式组合SQL指令。
2). 在应用程序链接数据库时使用权限过大的帐户(例如很多开发人员都喜欢用sa(内置的最高权限的系统管理员帐户)连接Microsoft SQL Server数据库)。
3). 在数据库中开放了不必要但权力过大的功能(例如在Microsoft SQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等)
4). 太过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。
攻击方式:
数值:or 1=1   or 1=2 
字符串:'or' 1'='1   'or '1'='2 
可能造成的伤害:
1). 数据表中的数据外泄,例如个人机密数据,帐户数据,密码等。
2). 数据结构被黑客探知,得以做进一步攻击(例如SELECT * FROM sys.tables)。
3). 数据库服务器被攻击,系统管理员帐户被窜改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx')。
4). 取得系统较高权限后,有可能得以在网页加入恶意链接以及XSS。
5). 经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如xp_cmdshell "net stop iisadmin"可停止服务器的IIS服务)。
6). 破坏硬盘数据,瘫痪全系统(例如xp_cmdshell "FORMAT C:")。

防范方法
1). 在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。
2). 在组合SQL字符串时,先针对所传入的参数作字符取代(将单引号字符取代为连续2个单引号字符)。

4.Ajax Security
待完善...
5.Javascript. Security
待完善...
6.Access Control
待完善...
7.Flash Security
待完善...
8.Rss Security
9.Brute force attack
待完善...
10.Local File Iclusion
待完善...
11.Remote File Iclusion
待完善...
12.File Upload
常见的攻击方式:
1)代码未做任何限制时,直接上传恶意文件
2)代码检查了文件的类型时,绕过文件类型限制
eg:修改 post 数据包中 Content-Type: text/plain字段为 Content-Type: image/gif
3)代码检查了文件的内容时,绕过内容检查
eg:制造一个完全有效的图像文件,其中包含一些恶意代码
4)代码检查了文件的扩展名时,绕过文件扩展名
防范方法:
1、使用 PHP 的 getimagesize() 函数验证图片类型。
2、验证上传文件的扩展名,以白名单、黑名单方式,最好使用白名单。
3、当用户上传文件到服务器保存时,一定使用随机文件名(例如MD5(时间+原名))进行存储,并保证所存储的扩展名合法。保证文件名的冲突性,也保证了存储的安全,防止上传文件非法扩展进行解析。
4、上查文件不可保存在web服务器,放到指定的服务器。

13.URL redirection
URL跳转漏洞(URL redirection attacks),是指远程攻击者通过网站漏洞,将用户的浏览器中正常的网址重定向到恶意的网址,攻击者多数利用此漏洞进行网络钓鱼攻击。
eg:http://www.xxx.com/login.htm?para1=&para2=&directUrl=http://www.baidu.com
该url利用重定向跳转到了百度首页。
一般的安全url识别只会校验域名部分,即示例中的www.xxx.com
防范方法:
1、对需要跳转的URL进行验证
2、利用白名单过滤url

14.Phishing
“钓鱼”就是制作类似页面达到欺骗的目的。
待完善...
15.Code Execution
待完善...
16.Command_Injection
待完善...
17.Application error message
信息泄漏是指因程序BUG,或者由于攻击者对程序的参数等输入接口进行填充非法的数据,使程序崩溃,输出一些调试信息以及源代码等数据。当攻击者得到此数据后,可以了解到很多隐私的敏感的数据,进而结合其他漏洞进行下一步的攻击。 信息泄漏分为多种泄漏方式,一般常见的为:
1、物理路径泄漏
当攻击者通过接口输入非法的数据时,应用程序出现错误,并返回网站物理路径。攻击者利用此信息,可通过本地文件包含漏洞直接拿到 webshell。
2、程序使用版本泄漏
通过传送大量的数据时,应用程序报错,并返回应用程序版本。攻击者利用此信息,查找官方漏洞文档,并利用现有expolit code实施攻击。
3、源代码泄漏
利用程序扩展名解析缺陷,访问隐藏的文件,并获取源代码。或者通过程序BUG,直接返回源代码,获取重要数据,进而实施下一步攻击。
4、其他信息
如返回所使用的第三方软件信息,比如程序使用了zend framework、数据库使用的 mysql 等。
18.HTTP Response Splitting
待完善...
19.Callback-xss
待完善...