61 给你一个网站,一般怎么做渗透测试的
先确定黑盒测试还是白盒测试
黑盒测试
?信息收集:
? ?服务器相关---:系统版本,真实IP,开放端口,使用的中间件
? ?指纹信息---有无cdn加速,dns解析记录,是不是cms系统,ssl证书信息
? ?whois信息--- 备案信息,邮箱,手机号,姓名
? ?子域名,旁站,C段
漏洞测试
? ?sql注入,xss,csrf,弱口令,文件包含,任意文件上传下载,远程命令执行,敏感信息泄漏,目录遍历等
? ?可以先用工具进行扫描,对结果进行手动验证,排查误报,对一些没办法工具扫描的漏洞,比如逻辑漏洞等通过手动测试
? ?最后书写报告,写出以及修复建议,整理报告,
白盒测试
直接进行漏洞扫描
? 针对ip地址进行渗透测试,用工具进行漏洞扫描,得出报告,进行手动验证,
? 再测试一些工具检测不出来的,一些漏洞:越权漏洞、逻辑漏洞、未授权访问漏洞。
? 还有一些不让用扫描器的项目,那么就需要纯手工进行漏洞检测了,
? 如果发现漏洞,一般就截图留证,写报告,一般不进行漏洞利用,最多获取出来一些数据作为证明,
? 最后出具报告以及修复建议,等修复完之后,在进行复测,出复测报告。
?62 打点(打站)过程
一、信息收集
服务器相关---:系统版本,真实IP,开放端口,使用的中间件
指纹信息---有无cdn加速,dns解析记录,是不是cms系统,ssl证书信息
whois信息--- 备案信息,邮箱,手机号,姓名
子域名,旁站,C段,敏感目录检测
二、漏洞扫描
用 AWVS、APPSCAN、长亭科技的 Xray 等扫描器检测 Web 漏洞,如 XSS,CSRF,sql 注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含, 远程命令执行,弱口令,上传,编辑器洞,暴力破解等
用 namp、sqlmap、天镜、Nessus扫描系统,对扫描出来的高危漏洞进行测试,以及进行漏洞验证。
三,漏洞利用
## 利用发现的漏洞,包括中间件以往爆出的漏洞,来进行命令执行、数据提取,或者getshell,或者敏感文件读取等操作
四,权限提升
?Windows提权
? ? 微软官网找公布的exp --- 查看哪些补丁没有打,找到对应漏洞利用工具
? ?使用工具 ---- 很多专门提权的工具,比如我用过一个叫Pr的工具
? ? sc命令提权 --- 针对版本windows 7、8、03、08、12、16
? ? 利用 kali 的msf 提权
?Linux提权
? ? ## 内核漏洞提权,比如老版本kali的内核漏洞
? ? ## 脏牛提权
? ? ## sudo 提权
? ? ## SUID提权
?数据库提权
? ? ## mssql提权 ------ sqlTools 工具
? ? ## Oracle数据库 ------ 使用oracleshell工具
? ? ## MySQL提权
? ? ? ## UDF自身提权
? ? ? ## MOF漏洞提权
? ? ? ## MySQL启动项提权
五,权限维持
? ? ## 克隆账号
? ? ## 添加匿名用户
? ? ## 激活Guest用户
? ? ## shift后门
? ? ## 添加schtasks计划任务
? ? ## 添加启动项,服务
? ? ## SSH公钥登录
? ? ## 进程注入
六,收集内网信息,内网渗透
?内网渗透基本步骤
? ?Step1、信息收集 --- ## 基本信息,用户信息,网络信息,权限信息等
? ?Step2、获取权限 --- ## 通过一些漏洞拿下一台主机的系统权限?
? ?Step3、横向移动 --- ## IPC + at/schtasks | IPC + sc | wmic 远程命令执行 | msf横向移动具,Python脚本工具
? ?Step4、权限维持 --- ## 添加匿名用户,激活Guest用户,添加schtasks计划任务,添加启动项,服务
? ?Step5、清理痕迹 ---- ## 操作记录,历史记录等
七,痕迹清理
## 操作系统、中间件、数据库等日志进行清除
63 信息收集都要收集什么
服务器相关---:操作系统版本,真实IP,开放端口,使用的中间件,web中间件,数据库版本,软件版本
指纹信息---有无cdn加速,dns解析记录,是不是cms框架信息,ssl证书信息
whois信息--- 备案信息,邮箱,手机号,姓名
子域名,旁站,C段,敏感目录泄漏
64 判断出网站的cms有什么用处?
## 判断出网站的cms就可以去网上查这个cms往常爆过什么漏洞,找对应的漏洞利用工具
## 如果是开源的话还可以下载相应的源码进行代码审计来发现漏洞。
65 扫描网站的目录有什么作用
## 可以收集敏感文件,进行二级目录扫描 获取他的目录结构,获取一些敏感数据,比如网站的备份文件,压缩文件gzip,phpinfo.php文件等
## 可能检测出程序员忘记删掉的备份文件,Git仓库文件,或者后台登录页面
66 如何判断目标主机是Windows还是Linux
## 1、Windows对大小写不敏感,Linux区分大小写。
## 2、通过ping的TTL值进行判断,Linux和widows TTL 值区段不一样
67 假如给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存在编辑器和 admin 目录。请问你的想法是?
直接用7KBscan或破壳工具挂字典在网站二级目录/abc/下扫描敏感文件及目录
68 在目标网站收集注册人的邮箱有什么用处
丢进社工库看有没有泄露密码,并尝试登录后台
可以进行社工,查看他平时的兴趣点,找到其常用密码进行撞库,
将其邮箱丢进搜索引擎,查找其关联的一些账号及设置密码的习惯,
利用已有的信息生成专有字典
69 信息收集用过哪些工具
收集ip:## ping、超级ping、nslookup
收集域名:## 子域名(黑暗搜索引擎,工具:二级域名爆破工具、layer子域名挖掘机),备案号查询,ssl证书查询、威胁情报查询
敏感信息收集:## C段信息收集K8、目录扫描7KBscan和破壳、源码信息泄露.git、DS_store、SVN指纹识别:wappalyzer、御剑,nmap
WAF识别:## kali自带waf识别工具
CDN识别:## ping,黑暗搜索引擎,超级ping
70 waf(安全狗)绕过有了解吗??
## 身份认证阶段绕过
1,伪造搜索引擎 -------------------- ## 不太管用了,不过可以尝试一下
2,伪造白名单特殊目录 ---------------- ### 属于waf管理员配置规则不当导致的。
3,直接攻击源站(真实ip地址) ---------------- ## 可以绕过云waf
## 数据包解析阶段绕过
1、编码绕过 ------------------ ## 最常见的方法之一,可以进行urlencode,这是早期的方法,现在效果不是太好
2、修改请求方式和请求数据位置绕过
3、复参数绕过
## waf 触发规则绕过
1、特殊字符替换空格 # 比如在mysql中%0a是换行,可以代替空格,在sqlserver和mysql中都可以用/**/代替空格
2、特殊字符拼接 --------------------- ## 通过+拼接
3、注释包含关键字 --------------- ## /*!关键字/
5、使用大小写混合
6、双写(不好用)
7、编码与注释结合
8、利用WAF本身的功能绕过(不好用) -- ## 假如你发现WAF会把"*"替换为空,那么你就可以利用这一特性来进行绕过
9、使用其他变量或者命令对注入语句进行替换(√) -- ## 比如 ' and or 1=1 ,这里的1 可以用mod(8,7)来替换
10、组合绕过waf
11、http请求头设置分块传输(√)
71 常用的抓包工具以及功能和使用?
72 判断是否存在CDN,CDN绕过,网站有CDN怎么找真实ip?
判断是否存在CDN:
## 多地ping(也叫做超级ping)、nslookup查询
CDN绕过,网站有CDN怎么找真实ip:
? ## 可以利用查询目标网站的根域名、子域名、泛域名甚至多级子域名来获取真实的IP。
? ## 查看网站备案号来获取真实ip
? ## ping一个不存在的二级域名
? ## 查看DNS历史记录
? ## 利用网站漏洞查找
? ## 网站邮件订阅查找
? ## 通过国外服务器ping对方网站 ------------ 对于国内访问买了cdn服务器,由于国外访问量相对较少,可能没买cdn服务器
? ## DDOS打光CDN流量
73 msf用过常用的命令--漏洞利用框架?
msf全称:## The Metasploit Framework
常用指令:
?msfconsole ## 启动msf
?search ms17-010 ## 搜索漏洞
?show options ## 查看都有哪些需要配置
? set hosts ip ## 配置IP地址
? set port 0000 ## 配置端口
?run/exploit ## 进行漏洞利用
74 AWVS工作原理
## AWVS是一个自动化的Web漏洞扫描工具,它可以扫描任何通过Web浏览器访问和遵循HTTP/HTTPS规则的Web站点。
## AWVS原理是基于漏洞匹配方法,通过网络爬虫测试你的网站安全,检测流行安全漏洞。
75 网站有登录 怎么配置AWVS Appscan等扫描器
预登录:## 提前将用户名和密码配置好
设置记录值:## 扫描到登录页面,自动弹出填写用户名和密码等进行登录页面的记录
预设值cookie:## 设置 Cookie 模拟登录网站进行全面扫描
76 蚁剑、冰蝎、菜刀、哥斯拉对比
菜刀:## 先进行URL解码,在进行base64解码,分析明显特征,eval,ua头为百度爬虫
冰蝎:## Java开发,支持跨平台运行,传输数据用的是AES加密+base64编码,AES加密是对称加密算法
冰蝎2.0:## 进行三次密钥的协商过程,最后一次协商是进行aes加密的过程,先进行base64加密,然后再进行aes对称加密,传输给服务端,服务端在进行aes解密以及base64解密,这样拿到结果进行相应的操作去执行命令获取数据。
Content-Length: 16, ## 16就是冰蝎2连接的特征
冰蝎3.0:
## 静态密钥,如果失效了还是要协商密钥
## Accept头有application/xhtml+xmlapplication/xmlapplication/signed-exchange属于弱特征
## ?ua头该特征属于弱特征。通过burp可以修改,冰蝎3.0内置的默认16个userAgent都比较老
冰蝎4.0:新增的功能
## 1.新增支持多线程超大文件上传、下载;
? ? ## 2.新增文件打包压缩;
? ? ## 3.新增数据库连接配置可保存;
? ? ## 4.新增主机扫描、端口扫描、服务识别模块;
? ? ## 5.新增支持Java9~java15+版本Agent内存马一键注入;
? ? ## 6.新增支持Java Agent无文件落地注入内存马;
? ? ## 7.新增多层网络子Shell穿透模块,实现多层”蝎中蝎”;
? ? ## 8.开放插件开发模块,可开发自定义插件,内置多款插件;
??
蚁剑:## ua有明显的antsword,能够支持自主编码,自行选择编码来传输数据,还可以使用数据分块传输。
77 用扫描和抓包https和http有什么区别?
## https的需要配置https证书,burp上导出证书,安装到浏览器上,本机开启代理,直接就可以抓https的包了
78 扫描器如何较少误报
## 1、添加对应语言的插件
## 2、降低线程数
## 3、将历史误报信息保存在某个地方,每次扫描出来的告警信息先到历史误报中去查看,如果存在表示误报,不存在在进行验证,以减少误报
79 sql注入类型、sql注入的方式?
## 搜索型,字符型,数字型,xx型
## 除此之外 还可以细分比如
?## 报错注入
?## 时间型注入
?## 布尔型注入
?## JSON注入
?## 宽字节注入
?## 编码注入
?## 加密注入
?## 堆叠注入
?## 二次注入
80 sql注入比较了解那个数据库??
MySQL数据库 ------------------- 系统的去学过MySQL数据库基础,对DQL,DML,DDL,DTL有一定的了解。
5.0之后information-sechma,存着所有的表明库名 ------------------- 可以利用此特性可以进行
表结构数据的获取
81 sql注入的流程
1、# 判断是否存在注入点,在输入框的地方进行sql注入测试,用SQL注入的万能语句判断是什么类型,是数字型、字符型、搜索型还是XX型。
2、## 猜解sql查询语句的字段数
3、## 获取当前数据库的数据版本信息
4、## 获取数据库中的表
5、## 获取表中的字段名
6、## 获取字段里的数据
#3 当然了如果可以利用工具的话用工具进行SQL注入测试,效率高,节省时间
82 sql注入绕过方法
服务端后台绕过
? 1、## 编码、可以进行两次编码
? 2、## 参数绕过,复制参数(参数污染),id=1&id=1
? 3、## 采用内联注释 /*!select*/
? 4、## 组合法 如 and 可以用&&再 URL 编码
? 5、## 替换法,如 and 改成&&;=可以用 like 或 in 等
?绕过空格(注释符/* */,%a0) ---## 两个空格代替一个空格,用Tab代替空格,%a0=空格:用注释替换空格:
?括号绕过空格 ---- # 任何可以计算出结果的语句,都可以用括号包围起来。而括号的两端,可以没有多余的空格。
?引号绕过(使用十六进制)-- ## 会使用到引号的地方一般是在最后的where子句中
?逗号绕过(使用from或者offset) -- ## 在使用盲注的时候,需要使用到substr(),mid(),limit。这些子句方法都需要使用到逗号
?比较符号(<>)绕过(过滤了<>:sqlmap盲注经常使用<>,使用between的脚本)
?or and xor not绕过 --- ## and=&& or=|| ?xor=| ?not=!
?绕过注释符号## (#,--(后面跟一个空格))过滤
?使用注释符绕过
?使用大小写绕过
?内联注释绕过
?双关键字绕过
?通用绕过(编码)
?等价函数绕过 ## sleep() ==>benchmark() | concat_ws()==>group_concat() | mid()、substr() ==> substring()
waf 绕过
## 单独说过了
83 为什么要使用or 1=1来测试
## 这是进行sql注入的万能语句,获取所有的数据,可以认为拼接一个永真条件来获取所有数据
84 盲注了解什么
## 这是针对没有回显的情况下来获取数据的方法
布尔型盲注:## 用来获取数据的,一步步进行猜表名,常用函数length(),ascii() ,substr()这三个函数
时间型盲注:## sleep(),猜对了会有延迟,没猜对直接返回,没有延时,通过有无延时来猜数据,常用函数
if(),sleep()函数,benchmark()--可以多次执行SQL语句。
85 基于时间型盲注的函数有哪些??
if(),sleep()函数,benchmark()-- 可以多次执行SQL语句
86 宽字节是怎么注入的?怎么判断是不是gbk编码?
宽字节是怎么注入的?
## 针对的是后台数据为GBK编码时,并且后台使用了反斜杠\对引号的转译时使用
%df' or 1=1#
%df\' or 1=1#
%df%5c' or 1=1#
運' or 1=1# 吃掉\,让单引号生效
怎么判断是不是GBK编码?
## 对于Windows中文版来说,本地编码就是GBK编码。
## 查看数据头的字节
## 当以UTF16或UTF-8编码存储时,头部需要添加几个字节作为标识。称为 BOM
87 GBK和utf-8的区别
## GBK是中文编码字符集,是GB2312的升级版,主要是为了存储中文字符,存储单个中文和英文字母,都是固定的2个字节长度
## utf-8他是一种全球通用的字符集,可变长度,长度在1-4个字符,英文字母一个字节存储,中文是三个字节存储,支持所有国家的语言,市面上utf-8编码的项目居多
88 sql注入报错注入常用函数,说一下函数报错,知道几个报错函数?常用的有哪几个??
## 有十几个,但我常用的就是updatexml(),floor(),extractvalue()
89 等号和单引号被过滤,怎么绕过?
## 对等号或者单引号进行URL编码、base64编码,或者使用联合查询、或者将=替换为in关键字试一试
## 针对单引号可以使用宽字节注入试一试
90 sql注入getshell,有哪些方式?
一. into outfile
1. 此方法利用的先决条件
? ## web目录具有写权限,能够使用单引号
? ## 知道网站绝对路径(根目录,或则是根目录往下的目录都行)
? ## secure_file_priv没有具体值(在mysql/my.ini中查看)
2. secure_file_priv
## secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL。如下关于
secure_file_priv的配置介绍
## secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
## 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
## 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
二. --os-shell
原理
--os-shell就是使用udf提权获取WebShell。也是通过into oufile向服务器写入两个文件,一个可以直接执行系统命令,一个进行上传文件
利用条件
## root权限
## 知道网站的绝对路径
## GPC 关闭
## secure_file_priv 参数为空或者指定路径
原理:
## 先对目标进行一个基础信息探测,然后上传shell到目标web网站上,利用shell传参进行命令执
行,退出删除shell
## 数据库不同,条件也不同,例如SQLserver需要数据库支持外连,数据库权限为SA权限,主要利用XP_CMDshell扩展进行命令执行sql