其它漏洞
1. Http拆分攻击/CRLF注入
原理
HTTP头部如果存在用户可控的输入内容,程序没有进行过滤,就可以利用回车/换行(%0d/%0a)符来创建新的头部字段,实现攻击目标
危害
通过注入不同的字段可以达到不同的攻击效果,常与XSS、CSRF、会话固定等攻击手段结合使用。
Set-Cookie:注入该字段可以控制用户的cookie值,可以进行会话固定等攻击。
Location:注入该字段可控制页面跳转的位置,可以进行钓鱼攻击等
X-XSS-Protection:注入该字段可以绕过浏览器的XSS防护功能
2. 会话固定
会话固定攻击(session fixation attack)是利用应用系统在服务器的 会话ID固定不变机制,借助他人的会话ID 获取认证和授权,然后利用该会话ID劫持他人的会话以成功冒充他人,造成会话固定攻击。
由于会话ID是已知的,当用户登录后攻击者就可以使用相同的会话ID登录系统,直接获取登录后的权限。
SessionID 存放在服务器内存和客户机的Cookie里面。当用户发出请求时,服务器将用户Cookie里面记录的SessionID和服务器内存中的SessionID进行比对,从而找到这个用户对应的Session进行操作
文章推荐: Session工作原理.
攻击流程
-
黑客访问网站获取sessionID(SessionID 是服务器下发的,用于识别不同的客户);
-
利用
XSS漏洞
或CRLF漏洞
等方式构造攻击链接为用户预设 sessionID。例如构造为http://www.test.com/login.jsp?sessionid=1234567
-
用户点击攻击者构造的恶意链接
http://www.test.com/login.jsp?sessionid=1234567
,获得了黑客预设的sessionID
(服务器在没有刻意防护的情况下,只能通过SessionID区分客户,但此时攻击者与被攻击者的SessionID
是一样的) -
用户登录系统;输入用户名密码等其他敏感信息。
-
黑客通过预设的sessionID登录系统;便可以查看被攻击用户的信息
利用方式
- 像上述例子一样,在url中设置SessionID,这是最简单的,当然这么低级漏洞应该见不到
- 用隐藏的表单字节。攻击者可以构造一个很像登录方式的登录表单并设定SessionID,然后诱惑用户登录
- 通过跨站脚本用客户端脚本来设定Cookie,如攻击者可以构造一个链接如下:
http://www.buybook.com/viewprofile.jsp?p=30
修复
- 每次登录后都重置SessionID
- 使用http only,也就是禁止客户端访问cookie
3. 路径穿越漏洞
路径穿越漏洞:攻击者可以通过跳转字符 ../
或者 ..\
到达读取任意文件的目的。
路径穿越攻击通常发生在文件读取操作中,程序没有对跳转字符做过滤的情况下就导致网站源代码、网站配置文件、系统文件被读取,从而导致信息泄漏。
防御
- 过滤敏感字符
- 控制权限
- 路径加密
- 动态路径,实时改变路径名称
window下的常见敏感路径文件:
c:\boot.ini //查看系统版本
c:\windows\system32\inetsrv\metabase.xml //IIS配置文件
c:\windows\repair\sam //存储windows系统初次安装的密码
c:\Programe File\mysql\my.ini //mysql配置文件
c:\Programe File\mysql\data\mysql\use.MYD //mysql root密码文件
c:\windows\my.ini //mysql 配置文件
c:\windows\php.ini //php配置文件
linux下的常见敏感路径文件:
/etc/passwd //用户信息
/usr/local/app/apache2/conf/httpd.conf //apache2默认配置文件
/etc/httpd/conf/httpd.conf //apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟主机设置
/usr/local/app/php5/lib/php.ini //php配置文件
/etc/my.cnf //Mysql配置文件
4. 服务器远程部署漏洞
远程部署是Web服务器中间件的一种,可以直接将源码上传到服务器的功能。如果远程部署配置不当,攻击者就可以上传Webshell直接入侵服务器。
常见的中间件如Tomcat、Weblogic、Jboss、FTP都具有远程部署功能。