简单了解WEB漏洞-RCE代码及命令执行漏洞


? 在Web应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串将造成代码执行漏洞。同样调用系统命令处理,将造成命令执行漏洞

举例

代码执行

<?php
$code = $_GET['x'];
eval($code);
?>

访问该文件向x传递phpinfo();参数

http://127.0.0.1/test.php?x=phpinfo();

image-20211126222829636

成功执行代码

命令执行

<?php
$code = $_GET['x'];
system($code);
?>

访问该文件向x传递ipconfig参数

image-20211126224015044

原理

漏洞形成条件:

可控变量:变量可以传递参数

漏洞函数:eval就是代码执行 system就是系统命令执行 echo就是输出可以使用xss

web源码:网站应用决定网站漏洞方向

检测

白盒:代码审计

黑盒:漏扫工具 公开漏洞 手工看参数值及功能点判定

靶场案例

靶场一

https://www.mozhe.cn/bug/detail/RWpnQUllbmNaQUVndTFDWGxaL0JjUT09bW96aGUmozhe

image-20211126231816550

先输入一个ip

image-20211126231856775

可以看到执行了ping命令

所以判断他应该是执行了类似system类命令

接下来判断是linux还是window

随便抓个包试下

image-20211126232053119

可以看出这是一个linux

使用linux的拼接命令执行

127.0.0.1|ls

image-20211126232429302

查看页面源代码

image-20211126232548797

发现是前端js限制

直接使用burp抓包修改

image-20211126233028300

image-20211126233113957

接下来查看key.php文件

image-20211126233522306

image-20211126233556297

靶场二

https://www.mozhe.cn/bug/detail/T0YyUmZRa1paTkJNQ0JmVWt3Sm13dz09bW96aGUmozhe

image-20211126234958345

把代码跑一跑看下

<?php
echo gzinflate(base64_decode('40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA=='));
?> 

image-20211126235442637

也就源代码为

eval(echo`$_REQUEST[a]`;;?>) #echo+反引号可以执行linux的shell命令 执行的命令就是反引号中的内容

a接收数据

http://219.153.49.228:42010/f.php?a=ls

image-20211126235801170

读取key

http://219.153.49.228:42010/f.php?a=tac key_46331475425346.php

image-20211126235918369

靶场三

image-20211127002500503

webmin登录界面

webmin存在远程命令执行漏洞

webmin 远程命令执行漏洞(CVE-2019-15107)

随便输入账号密码抓包

题目说明key在根目录下

old用来接收命令直接看下根目录

image-20211127005322757

找到key查看文件

image-20211127004151805

完事