DNS 域传送漏洞
0x00 DNS域传送
DNS服务器分为:主服务器、备份服务器和缓存服务器,在主备服务器之间则通过“DNS域传送”同步数据。
若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录,从而节省许多搜集资产的时间。
more...中间件安全配置
0x00 Apache
- 服务器安全配置
#查看服务器运行权限
$ ps aux|grep apache|grep -v grep
$ sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 1377 root 4u IPv6 12596 0t0 TCP *:http (LISTEN)
apache2 21121 www-data 4u IPv6 12596 0t0 TCP *:http (LISTEN)
apache2 21122 www-data 4u IPv6 12596 0t0 TCP *:http (LISTEN)
apache2 21123 www-data 4u IPv6 12596 0t0 TCP *:http (LISTEN)
apache2 21124 www-data 4u IPv6 12596 0t0 TCP *:http (LISTEN)
apache2 21125 www-data 4u IPv6 12596 0t0 TCP *:http (LISTEN)
apache2 24800 www-data 4u IPv6 12596 0t0 TCP *:http (LISTEN)
apache2 127488 www-data 4u IPv6 12596 0t0 TCP *:http (LISTEN)
第一行是Apache主进程,以root权限运行的,因为Apache的Web端口是80或443,而在Ubuntu(Linux)中开启小于1024的端口需要root权限,所以主进程必须以root权限运行。
第二行起为Apache子进程,其执行用户为www-data,www-data是Ubuntu中运行Web服务的默认用户,权限较低。
Windows中Apache安装完成后默认是administrator权限,所以需要降权,创建一个用户Apache,用户组为Guests,然后将Apache目录下的日志的可写权限赋给Guests账户。
#目录及文件权限
修改配置文件,vim /etc/apache2/apache2.conf解决目录遍历漏洞
#Options Indexes FollowSymLinks
Options FollowSymLinks
或者使用chmod进行权限限制也可以,比如使用chmod o-r flag.txt命令将www-data的读权限去掉
windows也可以通过配置文件或者权限的设置达到上面设置的效果
#错误重定向一
$ sudo vim /etc/apache2/apache2.conf
<Directory /var/www/>
Options Indexes FollowSymLinks
#AllowOverride None
AllowOverride All #设置如此
Require all granted
</Directory>
$ cat .htaccess
ErrorDocument 404 /404.html
#错误重定向二
$ sudo vim /etc/apache2/apache2.conf
LoadModule rewrite_module modules/mod_rewrite.so #去掉前面的注释符
$ sudo a2enmod rewrite #开启跳转
$ cat .htaccess
ErrorDocument 404 /404.html
RewriteEngine on
RewriteRule "ttt\.html$" aa.html
#隐藏apache版本号
$ sudo vim /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature Off
#隐藏php版本号
$ sudo vim /etc/php5/apache2/php.ini
expose_php = Off
#禁止执行脚本
$ vim /etc/apache2/apache2.conf
<Directory /var/www/html/upload/> #禁止执行php
php_flag engine off
</Directory>
- Apache日志格式
vim /etc/apache2/apache2.conf
more...Docker 之数据卷
0x00 为什么使用数据卷
Docker镜像是由多个文件系统(只读层)叠加而成的。
当一个容器启动时Docker会加载只读镜像层并在其上添加一个读写层。
读写层中的修改在镜像重新启动后会全部丢失。
在Docker中,只读层及在顶部的读写层的组合被称为Union File System(联合文件系统)。
如果想要保存数据,则可以使用数据卷来在容器外面保存数据,主要为如下两种方式:
* 使用docker run运行容器时指定数据卷
* 在Dockerfile中直接指定数据卷
0x01 通过docker run挂载Volume(使用-v参数)
- 不指定主机目录
#运行完后容器中的根目录下就会多个data文件夹,这个就是数据卷
$ docker run -itd --name v_test -v /data debian:jessie /bin/bash
root@d145e8c6f874:/# ls
bin data etc lib media opt root sbin sys usr
boot dev home lib64 mnt proc run srv tmp var
root@d145e8c6f874:/# exit
exit
#查看数据卷的对应位置,前者是宿主机的位置,后者是容器中的位置
$ docker inspect -f {{.Mounts}} v_test
[{volume 8f39f7de0f851e0bfbcfdd4561fbb20484f01f864ce00a159b09bdcdf743e068 /var/lib/docker/volumes/8f39f7de0f851e0bfbcfdd4561fbb20484f01f864ce00a159b09bdcdf743e068/_data /data local true }]
- 指定主机目录(只能通过-v参数实现,Dockerfile不行)
# 本机的/home/var/docker_data和容器的/data对应
$ docker run -itd -v /home/var/docker_data:/data debian:jessie /bin/bash
root@d853c4ca7632:/# exit
exit
$ docker inspect -f {{.Mounts}} d853c4ca7632
[{bind /home/var/docker_data /data true rprivate}]
$ docker inspect -f {{.Mounts}} d853c4ca7632
[{bind /home/var/docker_data /data true rprivate}]
# 本机创建文件,容器中就会同时出现
#宿主机创建文件
$ sudo touch /home/var/docker_data/a.txt
#容器可以查看到文件同样被创建
root@8e1ccd30fe33:/# ls data/
a.txt
0x02 通过Dockerfile声明Volume
FROM debian:jessie VOLUME /data #之后的任何命令都不能更改Volume的任何东西
0x03 数据共享
使用–volumes-from参数项即可访问另外一个容器的Volume。
因为数据容器不启动也可以被其它容器访问,所以一般不推荐启动数据容器。
Docker 之 Dockerfile
操作系统:macOS Sierra 10.12.6
Docker版本:Docker version 18.09.0, build 4d60db4
0x00 Dockerfile
Dockerfile里面其实是一条条的指令,Docker会把Dockerfile的指令翻译为linux命令,
每一条指令都会创建一个镜像,下一条指令将在这个镜像的基础上进行修改操作后再生成一个镜像。
让你可以对下载好的镜像进行一些操作(比如安装软件、向镜像复制文件等),从而构造定制化的镜像。
0x01 Dockerfile基本指令
FROM <image name>:指定新的镜像基于什么创建(可以尝试使用alpine:latest和debian:jessie)
MAINTAINER <author name>:设置该镜像的作者
COPY <source> <dest>:复制文件,dest要以 / 结尾
WORKDIR /path/to/workdir:相当于切换目录,对RUN、CMD、和ENTRYPOINT生效
RUN <command>:在shell执行命令
EXPOSE port1 port2:容器运行时监听的端口
CMD:容器默认的执行命令,Dockerfile只允许使用一次CMD命令(使用数组)
ENTRYPOINT:类似于CMD,Dockerfile只允许使用一次(使用数组)
ENV <key> <value>:设置环境变量
USER <uid>:镜像正在运行时设置一个uid,即设定启动容器的用户,默认为root
VOLUME ['/data']:授权访问从容器内到主机的目录
CMD与ENTRYPOINT的区别:
more...Docker 之镜像与容器
操作系统:Ubuntu14.04.1
Docker版本:Docker version 17.06.0-ce, build 02c1d87
0x00 镜像操作
- 下载镜像
#一般镜像、容器的id和name可以互换
$ docker search ubuntu #从公共registry搜索镜像
$ docker pull ubuntu #从公共registry下载镜像
$ docker pull ubuntu:14.04
- 查看当前系统镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 14.04 7e4b16ae8b23 11 days ago 188MB
ubuntu latest 1d9c17228a9e 11 days ago 86.7MB
- 查看镜像层组成
$ docker history ubuntu:14.04 # ubuntu:14.04可以用7e4b16ae8b23替代,用id和images_name:tag效果一样
- 删除镜像(删除镜像前要先删除上面的容器)
$ docker rmi ubuntu:latest # 也可docker rmi 1d9c17228a9e
0x01 容器操作
运行容器(exit后容器就停止了)
- --rm:告诉Docker一旦运行的容器停止就删除容器
- -ti:告诉Docker分配一个伪终端并进入交互模式(这将进入容器内)
- ubuntu:14.04 是容器立足的镜像
- /bin/bash:shell
$ docker run --rm -it ubuntu:14.04 /bin/bash root@172c8d8b0671:/# ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr root@172c8d8b0671:/# exit exit后台运行容器
- -d:告诉Docker容器在后台运行(不能与–rm参数一起用)
$ docker run -itd ubuntu:14.04 /bin/bash 6f9d8dea6aa0e984e725802e3e49685ea040a21defa9a9d5e8db644076bbb42b $ docker run -itd 7e4b16ae8b23 ping 8.8.8.8 3e4c995326c0757d7e83daa72034d472e4f988cb553e9a85acd0bec06a666d60 $ sudo docker run -itd ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" 39b5bab299be909e2b1cdc3629d7c7fe2b5375348dfff498be58b4b0a0108676查看当前运行的容器
Docker 初识
0x00 关于Docker
- Docker中的镜像类似VM的快照,容器类似虚拟机,使用镜像创建容器类似于使用快照创建虚拟机。
- Docker中运行应用的是容器,容器的创建和销毁在秒级就能完成。
- Docker使用了AUFS,可以以递进的方式创建"VM",一个"VM"叠在另一个"VM"上,就像使用git增量开发一样。
- 软件的运行环境(image)和软件本身(container)分离,和数据也分离。
学习Docker需要了解4个概念:镜像、容器、数据卷、链接
more...[转] HTTPS 加密原理简介
原文链接:http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
more...使用 Python 读写 xml 文件
0x00 解析XML的方法
SAX (simple API for XML)
python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。DOM(Document Object Model)
将XML数据在内存中解析成一个树,通过对树的操作来操作XML。ElementTree(元素树)
ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。
MRQ 的使用
0x00 MRQ
- MRQ是Python基于Redis、Mongo和gevent的分布式任务队列。
- MRQ一方面旨在像RQ一样简单,另一方面有接近Celery的性能。
- MRQ最初的功能设计是为了满足任务队列的各种任务需求(IO密集&CPU密集,很多小任务&几个大任务)。
0x01 设置mongo和redis
因为mrq依赖于redis和mongo,所以先安装设置下
more...Previous Page
5 of 18
Next Page
