小迪安全学习
Day 1
DNS:域名ip解析协议
域名
www.baidu.com www是一级域名
tieba.baidu.com tieba是二级域名
shehui.tieba.baidu.com shehui是三级域名
本地host文件
可以重定向解析,优先级高于dns
加速器就是通过修改host文件做到重定向,使其访问国内的缓存而非国外
CDN 缓存节点技术 一般无法获取真正的主机ip
绕CDN
Day3
有时访问域名和IP到达的是不同文件夹
使用御剑扫描时
ip地址访问可以发现更多内容,而域名访问只能发现一个文件夹下的所有文件
根据网站中间件解析协议的不同,对不同后缀名的文件做出不同的反应,或解析或不解析,或直接下载,或报错
例如
自定义一个可执行文件xiaodi8,为他添加asp的脚本文件路径后使其夺舍asp
xiaodi8解析不了是因为没有脚本文件 这里已经给它添加了asp.dll的路径 所以会按照asp脚本格式运行
装IIS时,会自动创建一个来宾用户
当lls采取匿名访问的策略,我们访问网页时,以来宾用户身份访问服务器上的文件
服务端可以自定义来宾用户的权限,这也是防护端用的一种技巧,他不提权的话菜刀啥的就用不了了
没有权限后,攻击方如何应对
思路:将后门换个目录,因为他不可能将无权限应用到那些有脚本文件的目录甚至根目录,若应用,网站都不能正常访问
网站漏洞:
网站源码
操作做系统
中间件
数据库
web源码
获取源码
代码审计
cms识别
如果是框架,就直接利用框架漏洞
如果不是就去判断开源还是内部
可以用搜索引擎找到用相同源码的其他网站
过程
1 右键审查 查看网络 抓包 用搜索引擎搜索加载的特定文件
手动获取CMS
2
系统数据库
判断操作系统:
如果有网站
1 改大小写,linux对网站敏感而windows对大小写不敏感
2 通过ttl
判断不准确
3 用nmap扫描
nmap -O ip
判断数据库:
1.根据脚本类型判断
2.根据开放端口判断
第三方漏洞:安装在服务器上的或网站上的
nmap -O -sV ip
可查询目标ip服务器上的的端口开放性以其对应服务和版本
安装在网站上的要扫描网站的路径
今日实战:
成功部署vulbum,并通过本机访问虚拟机的端口,打开目标页面
1 | docker-compose up --build -d |
1 | cve-2017-12615_tomcat_1 is up-to-date |
在这种情况下,cve-2017-12615_tomcat_1
是您所部署的tomcat
服务的容器名称。up-to-date
表示镜像已经存在,没有需要更新的内容,因此不需要重新构建镜像。
这是正常行为,并且意味着tomcat
服务已经成功地运行在Docker容器中。您可以通过运行以下命令来检查容器的状态:
1 | docker-compose ps |
Name Command State Ports —————————————————————————– cve-2017-12615_tomcat_1 catalina.sh run Up 0.0.0.0:8080->8080/tcp,:: :8080->8080/tcp
可以确认 cve-2017-12615_tomcat_1
容器正在运行,并且 tomcat
服务已经成功地在该容器中运行。
以下是您提供的输出信息的解释:
- Name:
cve-2017-12615_tomcat_1
是容器的名称,这是由Docker Compose自动为tomcat
服务的容器生成的名称。 - Command:
catalina.sh run
是在容器内运行的命令。这是Tomcat Web服务器的启动命令。 - State:
Up
表示该容器当前正在运行。 - Ports:
0.0.0.0:8080->8080/tcp, ::8080->8080/tcp
表示容器的端口映射。在这种情况下,tomcat
服务在容器内部监听8080
端口,而通过Docker的端口映射,可以通过主机的8080
端口来访问tomcat
服务。
因此,您现在可以通过在浏览器中输入 http://localhost:8080
或 http://<您的服务器IP>:8080
来访问 tomcat
服务的Web界面。您应该能够看到Tomcat服务器的默认欢迎页面。
1 | ip addr |
在输出中,找到与主机通信的网络接口,通常命名为eth0
或ens33
,并找到该接口的IPv4地址。这就是虚拟机的IP地址。
加密算法
1 大部分的网站都采用了MD5的加密方式
MD5 MD5是不可逆的
那些网上的MD5解密就是爆破
碰上16位或者32位的密文时,考虑MD5
2 SHA:
SHA1 SHA256 SHA384 SHA512
后面的数越大生成的密文越长
3 时间戳:
常见于数据库中记录登录时间的,是一串数字
4 url编码:
%+两位字符
字符可能是数字或字母
5 base64编码
密文会随着明文增长而变长
特征:结尾会出现一个或两个等号
6 Unicode编码
%u+四个数字
7 AES
有四个数据 填充方式 数据块 密码 偏移量
前两个还可以猜一猜
后两个不知道没法玩
8 DES
需要密文
信息收集
先看有无网站
若有
先查看有无CDN
若有CDN 进行绕过 可尝试挂梯子,接口查询,黑暗引擎,子域名
若无CDN开始信息收集 则尝试获取程序源码 程序源码分为开源和非开源
获取源码:
1 扫描备份文件 为了防止网站文件遗失 网站往往有备份
2 CMS识别后下载
3 小众网站 违法网站等 特殊渠道
开源的便可以直接分析源码或在本地搭建测试
获取操作系统 搭建平台 数据库类型
第二种情况是网站封装成app
用取证工具直接干 提取web
再找不到web 就要反编译和逆向
最后一种情况
啥也没有
查看有无第三方应用
更新了
web应用/架构搭建
漏洞大部分来自于源码
代码造成了漏洞
根据response
文件夹 403存在 404不存在
文件 200存在 404不存在
3xx跳转
5xx内部错误
抓包/封包
抓包
对于app
可以用模拟器,挂自己本机代理 用bp final可抓
小程序 用茶杯 还有一种是之前打卡用的那种方法
假如是非web协议的
用wireshark或者克莱网络分析系统
他是直接监测网络接口的
封包
抓模拟器里的app
像那种页游
一种是傻瓜式封包
使用工具: 封包监听工具 科莱
我们可以发现 当人物移动的时候,有一个数据包是一直变化的
因为我们要时刻与他的游戏服务器保持交互
点击监听 然后回城
移动到其他地方 在发送一遍 发现回城了
获取具体到操作的数据包
基于此有些游戏外挂就是这么做的
第二种
模拟器安装proxydropid
本机启动ccproxy
模拟器里的port要与cc里的sorket端口设置一样
总结
有http协议 走常规流程
无http协议 扫ip 看资产
密码
md5是不可逆的,他的破解是枚举
案例一 md5
案例二 md5+discuss 要获得那个盐才能解密
获得salt之后
在MD5密文后面加:salt即可解密
案例三 基于操作系统的
win7及以后的用户密码都采用NTML加密
案例四
非对称加密算法 加解密都很有难度
密码和偏移量是无法试出来的
php加密后,可以用在线网站解密
应用价值:作为开发者,保护自己的产品,作为攻击者,利用加密绕过waf
解密.net使用llSpy解密dll文件 类似于反编译
jsfuck与jother很像,只是少了{}
jsfuck .com 解密网站
信息打点 web架构篇
操作系统
中间件
脚本语言
数据库
源码名称
数据库中间件
搭建组合或端口扫描
案例一 个人博客 架构 源码
用浏览器附带工具审查
发现语言
通过更改访问文件的大小写
或者TTL
来判断操作系统
关系型数据库: 1.Oracle数据库默认端口号为,1521; 2.MySQL数据库默认端口号为,3306; 3.SQLServer数据库默认端口号为,1433; 4.postgreSQL数据库默认端口号为,5432;
NOSQL数据库: 1.MongoDB默认端口号为:27017; 2.Redis默认端口号为:6379; 3.memcached默认端口号为:11211;
可以通过扫描其相应端口是否开放来判断
源码决定特性
特性决定手段
案例二 违法app 架构 源码
抓包
获得网站
然后和网站流程差不多
获取源码方式特殊
不在博客里写了
案例三 违法wz 架构 域名
去域名注册网站
可以获得whois信息和别的域名,大大增加资产
案例四 专属SRC 架构 域名
xs,根本挖不倒
信息打点 资产泄露篇
源码泄露途径
1 | 源码本身特性 |
直接获取 CMS识别
CMS识别
CMS识别平台
获得源码 黑盒变白盒
习惯不好 备份文件
7kbscan扫描其文件
用御剑也许
省流 别把网站备份到网站目录下 不然扫出来别人就直接下载了
配置不当 GIT泄露
怎么判断有git目录
在网站后面输入/.git若返回403则目录存在
则可以
1 | python.exe GitHack.py http://www.114514.com |
然后就会获取源码
配置不当 SVN泄露
类似于上面那个
没删 .svn文件夹的时候可以利用
配置不当 DS-Store泄露
.Ds_store 同上
PHP特性composer.json泄露
composer 乃是php的包管理工具
我们可与以通过它获得源码的一些信息
该文件是一个说明性文件
会获取很多信息
以上的这些 从备份文件到这里 都是基于识别CMS失败的情况
下载配合-web inf泄露
资源监控 Github泄露 语法搜索&关键字搜索 &社工
信息打点 系统篇
获取网络信息-服务厂商&网络架构
服务厂商:
服务器的操作系统 以及位于的地点
如阿里云 腾讯云 机房 或随便租的
网络架构:
外网
随便访问
内网
机房里的一台机器在网关出口映射一些协议出来,把网站服务映射
扫这种网站会扫到外网出口,看不到网络信息
案例1
1 | https://www.ip138.com/ |
查询ip
没有显示厂商可以看whois
有可能用的小厂的
案例2
学校机房服务器搭建网站 绑定外网出口171
服务器本身地址是192
但是扫网站只能访问171
当进行安全测试时发现不对劲,出现误报或扫不到是
大概率是企业或学校的这种情况
这种没有办法
除非获得内网一台服务器的权限
获取服务信息-应用协议&内网资产
协议就是扫端口
目标无法下手时,可以从他同一网段的服务器下手
可能有web协议,也可能有其他的一些协议
FTP SSH redis 各种服务
若获取同内网服务器权限
开始内网攻击
端口扫描工具 nmap
旁注 使用在线网站查询
c段 使用kali masscan
获取阻碍信息-CDN&WAF&负载&防火墙
CDN
可以使用超级ping,从各地平同一个网站看指向的ip有什么不同
WAF
waf可以分类 有些大厂waf可以直接点了
判断waf
1 看图
2 脚本 wafwoof
负载均衡
kali ldb识别
第9天:信息打点-CDN绕过篇&漏洞回链&接口探针&全网扫描&反向邮件
CND绕过
超级ping判断一下有CDN吗·
绕过
1 从子域名入手
有时候子域名不加速
一般子域名和主站保持统一ip
2 从网站漏洞入手
未绑定CDN之前的域名解析记录
3 CDN本身
阿里云的号 基本不可能
4 挂梯子绕过
CDN配置的加速区域不全
5 黑暗引擎
配置CDN时留下的痕迹
适用于对方没有内网网卡的情况
若有内网网卡 获取的是服务器的内网ip
6 国外工作者的网站
Get Site IP - Find IP Address and location from any URL (get-site-ip.com)
直接出来 不建议 不保证准确率
7 fuckCDN 扫遍全网!
最终兵器
这玩意得下载
需要知道ip的一个范围进行包括
实在不知道就你妹的直接去ipip.net全球域名直接搞上去
案例一 ssrf漏洞&遗留文件
我们访问会碰到CDN 就让服务器自己找我们
在自己的服务器
创建http服务 记录日志
上传ssrf.php文件
原理是我们在搜索框里输入我们自己服务器的ip以及端口
然后我们的服务器里就出现了目标服务器的真实ip
案例二 邮件
类似于案例一
你要让网站的邮件服务器主动给你发邮件
当我用邮箱和网站查出来不一样时
哪个才是正确的?
看备案
找到真实ip之后
修改本地host文件
使其CDN无效化
第10天:信息打点-APP&小程序篇&抓包封包&XP框架&反编译&资产提取
外在抓包
bp fidder 茶杯
端口扫描
内在分析
AppInfoScanner
自动化app分析工具
1 | python app.py android -i *.apk( apk文件的路径) |
先查一下壳
然后用
xposed
好像是脱壳/砸壳的
没看懂。。
还有安卓修改大师
可以改apk
看反编译代码
整体思路
根据数据包搜集服务器中间件信息
找到web网站
访问一下
看看有CDN吗
有就绕过
没有就端口扫描
后序主要围绕app代码逻辑和功能展开
第11天:信息打点-红队工具篇&Fofa&Quake&Kunyu&Suize水泽&Arl灯塔
网络空间搜索引擎
主要用到FOFA QUAKE
既可以单对单的资产探测
也可以单对多的漏洞批量挖掘 漏洞威胁检测
关联资产 特征资产 资产信息
集成工具 finger
github上的
集成四个引擎的工具
需要自己配置api
实现信息收集和漏洞的查找
Arl灯塔-自动化收集
有web页面的信息收集和漏扫引擎
能对部分漏洞做测试
有资源监控功能
Suize水泽-自动化收集
比灯塔还强大
不仅收集常见信息
还收集企业查询信息
配置看起来有点麻烦
以及各种单点工具弥补缺点
第12天:PHP开发-个人博客项目&文章功能显示&数据库操作&数据接受
实现功能
前端文章导航
点入内容显示
更改ID显示不同内容
Navicat 操作数据库
dreamweaver 前端页面设计
phpStudy PHP搭建环境
数据库操作
chunchunc语言
单引号当字符
双引号解析变量
sql查询信息并取出
result对sql语句执行结果接受
通过传参展示网页不同内容
经典的sql注入漏洞
不过滤直接寄
第13天:PHP开发-个人博客项目&文件操作类&编辑器&上传下载删除读写
文件上传
第一种
自己写的
验证不完全就会出现文件上传漏洞
第二种
套用编辑器
第三种
框架
编辑器和框架有问题就是有
没有就是没有
自己写的需要去测
文件下载
第一种
直连下载
先把文件全获取出来
下载哪个 直接点击
重定向
利用url
实现下载
比较简单的是 当你黑盒测试 你在URL中 输入到一个指定的目录 那么文件就会自动下载
直连下载
只有符合网页框架协议的exe,zip等文件才会直接下载
比较安全
第二种
传参下载
文件删除
可以实现任意文件删除
文件读取
文件写入
文件包含
1.txt换成变量
变量值 本地文件 远程文件
图片🐎
防止:
限定包含文件类型
漏洞核心:
1 可控变量
比如直连下载无可控变量 所以安全
2 特定函数
3 函数的多样化
例如include require都能造成文件包含
第14天:PHP开发-个人博客项目&输入输出类&留言板&访问IP&UA头&来源
查询
反映出反射性xss漏洞
特点
输入的参数能在网页中显示 可以执行js代码 实现xss漏洞
留言板
数据存储到数据库中
一调用数据库就会触发
及存储型xss漏洞
前面那个是暂时的
评论区 私信区 反馈建议等都是典型的输入输出类
有些网站为了用户体验及商业目的
会获取用户ip,ua头等
csrf
不过滤就寄了
XFF头伪造
网站中php中以XFF判断ip地址
可以伪造
服务器那种限制ip访问
是根据底层协议判断的
搞不了
第15天:PHP开发-个人博客项目&登录验证&Cookie&Session&验证码安全
不可能每个功能都进行登陆验证
cookie
输对了进后台
输错了返回登陆页面
那我直接访问后台行不行呢?
不验证就成了 未授权访问
你妹的 肯定有登陆验证 但他不可能每次都输一遍账号密码
所有就有了cookie和session
像这种的凭借cookie存不存在来判断的
我知道代码后
就形成了cookie修改 伪造
我伪造了依据 伪造出我成功登录的假象
案例1 伪造
这种的抓包
cookie: user=1
直接就进后台了
案例二 劫持
cookie存在客户端的浏览器中
当用户被xss攻击获取cookie后
攻击者就可以直接登陆了
session
类似于打电话
每次登陆phpsessid都不一样
一关就挂电话了 断联系了 具有时效性
获取id也没用
把数据库查询结果中的用户存出来
这个phpid必须对了才能进
这玩意也爆破不了吧
没法攻击 只能劫持
登录逻辑
万能密码
‘ or 1=1#
select * from 123 where username =’ ‘ and passwd=’’
select * from 123 where username =’ ‘ or 1=1#’ and passwd=’’
将username引号闭合
根据或逻辑
1=1
有真则真
结果为真
#后面的被注释了
以上的验证
都可以爆破登录用户名密码
因此
还得加个验证码
防止爆破
验证码也有问题
例如验证码的复用 这个得看代码逻辑
输对一次验证码后面可以继续爆破
可以通过抓包获取验证码是否一成不变
第16天:PHP开发-个人博客项目&JS-Ajax&前端逻辑&购物&登录&上传
js前端验证 文件上传
逻辑挺简单
lastindex取出最后一个点后面的字符
作为后缀名
然后判断数组里面有没有
文件上传的代码可由php或js实现
真的有用js写的🐎
我甚至不用绕过
可以禁用js
怎么判断用的啥
1 审查 大部分时候看这个
2 看数据回显时间 php的话要慢些
html文件不能写php
php文件能写html
js-ajax传递-登录-状态
不对
看不懂 和以前安卓逆向见的代码差不多
java的
ajax那边还得接受数据
这是返回的数据包
因此
可以在html那里写判断
我们能干啥
咱可以把返回包作为数据包
修改infocode后
再发出去了
就登陆了
也就是说php数据提交后在服务器判断
ajax在提交数据后还把返回值作为数据再读一遍判断
ps:
实战中这玩意可能封装起来
而且他用这玩意写
可能只是起个提示作用
饶了也没用
后台不在这判断
js-ajax传递-购物-参数
1价格以前端为准
我可以抓前端的包改价格买东西
也可以将ajax返回的数据改一下 让他以为我购买成功了
2
价格以数据库为准 数据接受价格后运算
从数据库里取价格
这里改前端包的价格还是有用
因为他最终的判断还是以接受了的数据为准
3
价格以数据库为准 只接受数量后运算
乐
还是能改数量
改成0.001,改成负的
4
价格以数据库为准,数据只接受数量过滤后做过滤运算
乐
再加个特判
才能正确判断购买
牛魔
我还能改infcode
js什么fw
老演员 app
忘记密码的机制
先用我们的手机忘记密码一次
然后输入正确的验证码
获取验证码正确时的回显
后面再找回密码
验证码乱数
然后
把错误的换成之前搞得正确的
就能修改密码了
典型的js前端验证
这种返回json数据包的
做安全测试时 要格外留意
第17天:PHP开发-个人博客项目&TP框架&路由访问&安全写法&历史漏洞
框架:
别人将一些功能封装起来供你使用
很多功能就可以直接调用了
url访问机制
第一种
/index.php/index/xiaodi/x
第二种
第三种
想要触发xxx并输出123
怎么弄
yes/love/xxx/x/123
yes/love/xxx/?x=123
上半用到传统php接受数据方法
下半是用到tp框架的官方接收数据的方法 内置一些简单的sql注入过滤
即使接受数据没有过滤,按照官方数据库写法一样过滤
两语句效果相同
tp框架下
application下的配置文件要提前配置 包括数据库等
方便操作
总结
如果遇到框架写的
两个方向 一个是看他有咩有按框架写
一个是看框架本身的漏洞