php-fpm.conf & php.ini 安全优化实践

0x01 关于 php

1
2
3
4
5
其历史相对已经比较久远了,这里也就不废话了,属弱类型中一种解释型语言
除了web开发以及写些简单的exp,暂未发现其它牛逼用途,暂以中小型web站点开发为主
另外,低版本的php自身漏洞就比较多,建议,从现在开始就在新项目中使用php 5.6.x 往后的版本
好在官方维护的一直比较勤奋,主次版本都迭代的比较快,最新版已经到7.2.0
哼哼……是,'最好的语言'... :)

0x02 此次演示环境

1
2
CentOS6.8 x86_64 最小化,带基础库安装 eth0: 192.168.3.42 eth1: 192.168.4.14 eth2: 192.168.5.14
php-5.6.32.tar.gz 官方提供的源码包

0x03 下载 php-5.6.32.tar.gz,并安装好php所需的各种依赖库

1
2
3
4
5
6
7
8
9
# yum install epel-release -y
# yum install -y zlib-devel libxml2-devel freetype-devel
# yum install -y libjpeg-devel libpng-devel gd-devel curl-devel libxslt-devel
# yum install openssl openssl-devel libmcrypt libmcrypt-devel mcrypt mhash mhash-devel -y
# tar xf libiconv-1.15.tar.gz
# cd libiconv-1.15
# ./configure --prefix=/usr/local/libiconv-1.15 && make && make install
# ln -s /usr/local/libiconv-1.15/ /usr/local/libiconv
# ll /usr/local/libiconv/

Read More

给自己一个更安全的 mysql

0x01 在进行真正的 mysql 部署之前,我们不妨先来大致了解下,在实际入侵过程中,仅仅利用mysql,我们到底能干些什么,了解了这些最基本的点之后,我们再进行针对性防御:

1
2
3
4
普通用户权限下的 '增删改查',即 常规sql注入,俗称'脱裤'
普通用户file权限下的 '文件读写',可尝试读取各类敏感配置,如各类账号或者尝试直接往站点目录中写webshell
root用户权限下的 '读写文件' , '系统命令执行'... 可读写是因为root本身就有file权限,另外,如果直接以root身份运行mysql服务,亦可实现'提权'的效果
针对 '数据库连接''DDOS',单用户大批量数据库连接可能会导致mysql无法再提供服务

0x02 演示环境:

1
2
CentOS6.8 x86_64 最小化,只带基础库安装 eth0: 192.168.3.42 eth1: 192.168.4.14 eth2: 192.168.5.14
mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz 此次mysql就不再手工编译了,时间比较长,直接用mysql官方提供好的二进制包来做演示

0x03 下载,解压 mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz

1
2
3
4
# tar xf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz
# mv mysql-5.6.27-linux-glibc2.5-x86_64 /usr/local/
# ln -s /usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/ /usr/local/mysql
# ls -l /usr/local/mysql/

0x04 开始初始化mysql

务必以一个伪用户身份来运行mysql服务,防止别人利用mysql进行提权,后面还会再细说,另外,web服务和数据库服务严禁用同一个系统用户,这样做主要是为了防止入侵者直接通过sql语句往网站目录中写webshell

1
# useradd -s /sbin/nologin -M mysql

Read More

从 0 开始构建一个 "固若金汤" 的nginx

0x01 关于 nginx

1
2
3
4
5
配置灵活,简单,运行时占用系统资源较少,功能模块繁多,可扩展性极强,基于 C ,整个工具大小1M左右
支持高并发,仅限于全部为纯静态文件的情况下,因为最终还要取决于后端 [ 脚本和数据库 ] 的实际处理速度
默认 nginx 会自动选择最佳的网络I/O模型,和nginx不同的是,apache默认就会使用select模型,效率较低
上面这些话的意思也就是说,你的C要牛逼到一定的程度,不然,想做深度二次开发基本是扯淡,真心挺佩服毛子的
更多说明,请直接参考官方文档...

0x02 正确理解 linux 对文件,目录,[ 读 写 执行 ] 权限的真正含义,这东西不能靠干说,因为根本理解不扎实,大家可以自己在系统中创建两个普通用户,不停地切换目录文件权限,以深入仔细体会,后面网站目录权限设置要用到这些基础,如果连这些都搞不清,想灵活应用就难了,耐心点,等透彻理解之后,你就会发现真TM简单

目录 读[r / 4] 写[w / 2] 执行[x / 1]

1
2
3
读: ls , dir ... 表示可查看该目录下的文件列表
写: rm , mv, cp, mkdir ,touch ... 表示可在该目录下创建,删除,修改文件或者子目录,不过在这之前,一定要先有执行权限,不然进都进不去,又怎么写呢
执行: cd ... 表示可进入该目录

文件 读[r / 4] 写[w / 2] 执行[x / 1]

1
2
3
读: cat , tac , more , less ,head , tail ... 表示可查看该文件中的内容
写: vi , nano , echo ... 只表示可对文件中的 内容 进行增删改,删除文件还要取决于当前用户对该文件所在目录是否有写权限
执行: 可执行文件,shell脚本... 在linux中任何文件都可以有执行权限,但只有可执行文件和脚本才能真正执行

Read More

lsyncd + rsync 实时同步海量小文件



0x01 关于lsyncd

1
2
3
inotify的优秀替代品,基于lua,不过,它也依然使用 linux 2.6.13以后内核的inotify触发机制
配置简单灵活,在同步海量小文件时,性能表现优异,废话不多讲,咱们直奔主题
...

环境准备:

1
2
RsyncServer ip: 192.168.5.4
RsyncClient26 ip: 192.168.5.7

0x02 在需要进行实时同步的 rsync 客户端机器上[ 这里是RsyncClient26 ]编译安装lsyncd,如下

1
2
3
4
5
6
7
8
# yum install lua lua-devel asciidoc cmake -y
# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/lsyncd/lsyncd-2.1.5.tar.gz
# tar xf lsyncd-2.1.5.tar.gz
# cd lsyncd-2.1.5/
# ./configure --prefix=/usr/local/lsyncd-2.1.5 && make && make install
# echo $? && cd
# ln -s /usr/local/lsyncd-2.1.5/ /usr/local/lsyncd/
# cd /usr/local/lsyncd/bin/ && ./lsyncd

Read More

纯图形化实时流量分析 [ etherape ]

0x01 关于 etherape:

1
2
3
4
5
一款纯图形化的网络流量分析工具,既是图形界面,所以系统中务必要有各类图形库支持才行
很多数时候,我们可能只是想简单的看看数据流向,了解总体数据流向或某单个网络节点状况,并不想关心数据包里面到底是什么东西
此时,etherape 则无疑是个比较不错的选择,另外,它对各个协议的支持相对还算比较到位
当然,缺点也是有的,毕竟是实时分析,如果流量瞬间激增,很容易把程序卡崩掉[不知道是有点儿溢出,还是io跟不上],也正常,毕竟只是个小工具肯定没商业工具那么完善
...

0x02 环境:

1
2
3
4
kali ip: 192.168.3.30
centos6.9_x64 ip: 192.168.3.16 [eth1] 192.168.3.19 [eth0]
win2008R2cn ip: 192.178.3.23
win7cn ip: 192.168.3.2

Read More

老旧但不乏经典的高级组包工具 [ hping3 ]

前言:
    一款经典的高级组包工具,虽然老旧,但不乏经典,你完全可以利用它任意组装专属的 tcp,udp,icmp 数据报文格式,废话不多说,咱们直奔主题…

0x01 实验环境:

1
2
kali ip:192.168.3.38
CentOS6.9 [MidLAMP] ip:192.168.3.16[eth1] 192.168.3.19[eth0] 在此机器上编译安装hping3

0x02 编译安装 hping3:

1
2
3
4
5
6
7
8
# yum install libpcap-devel tcl-devel -y
# wget http://www.hping.org/hping3-20051105.tar.gz
# tar xf hping3-20051105.tar.gz
# cd hping3-20051105
# vi bytesex.h
|| defined(__x86_64__) \ 为了防止后续编译出错,需要在第一个判断下添加此句,如下图所示,添加64位系统平台
# ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
# ./configure && make && make strip && make install

Read More

文件隐藏 之 NTFS 交换数据流

0x01 关于 NTFS 交换数据流

1
2
3
NTFS 交换数据流属于NTFS文件系统独有的特性,在NTFS文件系统下,每个文件都可以存在多个数据流
也就是说,除了主文件流之外,还可以有很多非主文件流寄宿在主文件流中,内部使用资源派生来维持与文件相关的信息
虽然,我们无法看到数据流文件,但是它却真实存在于系统中,更多更细致的解释,大家可自行参考百科或ntfs官方文档...

0x02 如何实际创建一个数据交换流文件,其实方法很简单,如下

1
命令格式 "宿主文件:准备与宿主文件相关联的数据流文件"

0x03 演示环境

1
2
win2008r2cn ip: 192.168.3.23
kali ip: 192.168.3.38 等会儿弹meterpreter

Read More

DNS隧道 之 端口转发 [ 一 ]

0x01 本次实验环境大致如下:

1
2
3
4
centos7_x64[heightlamp] 公网ip: 192.168.3.42 假设为入侵者自己的公网机器,即dns2tcp客户端
centos7_x64[heightlnmp] 公网ip: 192.168.3.41 内网ip: 192.168.32.123 假设为目标DMZ中的机器,有防火墙,即dns2tcp服务端
win2012r2en 公网ip: 192.168.3.123 假设为入侵者自己公网的dns服务器
centos6.8_x64[Midlnmp] 内网ip: 192.168.32.212 假设为目标内网中的一台linux机器

0x02 我们要实现的最终目的

1
2
3
4
正常情况下,我们本想通过heightlnmp机器来访问目标内网中Midlnmp的ssh,但苦于heightlamp和heightlamp之间的防火墙
且防火墙只允许真正的dns流量通过,所以,我们现在想通过在自己公网的dns服务器上做转发来绕过它们之间的防火墙
即在heightlamp和heightlnmp之间建立一层dns隧道,把要转发的端口数据都封装在dns流量里面进行穿透
最后实现的效果就是,当我访问heightlamp的某个指定端口,就可以直接访问到目标内网中的Midlnmp的ssh

Read More

轻量高效的 MITMF [ bettercap ]

0x01 关于bettercap:

1
2
3
一款相对还不错的中间人工具,出来也有些年头了,不过貌似维护的并不是特别勤快
从名字就不难看出,作者似乎是有意在向我们说明,这是一款比ettercap更好的中间人工具,'b' is better ^_^
此外,工具本身基于ruby,官方要求的 ruby版本为 >= 1.9

0x02 基本介绍:

1
2
3
4
ubuntu 16.04.3 LTS ip: 192.168.3.12 入侵者机器
win2008r2cn ip: 192.168.3.23 模拟正常服务器,事先已准备好各种服务
win2008cn ip: 192.168.3.131 模拟正常服务器,事先已准备好各种服务
win2012r2cn ip: 192.168.3.122 模拟正常服务器,事先已准备好各种服务

0x03 首先,安装好bettercap,如果你系统的ruby版本小于1.9记得务必先升级一下,更多详情请参考其官方说明,如下

1
2
3
# apt-add-repository ppa:brightbox/ruby-ng
# apt-get update
# apt-get install ruby2.3 ruby2.3-dev

Read More

基础命令使用 [ win篇 ]

0x01 基础命令使用:

演示环境:

1
2
win2008R2cn ip: 192.168.3.23 假设为入侵者机器
win2012R2cn ip: 192.168.3.122 假设为目标机器

1
2
3
4
5
6
# whoami /all 查当前用户在目标系统中的具体权限,这可能会成为你一上来的习惯性动作 ^_^
# query user 查当前机器中正在线的用户,注意管理员此时在不在
# hostname 查当前机器的机器名,知道当前机器是干啥的
# net user 查当前机器中所有的用户名,开始搜集准备用户名字典
# net localgroup 查当前机器中所有的组名,了解不同组的职能,如,IT,HR,ADMIN,FILE...
# net localgroup "Administrators" 查指定组中的成员列表

查看本机ip配置:

1
2
# ipconfig /all 查看本机ip配置,观察本机是否在域内,内网段有几个,网关在哪里
# ipconfig /displaydns 查看本地DNS缓存

查看当前机器中所有的网络连接:

1
2
3
4
5
6
# net start 查看本机运行的所有服务
# netstat -ano 查看本机所有的tcp,udp端口连接及其对应的pid
# netstat -anob 查看本机所有的tcp,udp端口连接,pid及其对应的发起程序
# netstat -ano | findstr "ESTABLISHED" 查看当前正处于连接状态的端口及ip
# netstat -ano | findstr "LISTENING" 查看当前正处于监听状态的端口及ip
# netstat -ano | findstr "TIME_WAIT"

Read More

灵活击穿目标多级内网纵深 [ termite ]

0x01 关于termite [ Earthworm的升级版 ],程序地址, http://rootkiter.com/Termite/

1
2
3
一款极度小巧灵活的跳板机,有别于传统socks代理,它对于复杂内网环境下的渗透适用性更强,操作也极为简便
废话不多说,大家可自行在实战中多多体会,工具本身其实并无好坏,大部分还在乎用工具的人,退一万步来讲,即使工具再好,也顶不住别人用的烂 ^_^
在此也非常感谢 rootkiter 的无私贡献,真心希望圈子能多一些这样少说话多做事的人 ^_^

0x02 程序分为两部分,admin[为控制端]agent[为代理端节点],admin和agent所有选项用途均一致

1
2
3
-l 指定本地socks端口,等待远程连
-c 指定远程socks机器ip
-p 指定远程socks机器端口

0x03 此次模拟环境如下:

1
2
3
4
lnmp01 假设为我们自己的vps 其公网ip为: 192.168.3.30
MidLAMP 目标内网的linux机器 其内网ip为: 192.168.32.192
win2008r2cn 目标内网的win机器 其内网ip为: 192.168.32.134
win7cn 入侵者本地内网机器 其内网ip为: 192.168.32.168 [因为这里用虚拟机模拟的,所以内网段和目标一样]

Read More

利用icmp隧道 轻松穿透 tcp/udp四层 封锁

关于icmp 隧道使用场景简单说明:

1
两台机器间,除了允许相互ping [ 即icmp通信 ],其他的tcp/udp端口一律不允许,此时我们就可考虑利用icmp隧道进行穿透

0x01 此次用于演示的环境大致如下:

1
2
3
4
lnmp01 ip: 192.168.3.30 入侵者机器
MidLAMP ip: 192.168.3.19 为目标linux机器,即icmp跳板机
win2008R2cn ip: 192.168.3.23 为目标windows机器,开启了3389
win7en ip: 192.168.3.17

1
2
lnmp01想访问win2008R2cn的3389,由于win2008R2cn开了防火墙且做了ip限制,没法直接从lnmp01上进行访问
虽然win2008R2cn开启了防火墙,但好在MidLAMP能ping通win2008R2cn,即没有阻断它们之间的icmp通信
Read More

内网渗透之 teamviewer隧道



0x01 关于teamviewer

1
一款优秀的远控工具,通信数据全程加密,用户量也非常庞大,想必大家早都用烂了,这里就不多废话了,咱们直奔主题...

0x02 此次实验环境:

1
2
win2008R2cn ip: 192.168.32.134 假设为目标内网中的一台已控win服务器,已装好teamviewer且为启动状态,vpn功能也已打开
win7en ip: 192.168.3.17 假设为自己本地内网中的一台普通win机器,已装好teamviewer且为启动状态,vpn功能也已打开

0x03 想实现的最终目的

1
2
3
通过teamviewer自带的vpn功能,对目标内网进行渗透
想在目标win2008R2cn和本地win7en之间通过teamviewer搭建一条专有通道,方便对目标内网进一步渗透
即通过teamviewer 实现简易的 '双内网'通信

0x04 在两端机器上安装好teamviewer,务必记得安装时,选择’高级’安装,把’vpn功能’都勾选上,主要就是用这个功能

Read More

MySQL 主从复制 完全上手指南

0x01 在说mysql主从复制之前,我们先来大致了解一些关于不同级别的同步方案

基于文件级别的同步

非实时同步

1
scp/sftp/ftp/samba/rsync/union....

实时同步

1
NFS/inotify/sersync/lsyncd....

基于文件系统级别的同步

1
drbd...

基于数据库级别的同步,对于数据库而言基本都属于实时同步,但实时并不一定意味着就是同步操作,也可能是用异步的方式在操作

1
2
3
4
mysql replication 虽然异步的,但实现的效果基本上是实时的
oracle
redis
mongodb

Read More

一键抓取目标机器上的所有明文密码

几乎支持市面上大部分常用工具,另外,脚本自身基于py,跨平台性相对较好,免杀效果也还不错,不过,实战中务必要在一个较高权限[最好是提权后的root或system]下运行,否则你很可能什么都抓不到,实战中用过几次,主要是想用它来搜集内网机器上的各种密码,但,并不是特别靠谱,有些行为还是很容易被杀软捕捉到,自己如果不会免杀,就很头疼了,更多详情大家可自行参考其github, https://github.com/AlessandroZ/LaZagne 话说回来,作为学习样本还是很不错的


Read More