命令执行与代码执行漏洞

命令执行与代码执行漏洞

命令执行漏洞原理

应用程序的某些功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数能被用户控制,就可能通过命令连接符将恶意代码拼接到正常的函数中,从而随意执行系统命令。

windows命令连接符

“&”命令前面的语句为假,则直接执行后面的;前面的语句为真,命令都执行。
“&&”前面的语句为假,则直接出错,后面的也不执行;前面为真,都执行。
“|”前面命令正确,直接执行后面的语句;前面的语句为假,则直接出错,后面的也不执行。
“||”前面出错,执行后面的;前面不出错,只执行前面的,不执行后面的命令。

linux命令连接符

“;”分号操作符使多个命令顺序执行,前面命令和后面命令都会执行。
“&”操作符使命令在后台运行,可以同时执行多条命令。
“&&”操作符,第一个命令执行成功,执行第二个命令。前面命令不错在,后面的命令不在执行。
“|”操作符,将第一个命令的输出作为第二个命令的输入,前面跟后面的都会执行,但是只显示后面的执行结果。
“||”操作符,前面命令执行成功后面的命令不会执行,前面的命令执行失败后面的命令会执行。

命令执行空格绕过

$IFS${IFS},在linux下的内部域分隔符,IFS存储的值可以使空格、tab、换行符或者其它自定义符号
TAB制表符:%09是Tab的url编码,可以通过%09来待敌空格、绕过空格的过滤
{}花括号
输入重定向<

命令执行关键字绕过

变量拼接
空变量
系统变量:${SHELLOPTS}
转义字符\

命令执行关键字绕过

通配符:查询时通过通配符模糊查询某些文件
Base64编码:利用系统函数base64编码,将关键字进行base64编码,绕过过滤。
expr awk :通过expr和awk命令从其他的文件中获取字符并进行命令构造。

shell反弹

shell反弹:反弹shell,就是攻击监听在某TCP/UDP段位为服务端,目标机主动发起请求道攻击机监听的端口,并将其命令行的输入输出转到攻击机。

命令执行漏洞的修复

一、PHP配置文件禁用敏感函数
通过php配置文件中的disable_functions禁用敏感函数
二、使用相关过滤函数处理相关参数

1、excapeshellarg函数

此函数把字符串转码为可以在shell命令里使用的参数,过滤命令中的参数

2、escapeshellcmd参数

此函数对字符串中可能会欺骗shell命令执行任意命令的字符进行转义,此函数保证用户输入的数据在传送到exec()或system函数,或者执行操作符之前进行转义。

代码执行漏洞

应用程序中提供了一些可以将字符串作为代码执行的函数,如果这些函数的参数控制不严格,可能会被利用造成任意代码执行。
RCE远程系统命令执行/远程代码执行。
命令执行是在操作系统上执行的命令,代码执行是应用解析后通过应用程序代码执行的命令。

eval函数

把字符串当做PHP代码执行。

assert函数

assert函数会检查指定的assertion并在结果为FALSE时采取适当的行动。如果assertion是字符串,它将会被assert()当做PHP代码来执行。

call_user_func函数

call_user_func—把第一参数作为回调函数调用。

call_user_func_array函数

此函数把第一个参数作为回调函数调用,把参数数组作为回调函数的参数传入。

create_function函数

此函数创建一个匿名函数
根据传递的参数创建匿名函数,并为其返回唯一名称。

array_map函数

此函数为数组的每个元素应用回调函数

敏感文件

Vim编辑器意外退出时会生成.swp的备份文件
robots.txt:搜索引擎中访问网站的时候要查看的第一个文件,该文件告诉搜索引擎蜘蛛程序哪些文件不能爬取。

FUZZ测试

漏洞挖掘有三种方法:白盒代码审计,灰盒逆向工程和黑盒测试。黑盒测试是FUZZ测试中效率最高的一种,能够快速验证大量潜在的安全威胁。它通过向软件输入非法的字段,观测被测试软件是否异常而实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值