命令执行漏洞及Bulldog靶机实战

一、命令执行产生的原因

命令执行漏洞是指应用有时需要调用一些系统命令函数,如:system()、exec()、shell_exec()、eval()、passthru(),代码未对用户可控参数做过滤,当用户控制这些函数参数时,键可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

二、分类
1、代码层过滤不严

商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数调用
system("/bin/program --arg$arg");

2、系统的漏洞造成命令注入

bash破壳漏洞(CVE-2014-6271)

3、调用第三方组件存在代码执行漏洞

WordPress中用来处理图片的Image Magick组件;
JAVA中命令执行漏洞(Struts/ElasticsearchGroovy等);
ThinkPHP命令执行;

三、利用条件

1、应用调用执行命令的函数;
2、将用户输入作为系统命令的参数拼接到命令中;
3、没有对用户输入过滤或者过滤不严;

四、 常见连接符及常见命令
1、常见连接符

(1)A;B 先执行A,再执行B;calc
(2)A&B 简单制约,A B之间无约束关系;
(3)A|B 显示B的执行结果;
(4)A&&B A执行成功,然后才会执行B;
(5)A||B A执行失败,才会执行B;

2、常见命令

(1)windows中:
ipconfig;arp -a;calc(计算器);regedit(注册表);netstat -ano;
(2)linux中:
cat /etc/passwd;(存放所有用户,密码)
id;(当前用户的id值)
groups;(用户所属组)
cat /etc/group;
whoami;
pwd;
uname -a;(查系统版本)
netstat -pantu;(查端口)
netstat -nr;(查网关及路由)

五、php中的危险函数

system:成功则返回命令输出的最后一行,失败则返回false;
exec:命令执行结果的最后一行内容;
shell_exec:命令执行的输出,如果执行过程中发生错误或者进程不产生输出,则返回null;
passthru:执行外部程序并且显示原始输出;
eval:将输入的字符串参数当做php程序代码执行;

六、危害

1、继承web服务的权限去执行系统命令的读写文件;
2、反弹shell;
3、控制整个网络或者服务器;
4、进一步内网渗透;

七、防御

1、尽量少使用执行命令的函数或者禁用;
2、参数值尽量使用引号包括,并在拼接前调用addslashes函数进行转义;
3、在使用动态函数之前,确保使用的函数是指定的函数之一;
4、在进行执行命令函数方法之前,对参数进行过滤,对敏感字符进行转义
5、对可控点是程序参数都情况下,使用escapeshellcmd函数进行过滤,对可控点是程序参数值的情况下,使用escapshellarg函数进行过滤;

八、BullDog实战

hack:kali(192.168.137.4)
靶机:BullDog(192.168.137.133)
1、主机发现
在这里插入图片描述
或者使用netdiscover -i eth0 -r 192.168.137.0/24
2、端口扫描
在这里插入图片描述
3、使用端口对应服务扫描
在这里插入图片描述
4、whatweb http://IP(判断网站指纹信息)
在这里插入图片描述
5、dirb http://IP(扫描网站目录,默认使用普通字典) (dpkg -L dirb 查找字典)
在这里插入图片描述
6、登录http://192.168.137.133/dev,查看源码得知
在这里插入图片描述
7、使用ND5解密
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
8、使用破解的用户名密码尝试登录(登录成功,权限不够)
在这里插入图片描述
9、在http://192.168.137.133/dev,发现web_shell
在这里插入图片描述
10、点击进入,查看是否存在命令执行漏洞,用拼接符尝试(存在命令执行漏洞,可以写反弹shell)
在这里插入图片描述
在这里插入图片描述
11、使用python脚本反弹shell,放到kali的网页目录下/var/www/html下命名为shell.py
在这里插入图片描述
12、将shell写入靶机的服务器上
在这里插入图片描述
在这里插入图片描述
13、执行shell,在kali上监听
在这里插入图片描述
在这里插入图片描述
14、提权
在这里插入图片描述
判断出这可能是密码:
SUPERultimatePASSWORDyouCANTget
15、输入python -c ‘import pty; pty.spawn("/bin/bash")’,使用root权限执行,前面加sudo

经验之谈:
1.Msfconsole中的ssh爆破模块使用
2. 源码中找到用户账号密码,登陆后的命令执行,可下载并汇总行反弹shell的脚本
3. 查找时注意home目录下,查看某些文件用cat时是乱码,可以考虑用strings去查看,那可能是程序字符串。
4. 一般反弹的shell不如终端,所以一般拿到后都是先利用python弹一个伪终端出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值