【愚公系列】2023年06月 攻防世界-Web(wtf.sh-150)


前言

1.目录穿透漏洞

目录穿透漏洞是一种安全漏洞,允许攻击者通过在URL中操纵目录路径,访问到应用程序中不应该被公开访问的文件或目录。攻击者通常利用此漏洞来盗取敏感信息,如数据库凭证、用户密码等。

例如,一个应用程序可能包含以下URL:http://example.com/public/files/file.txt。如果攻击者能够通过操纵URL,使其变成http://example.com/public/…/private/files/database.txt,那么攻击者将能够访问应用程序中私有文件夹中的敏感文件。

为了防止此类漏洞的发生,应用程序需要对用户输入的路径进行验证和过滤。应用程序应该只允许用户访问已经过授权的文件或目录,并且应该使用白名单来限制允许访问的路径。同时,应用程序应该对所有的用户输入进行过滤和验证,以确保用户不能够通过输入恶意路径来操纵应用程序。目录穿透漏洞是一种安全漏洞,允许攻击者通过在URL中操纵目录路径,访问到应用程序中不应该被公开访问的文件或目录。攻击者通常利用此漏洞来盗取敏感信息,如数据库凭证、用户密码等。

例如,一个应用程序可能包含以下URL:http://example.com/public/files/file.txt。如果攻击者能够通过操纵URL,使其变成http://example.com/public/…/private/files/database.txt,那么攻击者将能够访问应用程序中私有文件夹中的敏感文件。

为了防止此类漏洞的发生,应用程序需要对用户输入的路径进行验证和过滤。应用程序应该只允许用户访问已经过授权的文件或目录,并且应该使用白名单来限制允许访问的路径。同时,应用程序应该对所有的用户输入进行过滤和验证,以确保用户不能够通过输入恶意路径来操纵应用程序。

2.Cookie劫持

Cookie劫持就是攻击者盗取用户的Cookie,然后利用这些Cookie模拟用户的身份访问Web应用程序。Cookie是Web应用程序中用于验证和跟踪用户的一种机制,它通常存储在用户的浏览器中。

当攻击者获得了用户的Cookie,就可以利用这些Cookie来访问Web应用程序,并获得与该用户相关的敏感信息,例如用户名、密码、银行账号等。攻击者可以通过各种方式窃取Cookie,例如网络嗅探、恶意软件、社会工程学等。

为了防止Cookie劫持,应用程序可以采取以下措施:

  1. 加密Cookie。为了增加Cookie的安全性,应用程序可以对Cookie进行加密。加密后的Cookie只有在服务器端才能被解密,从而减少了攻击者窃取Cookie的可能性。

  2. 在Cookie中加入时间戳。为了防止攻击者使用过期的Cookie来访问应用程序,应用程序可以在Cookie中加入时间戳,并在服务器端验证时间戳是否合法。

  3. 在Cookie中加入IP地址。为了防止攻击者通过欺骗DNS服务器来劫持Cookie,应用程序可以在Cookie中加入IP地址,并在服务器端验证IP地址是否合法。

  4. 采用HTTPS协议。HTTPS协议可以为Web应用程序提供数据加密和身份验证,从而防止Cookie被窃取。

Cookie劫持是一种常见的Web攻击方式,对Web应用程序的安全性造成了很大的威胁。采取上述措施,可以增加Cookie的安全性,从而减少Web应用程序受到Cookie劫持攻击的可能性。

3.WTF

"wtf"文件泄露漏洞是指Web服务器上的某些文件(如配置文件、日志文件或备份文件)被错误地配置为可以被公开访问,并可以通过URL直接访问而导致的安全漏洞。这些文件通常包含敏感的信息,如数据库凭据、API密钥、密码哈希等,将其暴露给潜在的攻击者可能会导致严重的安全问题。

这种漏洞通常是由于应用程序开发人员或管理员的疏忽所致,例如将敏感文件上传到错误的目录或在应用程序中使用不安全的文件路径。攻击者可以通过手动或自动化扫描工具来搜索并发现这些文件,然后使用其中的信息进行有目的的攻击。

为了防止"wtf"文件泄露漏洞,开发人员和管理员应该在部署Web应用程序之前,审查和检查所有可能公开访问的文件,并确保它们的权限设置正确。此外,还可以考虑将敏感文件存储在Web服务器之外,例如在受保护的数据库中,以减少受到攻击的风险。在实际应用中,也可以使用Web应用程序防火墙(WAF)或安全扫描工具来自动监测和防御"wtf"文件泄露漏洞。

一、wtf.sh-150

1.题目

在这里插入图片描述

2.答题

1、cookie利用

登录网页发现是论坛

在这里插入图片描述
随便点开一个链接,url发生变化,出现了一个post的get请求类型参数。

在这里插入图片描述
文件穿越。将post的参数改为: ../,该页面往下划,得到部分源码内容,源码内容如下:

在这里插入图片描述
继续路径穿越了

post.wtf?post=../users

在这里插入图片描述
得到admin的cookie

USERNAME=admin;TOKEN=uYpiNNf/X0/0xNfqmsuoKFEtRlQDwNbS2T6LdHDRWH5p3x4bL4sxN0RMg17KJhAmTMyr8Sem++fldP0scW7g3w==

随便注册一个账号,登录抓包并改包
在这里插入图片描述

可以看懂登录用户变成admin
在这里插入图片描述

之后点击上图中的Profile,继续抓包,用admin账号查看相关的内容,如果不抓包添加cookie,就查看不到前半段flag。

在这里插入图片描述

得到一半flag:xctf{cb49256d1ab48803

2、源码审计

看到有趣的代码:

function reply {
    
    
    local post_id=$1;
    local username=$2;
    local text=$3;
    local hashed=$(hash_username "${username}");

    curr_id=$(for d in posts/${
     
     post_id}/*; do basename $d; done | sort -n | tail -n 1);
    next_reply_id=$(awk '{print $1+1}' <<< "${curr_id}");
    next_file=(posts/${post_id}/${next_reply_id});
    echo "${username}" > "${next_file}";
    echo "RE: $(nth_line 2 < "posts/${post_id}/1")" >> "${next_file}";
    echo "${text}" >> "${next_file}";

    # add post this is in reply to to posts cache
    echo "${post_id}/${next_reply_id}" >> "users_lookup/${hashed}/posts";
}

这是评论功能的后台代码,这部分也是存在路径穿越的。

这行代码把用户名写在了评论文件的内容中:

echo "${username}" > "${next_file}";

通过上面的分析:如果用户名是一段可执行代码,而且写入的文件是 wtf 格式的,那么这个文件就能够执行我们想要的代码。 (而且wtf.sh只运行文件扩展名为.wtf的脚本和前缀为’$'的行)

先普通地评论一下,知晓评论发送的数据包的结构,在普通评论的基础上,进行路径穿越,上传后门sh.wtf,wtf后面要加%09,表示制表符,否在会被当做目录去解析

在这里插入图片描述

3、恶意注册

如果我注册的用户名就是一段可执行的代码,而且写入的文件也是wtf格式的,那么这个文件就能执行我们想要的代码,我们进行评论。

之后再次注册账号,本册使用的注册名必须要是:${find,/,-iname,get_flag2},使用这个名字的目的是为了找打get_flag2的文件路径
在这里插入图片描述

注册完成后访问路径

http://61.147.171.105:62665/sh.wtf

在这里插入图片描述
继续注册用户:$/usr/bin/get_flag2,并上传sh.wtf文件
在这里插入图片描述
访问

http://61.147.171.105:62665/sh.wtf

在这里插入图片描述
得到后半段flag:149e5ec49d3c29ca}

拼接成完整flag:xctf{cb49256d1ab48803149e5ec49d3c29ca}

猜你喜欢

转载自blog.csdn.net/aa2528877987/article/details/131284341