WEB安全第一篇--对服务器的致命一击:代码与命令注入

零、前言

  最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件、底层安全、漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的payload技巧以便于备忘。不是大神、博客内容非常基础,如果真的有人看而且是大牛们,请不要喷我,欢迎指正我的错误(水平有限)。

一、基本原理:

1、代码注入和命令注入的本质:

  用户输入没有经过过滤而且与程序员开发的代码拼接后构成完成的可执行的代码段被服务器执行(命令也是代码的一部分,不过是拼接在命令执行类函数或方法的参数里面而已)。

2、命令注入举个例子:Python重度用户(迷汉子)

 1 @app.route("/osinject")
 2 def osinject():
 3     command = request.args.get("cmd")
 4     response = os.popen(command).read()
 5     return jsonify({"result":response})
 6
 7 #这是一个flask的一个函数例子:
 8 """
 9 command 就是输入
10 可以构造http://127.0.0.1:5443/osinject?cmd=ping%20-c%205%20192.168.10.135|whoami
11 就可以执行whoami了
12 """

3、代码注入例子:

1 //www.local.com
2 /*
3     /codeinject/code.php
4     http://www.local.com/codeinject/code.php?code=phpinfo();
5 */
6 <?php
7     @eval("$_GET["code"]")
8 ?>

4、php、java、python中常见的可以进行命令注入或者代码注入的函数:

  (1)php的:@我自己,我自己就写过一遍关于这类函数的小日志,可以访问看一下:http://www.cnblogs.com/KevinGeorge/p/8127054.html

  (2)python的:

    -*-command:system\popen\subprocess.call\spawn

    -*-code: map\filter\reduce\...   

1 ‘‘‘
2 python 函数名可以直接作为普通函数的参数的,理论上,如果定义了这样的函数都危险
3 ‘‘‘
4 def myreduce(funcname,param):
5     return funcname(param)

  (3)java的:

    -*-command:java.lang.Runtime.getRuntime().exec(command)

    _*_code:不太懂java,这方面的接触实在不多,囧。

二、漏洞挖掘:

  1、在请求中出现的位置:

    (1)POST和GET参数中

    (2)URL的filepath或者filename中(类似thinkphp的伪静态,或者python的url_for构造的一类)

  2、特殊的OS命令注入经常会出现在的业务位置:

    1、系统web管理界面的系统信息配置点:hostname、ipaddress、netmask、gateway、dnsserver、email等。

    2、功能类网站工具:ping、tracert、nslookup等

    3、文件查找或者操作功能:find、locate等

    4、系统信息查看类功能:cpuinfo、meminfo等

    5、关闭重启类操作、shutdown、ifconfig up、reboot、poweroff等

三、常用payload模式:

  1、| ,& ,&&,||等操作    

   (1)& 表示先执行CMD1 再执行CMD2,这里不考虑CMD1是否成功。使用CMD1 & CMD2

   (2)&& 表示先执行CMD1,成功后再执行CMD,否则不执行CMD2。使用CMD1 && CMD2

   (3)|| 先执行CMD1,CMD1执行成功就不再执行CMD2,CMD1执行失败则执行CMD2。使用CMD1 || CMD2

  2、payload(& / ‘ “ 空格等特殊符号需要时编码)

   (1) cmd = 127.0.0.1 | whoami

   (2) cmd = 127.0.0.1 & whoami

   (3) cmd = 127.0.0.1 && whoami

   (4) cmd =  `whoami`

   (5) cmd = ‘/"|whoami(这里意思是用‘/"引号闭合前面   /->表示或)

  3、常用的命令

   (1) 有回显的:whoami    id(验证类)

   (2)  没有回显的:nslookup wget 等看请求、dnslog httplog等 (验证类)

   (3)弹shell必须的,参考我自己的(http://www.cnblogs.com/KevinGeorge/p/8120226.html

  4、代码注入:

  (1)php的:检测phpinfo();攻击代码任意。

  (2)python的:import time;time.sleep(20),攻击代码任意。

  (3)java的:我是弱鸡想不到啊。

四、防御:

  1、禁止相关函数

  2、过滤输入

  3、制定可输入内容

  

    

    

原文地址:https://www.cnblogs.com/KevinGeorge/p/8232430.html

时间: 2024-10-02 19:34:13

WEB安全第一篇--对服务器的致命一击:代码与命令注入的相关文章

实现手机扫描二维码页面登录,类似web微信-第一篇,业务分析

转自:http://www.cnblogs.com/fengyun99/p/3541249.html 关于XMPP组件的文章,先休息两天,好歹已经完整的写了一份. 这两天,先实现一套关于web微信扫描二维码页面登录的试验,因为这种模式在我们的很多业务场景里大有前途. 首先介绍一下web微信登录的过程 手机必须运行微信,并且合法登录 打开web微信的页面,展示一个二维码 用手机微信的扫描功能扫描该二维码 页面立即显示手机已扫描 手机显示是否确认登录,点击确认 页面登录 这个过程将传统的web登录转

阿里云一 第一篇:云服务器ECS

阿里云(www.aliyun.com)创立于2009年,是全球领先的云计算及人工智能科技公司,为200多个国家和地区的企业.开发者和政府机构提供服务.截至2017年3月,阿里云付费云计算用户达87.4万.阿里云致力于以在线公共服务的方式,提供安全.可靠的计算和数据处理能力,让计算和人工智能成为普惠科技. 但是对于很多刚刚接触阿里云的用户来说,经常会被这庞大的产品系统.众多的服务弄得眼花缭乱,感觉无法下手,不知道该怎么选择适合自己的产品服务.针对这个问题,从今天起,我会带着大家一起,分门别类的对阿

web 前端入坑第一篇:web前端到底是什么?有前途吗

web前端到底是什么? 某货: "前几年前端开发人员鱼目混杂,技术参差不齐,相对学习起来不规范,导致> 前端开发人员聚集,所以现在前端工种和工资还是没得到普遍重视,但近2年来,> > HTML5.JS 的流行,让前端异常火爆,以后还会更有前途吗?请问您怎么看?" 我 "我只能告诉你:前端不灭""除非你不要脸!""前些年因为国内都不要脸,然而现在都明白了用户体验至上,现在都要脸:""不但要脸 还要胸大

《LDAP服务器的配置》RHEL6——第一篇 运维工程师必考

ldap这种原始的服务器搭建起来比较复杂,同时它也是CE必考的(客户端的搭建).过段时间再写客户端的搭建.加密.共享.第一章先搭建服务器端.. 1.安装openldap-servers软件包 2.查看ldap模板文件的存放位置: 3.拷贝ldap模板文件到配置文件目录并修改文件名为slapd.conf. 4.删除/etc/openldap目录下原有的文件,保留下这几个文件,注意:以前学时是要删除schema文件,直留下三个,但是我测试时如果删除schema服务将失败. 5.修改slapd.con

【Web探索之旅】第三部分第一课:服务器

内容简介 1.第三部分第一课:服务器 2.第三部分第二课预告:IP地址和域名 第三部分第一课:服务器 大家好,欢迎来到[Web探索之旅]的第三部分.这一部分有不少原理,还是很重要的. 这一部分我们会着眼于一个Web site(网站)是如何工作的,我们会更深入地了解Web背后的网络.这里的网络是network,泛指Web中的各台机器之间互相"交流". 还记得我们之前将Web形象地比喻成什么吗? 对了,就是一个很大的蜘蛛网.对于有蜘蛛恐惧的朋友我只能献上我诚挚的歉意,看到我真挚的表情了吗.

2015元旦第一篇博文:Red5流媒体服务器搭建

今天是2015年的第一天,白天陪老婆孩子去BHG(华联)转了转,中午在九毛九吃了顿午饭,就这样过了元旦,虽然有点累,但是挺开心,北京今天的天气也比较给力,风和日丽,没有雾霾!现在是晚上十点,因为白天出去玩,老婆孩子有点累,现在已经熟睡,我不想就这样就结束2015的第一天,作为一个新的开始,我决定写2015年的第一篇博文.闲话少说,进入主题.流媒体这个概念在第一家公司就了解了,当时做一个Eleaning在线教育平台的时候,用Red5流媒体服务器技术,支持过视频模块的播放.下面就谈谈我对流媒体的认识

Web前端开发第一篇

本人在学习和开发web前端中得到的一些javascript.jquery.html等等效果可能对大家有用和对大家有帮助的东西一起分享给大家. 这些效果也许很多人都已经有了,不过我还是积累下,分享给一起学习Web前端的人员和刚刚开始学习Web前端的人员, 希望能帮助大家. 我的语言组织能力比较差,还有我的技术水平也是比较差的,有些东西可能理解的不对,大神们可以指点出来我加以改正,希望大家见谅! Web前端开发第一篇

第一篇:Python高性能Web框架Tornado原理剖析

本系列博文计划: 1.剖析基于Python的Web框架Tornado的源码 2.为Python开发一个完善的MVC框架 首先将带着大家一起来剖析基于python编写的Web框架 tornado ,本着易读易懂的目标来写这一系列,寄希让小白也能zeng明白其中的道理,与其说剖析还不如说是白话,因为本系列都会用通俗的语言去描述Web框架中的各个知识点. 一个脚本引发的一场"血案".... 运行脚本并在浏览器上访问http://127.0.0.1:8080 #!/usr/bin/env py

使用WSE实现Web Service安全----我的第一篇

原文:使用WSE实现Web Service安全----我的第一篇 WSE(Web Services Enhancements)是微软为了使开发者通过.NET创建出更强大,更好用的Web Services而推出功能增强插件.现在最新的版本是WSE2.0(SP2).本文描述了如何使用WSE2.0中的安全功能增强部分来实现安全的Web Services.WSE的安全功能增强实现的是WS-Security标准,此标准是WebService自己的安全协议,由IBM, BEA, Microsoft等联合制定