Bypasswaf for Mysql [数据库层面之特殊字符篇]
0x01 先准备好用于测试库表及数据:1
2
3
4
5
6
7
8
9
10
11
12mysql> create database injection;
mysql> use injection;
mysql> CREATE TABLE IF NOT EXISTS `user`(
`id` INT UNSIGNED AUTO_INCREMENT,
`username` VARCHAR(30) NOT NULL,
`password` VARCHAR(40) NOT NULL,
`email` VARCHAR(40) NOT NULL,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> insert into user(username,password,email) values('gentoo','superman','sec@rootkit.org');
mysql> insert into user(username,password,email) values('arch','welcome','lin@hook.org');
mysql> insert into user(username,password,email) values('admin','loginpass','xlion@priv.org');
ModSecurity 生产级WAF部署优化 [一]
0x01 用大白话来简单说明 WAF 最基本的工作流程1
捕获客户端的各种请求 -> 匹配WAF拦截规则 -> 命中规则后的处理动作 -> 将整个拦截过程记录到指定的日志文件中 -> 脚本绘制实时攻击图表
0x02 关于modsecurity1
2
3
4一款老牌的开源 WAF,相信经常搞渗透的朋友,对市面上经常用的几款WAF,都早已非常熟悉,废话不多说,咱们直奔主题
本次,我们只是单单把它部署到可用的状态,关于规则深度定制,绕过以及白名单设置是我们面的事情
个人非常不建议把modsecurity和nginx一起用,实际测试中,问题还非常的多,关于nginx更推荐用naxsi[后面再单独说]
至于源码包,可自行去 modsecurity 的官方站点下载 www.modsecurity.org
0x03 首先,先编译安装好基本的LAMP环境 [具体编译安装过程,可自行参考博客相关文章] ,这里暂时就直接用之前编译好的环境来演示1
httpd 2.4.27 + php 5.6.31 + mysql 5.5.57 + centOS6.8_x64
0x04 先停掉apache,因为等会儿要编译modsecurity生成对应的库1
# pkill httpd
0x05 开始编译安装 modsecurity,一如往常,务必先装好一些必要的依赖库,不然中间会有很多的麻烦1
2
3
4# yum install httpd-devel apr apr-util-devel apr-devel pcre pcre-devel libxml2 libxml2-devel curl-devel zlib zlib-devel openssl openssl-devel -y
# cd modsecurity-2.9.2
# ./configure --with-apxs=/usr/local/httpd/bin/apxs 生成modsecurity的so
# make && make install
基于 Nginx 的七层负载均衡实现初步
0x01 此次演示环境1
2
3
4NginxHttp ip: 192.168.3.49 作为负载均衡器,测试域名为 `lb.org`,生产环境中,最好自己新建个虚拟ip来做负载均衡,方便后续迁徙
OldLamp ip: 192.168.3.45 后端真实处理请求的web服务器 httpd-2.2.34
OldLnmp ip: 192.168.3.42 后端真实处理请求的web服务器 nginx-1.12.2
NewLnmp ip: 192.168.3.43 作为访问客户端,测试各种负载均衡算法是否工作
先改下当前nginx负载均衡器的host解析,即NginxHttp
机器,因为等会儿要直接用机器名去访问后端的web节点1
2
3# vi /etc/hosts
192.168.3.42 test.bwapp.org bwapp.org
192.168.3.45 bwapp.cc www.bwapp.cc
再来改下Newlnmp机器
的host解析,添加如下内容,因为等会儿要用它来进行测试访问1
2# vi /etc/hosts
192.168.3.49 lb.org
0x02 以下是一些常用的负载均衡调度算法1
2
3
4
5
6rr [ 正常轮询 ] 即按照事先给定的后端节点顺序挨个轮询,适合性能相近,业务相同的场景
wrr [ 权重轮询 ] 即按照事先设置好的后端节点轮询比例,进行轮询,适合机器性能差距较大,业务相同的场景
ip_hash [ ip hash ] 也就是说只要客户端ip不变,在一段时间内就只访问固定的后端节点,`常用于会话保持`,如session,cookie,不过这样保持,负载就不均衡了
fair [ 动态算法 ] 属于第三方算法,即根据节点的响应时间来分配请求,响应快的节点优先分配
url_hash [ 节点取模 ] 也属于第三方节点,根据url来分配后端节点,命中率比较低,不过非常适合做web缓存
一致性 hash ...
0x03 在 nginx 中可用来实现负载均衡的主要模块1
2upstream 模块 定义好后端节点及所使用调度算法,大致工作过程是这样的,它会先读取upstream中的配置,然后通过server标签中的proxy_pass来进行实际的调用
http_proxy 模块 主要负责实际的转发行为
利用Win自带的 PSR 实现免杀截屏
0x01 PSR 即win自带的”问题步骤记录器”,也就是说它只会捕捉活动窗口,并不是我们想象的各种远控中的那种截屏功能,win + R 输入 “psr” 即可开启
0x02 当然,实际渗透中,肯定是不能让对方有任何察觉的,所以图形界面的不要,悄悄的干活,我们可以直接在管理员权限的cmdshell下搞,其实,你完全也可以在PS的shell下操作,至于这个shell怎么搞到,随你,注意,虽然是在命令行中,进程列表中还是会被发现,不过,如果你自己会hook,也是可以让它消失的1
2C:\>psr /start /gui 0 /output "d:\capturescreen.zip"
C:\>psr /stop
如何更隐匿地渗透
0x01 前言
实际渗透中,我们经常会遇到各种ips或者waf的围追堵截,有时候,跑个目录就直接把你ip封了,因为经常会遇到这种尴尬的情况,所以就灵机一动想了个比较折中的办法,利用tor来频繁的切ip,然后用socks5代理,把常用的工具丢进去搞,注意用工具跑的时候,线程要尽量给少点,tor唯一的缺点就是慢,当然,你也可以写成分布式扫描,不过可能需要你事先准备好一大批高质量代理ip,然后随机轮训,不过咱们不需要这么麻烦,不到五分钟写了个小脚本,暂且能满足需求,将就用吧
0x02 代码如下
随便写的,比较粗糙,大家将就着看吧,如下,有些地方还有问题,后期抽空想到好点子了,再完善下,对了,不知道为啥tor自己的切ip选项不管用,希望哪位兄弟如果找到原因麻烦也告诉我一声,谢谢……
利用 Nginx_lua 定制高效灵活的专属WAF
0x01 什么是Lua1
2
3关于Lua,就不用多说了吧,想必朋友们应该也都非常熟悉了,众多脚本语言中的一种,不过相对于其它脚本来说,性能要略高一点
在nginx中也提供了一个nginx_lua的模块,主要是为了方便用户,可以灵活的通过lua来扩展nginx功能,比如lua_waf
有兴趣可自行深入了解,这里就不细说了,我们今天的重点主要还是想利用它来快速部署一个简易版的Waf
0x02 这里,我还是拿之前已经编译好的lnmp环境来演示,因为等会儿要重新编译nginx,所以就直接把之前nginx的整个安装目录干掉,因为是源码编译安装的,所以也不会有啥残留[源码编译安装的好处],记得在干掉之前先把nginx服务停掉,配置文件[nginx.conf]也备份一下,方便等会儿再直接拿过来用1
php5.5.38 + mysql-5.5.32 + nginx-1.12.1 + centOS6.8_x64
1 | # pkill nginx |
关于各类环境部署简要说明
1
2
3
4
5
6
7
8
9
10为了更加贴近实战的学习,所有相关的部署配置,均是按照实际生产标准来的,力求做到真实,也是为了方便大家更靠谱的学习...
作为一个对技术深度有追求的渗透者,你极度有必要熟知其中涉及到安全问题的每一个配置参数选项的具体作用,每一次权限映射背后所带来的实际利用价值...
大家可能也看到了,在实际部署过程中,基本都特别标明了详细的版本号,比如,php5.2,php5.3及php5.5,因为有些漏洞特性只能针对特定的版本才会有用,所以不得不费点儿劲....
就整个部署过程来讲,其实也是一个非常好的学习进步的机会,你完全可以通过这种实际部署更深的去理解某些漏洞产生的根因,而不用再人云亦云[用事实说话],说白点儿,这就是在潜移默化的积累,积累的多了,自然就触类旁通,根本不用什么高大上的东西
你要做的只是把前人的优秀经验彻彻底底的真正变成你自己的知识储备,然后在此基础上灵活变通改进,足矣,虽然短时间会比别人走的慢点,但你会收获的更多,甚至看到很多别人看不见的东西,很显然,这种方式对于'天才'或者'神童',是完全不适用的,但那毕竟只是极小的一部分人
脚踏实地,一步步的来,不要总觉得这也不重要[觉得这也很low],那也不重要[ 那也很low],然后你就以这种态度持续了很多年,而等再回头看那些曾经一直默默踏踏实实坚持到现在的人,已经把你甩的很远了,再想追上,难于上青天...
还是那句话,"运维会的那一套,你要比他还精通,你才有可能搞定他,开发会的那一套,你要比他还娴熟,才有可能挖到更有价值的洞....",我跟大家起点都一样,也一直在为此而不懈努力着
不为任何人,就为了你自己,学习吧,哪怕每天进步一点点,起码你不会因为一天碌碌无为而感到空虚....
人生苦短,能做点自己喜欢的事情应该珍惜,个人一直坚信"唯一不变的,就是一直在变",安于现状,不思进取,自以为是,乃致命毒药....
......
Nosql 攻防第二弹 [ Redis ]
0x01 其实redis
跟memcached
单从功用上来讲,基本差不太多,只是在数据量非常大的情况下,memcached 就会有很多的问题,但redis在这方面却恰巧做的还不错,且redis所支持的功能更加全面,也能更好的适应一些比较复杂的业务逻辑,下面则是关于redis的一些优良特性1
2
3
4
5所支持的数据类型较丰富
支持持久化存储
支持主从复制
性能强悍,并发可超十万
...
此次演示环境1
2
3
4
5CentOS6.8_x86_64 ip: 192.168.3.42 Oldlnmp root权限下的redis未授权
CentOS6.8_x86_64 ip: 192.168.3.66 RedisMaster 为加固过的redis
Ubuntu16.04 server ip: 192.168.3.67 RedisSlave root权限下的redis未授权
Ubuntu16.04 LTS ip: 192.168.3.12 Metasploit 为redis客户端
win7cn ip: 192.168.3.60 后续连webshell用
0x02 开始安装部署 redis,此处暂以最新版为例进行演示,为了避免redis自身的一些漏洞,建议使用最新版的稳定版本1
2
3
4
5
6
7
8
9# wget http://download.redis.io/releases/redis-4.0.6.tar.gz
# tar xf redis-4.0.6.tar.gz
# cd redis-4.0.6
# make MALLOC=jemalloc
# make PREFIX=/usr/local/redis-4.0.6 install
# ln -s /usr/local/redis-4.0.6/ /usr/local/redis
# export PATH=/usr/local/redis/bin/:$PATH
# echo "export PATH=/usr/local/redis/bin/:$PATH" >> ~/.bash_profile
# redis-server -h
基于 Ssh Key 的分发安全
0x01 利用最原始的 SSH key ,实现批量ssh管理 只适合较小规模集群场景,通常在100台机器以内
,要实现的最终效果,如下:1
2可以批量分发文件,进行常规配置管理
可以批量执行shell命令,进行日常维护操作
演示环境:1
2
3SshKeyMaster ip: 192.168.5.11 CentOS6.8 x86_64 分发机
SshKeySlave5 ip: 192.168.5.13 CentOS5.5 i386 分发客户机
SshKeySlave7 ip: 192.168.5.12 CentOS7 x86_64 分发客户机
0x02 基于SSH key 的批量ssh管理,具体实现过程:
以下是在这方面已经相对比较成熟的一些工具框架,后续会再专门针对每一种进行单独说明:1
saltstack,ansible,puppet...
1 | # rpm -qa openssh openssl 务必确保所有机器均已事先安装好ssh且ssh服务已正常开启 |
0x03 先在所有机器上 [ 注意,是所有机器,密码完全一致 ]
创建一个普通用户,因为等会儿我们要用此用户身份来进行各种分发操作
切记,严禁直接用root分发,权限过高,太危险,分发机一旦被攻陷,其它的分发客户机也就随之沦陷了,建议,如果实在有需求可以用sudo或suid [其实也不推荐]来暂时性授权
1 | # useradd sysadm |
0x04 再在分发机上创建好密钥对,准备发到各个客户机上1
2
3
4
5# su - sysadm 切到刚刚创建的用户下
$ ssh-keygen -t dsa 一路回车即可
$ ls -l .ssh/
-rw------- 1 sysadm sysadm 668 Nov 27 14:11 id_dsa 私钥[钥匙]
-rw-r--r-- 1 sysadm sysadm 609 Nov 27 14:11 id_dsa.pub 公钥[锁],把公钥分发给所有要ssh的机器
服务安全 [ NFS ]
0x01 NFS 简介:
NFS 一个比较古老[比自己的年龄都大]
的网络文件系统,不过,相对比较稳定,由服务端和客户端组成 [ 即 C/S 架构 ] ,服务端主要负责提供共享目录 [一般为web的用户数据存放目录,专门用来存放用户上传的各类静态数据],而客户端则负责存取该共享目录中的数据
0x02 NFS 容易产生安全问题的几个点:1
2
3
4共享目录在本地文件系统中的权限问题
NFS服务用户权限设置问题
NFS客户端挂载的安全及性能问题
.....
0x03 环境部署简介 [ 所有系统均以 centOS6.8_x64 最小化安装,只带有必要的环境库 ]:
nfs服务端:1
NfsServer ip: 192.168.4.2