讨论PythonWeb开发中可能会遇到的安全问题之SQL注入

前言

好久没写文章了,最近一直都是在看文章。
近期写了好几个PythonWeb项目,在实现需求的过程中,一直在思考PythonWeb开发过程中会遇到哪些常见的Web安全问题呢?这些问题又在什么情况下会被利用者GetShell呢?下面就分类来讨论这些问题:(这也是重新启用博客的第一篇文章,顺便投给90Sec也不知道能不能过QAQ。)

常见漏洞分析

SQLI

SQL注入所产生的条件是用户输入可构造sql语句并带入数据库执行。在Web应用中,容易产生SQL注入的输入一般是GET或POST请求参数。在PythonWeb开发中,以Flask框架为例,Flask里获取GET或POST请求数据的方式分别是request.args.get('id', 0, type=int)request.form.get('id', 0, type=int)两种方式,另外Flask还支持在URL路由里带入变量:@app.route('/news/<int:id>'),当程序员定义了这样的URL,则id这个变量在该视图里就是可以调用的。两种方法获取都是可以限定参数的类型,前者如果程序指定type为int,当用户传入无法转换成整形的字符串时,就返回None(若指定了默认值则为默认值,例子的默认值为0),后者出现这种情况则直接返回404.

PythonWeb开发中,在处理数据库的过程中经常使用orm库进行数据库处理,orm库是防SQL注入的好手。Flask和Tornado经常使用Sqlalchemy,而Django有自己自带的orm引擎。举一个用Sqlalchemy建模型类,并使用模型类查询用户数据的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from datetime import datetime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime

engine = create_engine('mysql+pymysql://user:[email protected]/test')
DBSession = sessionmaker(bind=engine)
session = DBSession()
Base = declarative_base()

class user_t(Base):
__tablename__ = 'user_t'
user_id = Column(Integer, primary_key=True)
username = Column(String)
userpassword = Column(String)
createtime = Column(DateTime, default=datetime.utcnow)

Html5文件夹上传欺骗之Python实现版-w-

起因

以前曾经在微博上看到过Html5的新特性可以用于新的Web攻击,其中提到文件夹上传可以用于欺骗。觉得有点意思,后来又看到蘑菇在创宇的官博上面写了一篇博客:

https://blog.knownsec.com/2015/11/html5-upload-folder-with-webkitdirectory-phishing/

感觉的该说的都被他说了,嘛,不过这个东西,可以拿出来逗大家玩玩消遣一下时间0w0,但是这个是PHP的,而且明显任意上传可以直接GetShell,不想在服务器上装PHP。于是想着用Python实现一番。

Python实现文件夹上传

主要问题在于先用的Python Web框架支不支持文件上传呢?写小玩意儿的时候我喜欢用flask,简单可定制强。于是调查了一番Flask对文件夹上传的支持,发现:其实对于后端来说,Html5的文件夹上传和以前的多文件上传并没有什么不一样,那就简单了-w-

Wordpress插件:WP Mobile Edition Plugin 任意文件下载漏洞分析

影响:

  • WP Mobile Edition版本低于2.2.7有该漏洞。
  • 首次启用WP Mobile Edition 插件之后,即使停用或删除该插件,漏洞也会一直存在。
  • 即使升级插件,若已经启用过漏洞存在的版本,漏洞也同样存在。
  • css.php用于压缩css文件,并不只存在于该插件之中,而是 https://github.com/mrclay/ 的开源代码,使用该文件的网站也存在该漏洞。

WooMirror:一个公开漏洞备份及搜索的Wooyun镜像站

闲聊

前一段时间,导师说希望我写一个备份Wooyun公开漏洞信息的爬虫程序,为了避免某些突发情况;写完之后还没爬下来我们去比ISCC,河南的ISCC上网特别麻烦,所以队友君就说“要是有一个离线的漏洞库而且能检索就好了”,于是这事就又到了我头上。考虑到以下三点: