Web应用程序攻击

作者: minlover | 来源:发表于2017-07-07 11:41 被阅读90次

    web攻击技术:SQL技术(脚本注入攻击)、XSS攻击(跨站脚本攻击)、上传漏洞(文件上传)

    网站结构:登录页面 -- html;后台登录程序 -- Asp/php;数据库 -- musql/mssql/oracle


    一、HTTP协议

    HTTP协议的入口:URL 统一资源定位符 --> 网络地址

    Windows主机不区分URL大小写,Unix/Linux区分。

    请求头 --> GET  响应头 --> POST

    HTTP数据包  -->  信息收集、重放攻击、参数猜解、数据过滤


    二、SQL注入

    1、SQL注入:值攻击者通过向网站提交精心构造的SQL查询语句,导致网站将本不应返回的数据信息输出泄露。

    原因:网站未对提交的数据进行严格的过滤。

    隐蔽性:SQL注入是通过HTTP协议传递的,从正常的www端口访问,防火墙一般不会报警。

    2、获取网站管理员权限:① 利用SQL注入漏洞绕过身份验证机制;② 利用SQL注入楼栋号破解管理员身份。

    ① 利用SQL注入漏洞绕过身份验证机制

    eg:万能密码 —— username=’ or 1=1;--

    ② 利用SQL注入楼漏洞破解管理员身份:

    ❀ 注入点发现

    ❀ 数据库类型判断

    ❀ 猜解表名、字段名

    ❀ 猜解用户名、密码

    ❀ 获得管理员页面,上传Asp木马

    3、(1)注入点的发现:整形参数注入点、字符型参数注入点。

    其他经常遇到的SQL注入方法:Cookie注入(在数据包中的注入位置)、POST注入(在数据包中的注入位置)、延时注入(利用数据库延时特性)、搜索注入(在页面中的注入位置)、Base64注入(注入要经过base64编码)

    (2)数据库类型判断:Mysql、MSSQL、Oracle

    ① 利用数据库指纹:不同的字符串连接符、系统表/系统变量/函数名

    eg:oracle支持“||”连接符,所以可以尝试“sel|| ect”,若不支持,就不是这种数据库

    ② 根据错误提示

    通过构造语法错误的查询条件,使数据库查询出错并给出数据库类型的提示。eg:and username()>0

    (3)获得表明和字段名

    ① 猜解法:利用大量已知表名和字段名尝试

    ② 利用SQL数据库自身的系统表数据(元数据)

    每个数据库都有自身的系统表和系统变量:SCHEMATA表(所有数据库信息)、TABLES表(数据库中表的信息)、COLUMNS表(表中的列信息)

    可以查数据库、数据表、字段 --> 应对:可通过配置文件使用户对Schema数据库访问的结果不显示。

    (4)猜列属性:有多少列、哪一列是字符串类型

    (5)破解记录内容:确定记录条数、确定记录字段长度、ASCII字符猜解十二分法。

    比如-a-,当出现错误是时,说明上一个数字n就是当前查询了多少列。

    -c-中,至多8次可以猜出一个字符。  意思是第一个字符的ASCII码与后面的n进行对比

    改为 substring(字段,2,1)是取第二个字符,直到用户名取完。

    4、延时注入

    基于时间差异的注入技术,通过构造查询语句造成数据库的执行时间差异来判断查询语句猜测结果的正确性。

    猜对了就 sleep。

    5、避开网站对输入的过滤

    6、SQL注入攻击分防范

    ① 检查数据类型;(解决数字型注入)② 关键字过滤;(解决字符型注入)③ 口令加密,可采用MD5+KEY的方式


    三、文件上传漏洞

    1、上传漏洞可以使普通用户向服务器上传脚本文件,并通过此脚本文件获得执行服务器端命令的能力。

    web脚本语言;Flash策略文件;病毒木马文件;钓鱼图片或者包含了脚本的图片。

    检测文件类型的方法:① 客户端检测;② 服务器端检测

    2、客户端检测

    web攻击中,用户是不可信的,将所有数据的过滤和检测放在客户端是不安全的。

    首先判断是否是客户端检测,然后想办法绕过。

    判断时客户端检测:打开http反向代理工具,点击一个不符合的类型文件上传,若再点击上传之前就弹出警告,说明是客户端javascript检测。

    绕过方法:用firebug之类的插件把它禁掉;通过Burp之类的代理工具绕过提交。

    3、服务端检测

    (1)通过后缀名检测:黑名单;白名单

    绕过黑名单的方法:

    (2)通过文件格式检测

    有些后台或浏览器通过读取文件头的方式判断上传文件的类型。

    绕过方法:保留文件头,在数据部分插入脚本。

    但仍需将上传的jpg改为脚本执行。

    (3)服务器端MIME验证

    通过上传文件的数据包中的MIME头中标识的文件类型进行验证。

    这会忽略上传文件是否真的与文件类型保持一致。

    (4)服务器目录验证

    上传文件时,程序通常允许用户将文件放到指定的目录中。有些程序在目录不存在时,会先创建目录,再写入文件。

    4、上传漏洞的防御

    ① 文件目录设置为不可执行

    ② 判断文件类型:前端+后端、MIME type+后缀+白名单

    ③ 随机数改写文件名和文件路径

    ④ 单独设置文件服务器的域名


    四、跨站脚本(CSS/XSS)

    跨站脚本是指在客户端浏览的Web页面中插入具有恶意目的的脚本代码,使用户在浏览网页的过程中由浏览器执行脚本实现相应的恶意功能。

    1、XSS分类:反射型XSS、存储型XSS、DOM型XSS

    反射型XSS、存储型XSS  -->  脚本是由服务器返回,浏览器执行。

    DOM型XSS  -->  脚本由客户端产生,浏览器执行。

    (1)反射型XSS

    (2)存储型XSS

    (3)DOM型XSS

    2、跨站脚本攻击的危害

    ① 获取其他用户Cookie中的敏感数据;② 屏蔽网页特定信息,伪造页面信息; ③ 拒绝服务攻击; ④ 与其他漏洞结合,修改系统设置,查看系统文件,执行系统口令

    3、发现网站XSS

    ① 手工方法:针对所有程序的所有输入,检测其是否会参与到浏览器的输出。

    4、XSS的防范

    ① 服务器端:黑表过滤、白表过滤

    ② 用户端:提高访问链接的警惕性;禁止浏览器运行JavaScript和ActiveX代码。

    相关文章

      网友评论

        本文标题:Web应用程序攻击

        本文链接:https://www.haomeiwen.com/subject/faclhxtx.html