CSRF客户端请求伪造
CSRF(Cross Site Request Forgery) 是一种挟制终端用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
漏洞原因:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
利用前提:攻击者可以得到url的所有参数项并了解其含义,并且这些参数的值是用户可以
控制的,这时就可以根据URL构造一个payload。CSRF通常是发生在有意义的操作上,比如修改资料,加关注等其他一些敏感操作。
发现漏洞
- 确定功能点并抓包
寻找涉及增删改的敏感业务操作的功能点,正常进行业务操作并抓包 - 根据数据包中的信息确定token信息
若数据包中已经包含token信息,则CSRF一般不存在 - 重放数据包确认refer验证信息
若程序已验证refer信息,则CSRF一般不存在 - 生成POC提交验证
通过burpsuite生成POC并提交验证
防御
验证refer,增加token
代码注入
代码注入来自于缺乏严格的过滤或者用户控制数据的逃逸。
由于攻击者可以控制部分或者所有内容传递给这些未进行严格过滤的函数,从而导致提交的内容会被作为程序代码执行。
<?php
@eval($_GET["test"]);
?>
良精&南方数据CMS配置项插马
良精&南方数据是早年间一款非常流行的CMS内容管理系统,很多小微网站都使用了这种CMS程序。
这种CMS程序的配置文件路径是:/inc/config.asp
CMS程序的网站名称、网址、邮箱、等网站基本信息是在后台填写后存储在/inc/config.asp配置文件中的,并且在写入文件时没有进行任何验证和过滤,导致可通过在配置文件中插入一句话木马的方式获得webshell。
目录遍历
“目录遍历”其实并不能算是漏洞,因为它是IIS等web server的一个功能项。
比如,在IIS中将该选项勾上后,用户就可以通过目录的形式访问网站中的文件,通常这项
功能被用于共享文件。但由于管理员的疏忽或经验不足,在网站中开启了这项功能,这就
是一个不折不扣的大漏洞了。
防御
修复IIS得错误配置,为每个目录增加默认首页文件
越权访问
越权访问(Broken Access Control, 简称BAC)。顾名思义,这类漏洞是指应用在检查授权(Authorization)时存在纰漏,使得攻击者可以利用一些方式绕过权限检查,访问或者操作到原本无权访问的代码或内容。
越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。
分类:
平行越权:权限类型不变,ID改变
垂直越权:ID不变,权限类型改变
交叉越权:既改变ID,也改变权限
越权漏洞的危害与影响主要是与对应业务的重要性相关,比如说某一页面服务器端响应(不局限于页面返回的信息,有时信息在响应包中,页面不一定能看见)中返回登录名、登录密码、手机号、身份证等敏感信息,如果存在平行越权,通过对用户ID的遍历,就可以查看所有用户的敏感信息,这也是一种变相的脱库,而且很难被防火墙发现,因为这和正常的访问请求没有什么区别,也不会包含特殊字符,具有十足的隐秘性。
防御
- 鉴权
在执行业务操作之前先鉴权。 - 完善鉴权机制
避免鉴权机制可被用户操控,比如可通过篡改数据包自定义用户身份、制定权限矩阵等。 - 加密ID
避免使用明文的1-1000这样的ID号,很容易被猜测。
信息泄漏
包括:程序路径泄漏、版本泄漏、源代码泄漏、数据库信息泄漏等,表现形式不
同,产生的风险和危害也不相同。
应用程序未容错
应用程序未屏蔽执行过程中的错误信息,直接抛出了异常,造成敏感信息泄漏。
攻击者可从程序的错误信息中获得程序开发框架名称及版本、SQL语句、SQL数据库表名、绝对路径等敏感信息。建议加入try catch语句
备份文件未删除
安装文件未删除
程序引用的自身的安装文件或第三方组件的安装文件被遗留在生产环境中,攻击者可利用
这些安装文件进行重新安装、漏洞利用等方面的攻击。
svn文件信息泄漏
漏洞利用工具:
Seay-Svn源代码泄露漏洞利用工具(.net环境)
dvcs-ripper(perl环境):https://github.com/kost/dvcs-ripper
git文件信息泄漏
漏洞利用工具:
GitHack(https://github.com/lijiejie/GitHack)需要python 2.7的环境
dvcs-ripper(perl环境):https://github.com/kost/dvcs-ripper
文件包含
文件包含漏洞是指客户端(一般为浏览器)用户通过输入控制动态包含在服务器的文件,从而导
致恶意代码的执行及敏感信息泄露。主要包括本地文件包含LFI和远程文件包含RFI两种形式。
本地文件包含LFI(Local File Inclusion)
- 包含本地文件及系统文件
- 包含上传文件
- 包含Apache日志
- 包含SSH登录日志
远程文件包含RFI(Remote File Inclusion)
- 包含上传的文件
防御
1、限定可包含文件的路径,若条件允许,限定可包含文件的路径+文件名;
2、PHP环境下关闭allow_url_include函数。
任意文件读取
网站提供大量文件下载功能时,一般实现过程是根据参数filename和filepath的值,获得该文件在网站上的绝对路径,读取文件,然后直接发送给客户端下载。恶意攻击者会利用程序对文件的读取权限进行跨越目录访问,访问一些受控制的文件。
http://www.test.com/down.php?file=down_test.php
http://www.test.com/down.php?file=…/…/…/…/…/…/…/etc/passwd
http://www.test.com/down.php?file=…/…/…/…/boot.ini
防御
建议假定所有输入都是可疑的,尝试对所有输入可能包含的文件地址,包括服务器本地文
件以及远程文件,进行严格的检查,参数中不允许出现…/之类的目录跳转符。