Reber's Blog

会一点点编程、会一点点渗透


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。
因为数据容器不启动也可以被其它容器访问,所以一般不推荐启动数据容器。

more...

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后容器就停止了)

    more...

Docker 初识

0x00 关于Docker

  • Docker中的镜像类似VM的快照,容器类似虚拟机,使用镜像创建容器类似于使用快照创建虚拟机。
  • Docker中运行应用的是容器,容器的创建和销毁在秒级就能完成。
  • Docker使用了AUFS,可以以递进的方式创建"VM",一个"VM"叠在另一个"VM"上,就像使用git增量开发一样。
  • 软件的运行环境(image)和软件本身(container)分离,和数据也分离。

学习Docker需要了解4个概念:镜像、容器、数据卷、链接

more...

使用 Python 读写 xml 文件

0x00 解析XML的方法

  1. SAX (simple API for XML)
    python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。

    more...

MRQ 的使用

0x00 MRQ

  • MRQ是Python基于Redis、Mongo和gevent的分布式任务队列。
  • MRQ一方面旨在像RQ一样简单,另一方面有接近Celery的性能。
  • MRQ最初的功能设计是为了满足任务队列的各种任务需求(IO密集&CPU密集,很多小任务&几个大任务)。

0x01 设置mongo和redis

因为mrq依赖于redis和mongo,所以先安装设置下

more...

AJAX 之跨域

0x00 简介

当使用AJAX请求其他域名下的数据时会出现拒绝访问的情况,这是出于安全考虑,AJAX只能访问本地的资源,而不能跨域访问。

more...

Previous Page 5 of 18 Next Page