渗透测试学习

课程01:基础讲解

常见术语介绍

1.脚本(asp)
2.heml(css,js,html)
3.http协议
4.CMS(B/S)
5.MD5
6.肉鸡、抓鸡、跳板
7.一句话、小马、大马、webshell、提权、后门
8.源码打包、脱裤
9.抓包嗅探、rookit(隐藏其他进程的软件)

渗透测试流程

1.明确目标
2.信息收集
3.漏洞探测

  • poc:漏洞验证
  • exp:漏洞利用
    4.漏洞验证
    5.编写报告
    6.信息整理
    7.获取所需
    8.信息分析

学习环境的配置

1.虚拟机的配置
2.测试系统的安装
3.http协议讲解
http响应码:200,302,400,404,401,403,500,503

http头中如果使用了$_SERVER[“htp_vilent_ip”]或$_SERVER[“HTTP_X_FORWARDED_FOR”]来获取ip
影刺可以通过http头来攻击
例:1.突破服务器ip限制访问ip 2.http头注入等
安全狗通过tcp获取ip,不能通过http伪造ip

课程02 windows基础部分

系统目录、服务、端口、注册表

熟悉windows常见目录
host优先级大于dns
可以使用他人留的后门

服务:决定了计算机一些功能是否开启
常见的服务:web,dns,shcp,右键,talent,ssh,ftp,smb等
在线爆破是用蟒蛇

端口用来区分服务,1024之前是保留端口
常见端口:
talnet:23 ;tftp:69/udp;smtp:25 ;oracle:1521 ;ms sql *server:1433 ;qq:1080
端口作用:信息收集,目标探测,服务判断,系统判断,系统角色分析

注册表是操作系统的一个核心数据库,其中有各类参数,可以控制windows的驱动,硬件等等
遇见无法删除的病毒可强制删除或者清空内容,在开机启动中可以看见
通过网络查询是否存在木马 netstat -an

常用dos命令

color 0a
netstat -an
systeminfo
ipconfig
arp -a
shut -s -t 180 -c “666”
dir;cd;start www.baidu.com;ren
msg:系统命令弹框
net start 查看已经打开的服务
net user
可通过升级用户权限或者降低文件权限来访问文件
一般用guest用户
tasklist:查看进程
批处理文件: * .bat

课程03-04:linux基础

课程05:网络基础

路由、路由器、交换机
LAN、WAN、网络通信
网络协议

osi分层:

  • 高层负责主机之间的数据传输
    应用层:提供应用程序之间通信
    表示层:处理数据格式,数据加密等
    会话层:建立、维护和管理会话
    传输层:建立主机端到端连接
  • 低层负责网络数据传输
    网络层:寻址和路由选择
    数据链路层:提供介质访问、链路等
    物理层:比特流传输

TCP/IP协议栈
应用层:HTTP、Talent、FTP、TFTP–》提供应用程序网络接口
传输层:TCP/UDP–》建立端到端连接
网络层:IP–》寻址和路由选择
数据链路层:Ethernet、802.3、PPP–》物理介质访问
物理层:接口和线缆–》二进制数据流传输

ARP协议:查询本地ARP缓存表,通过ip找到MAC地址(物理地址),若找不到会进行广播查找,对应主机回应ARP,于是主机更新ARP缓存
ARP欺骗原理:针对动态更新,ARP表每五分钟更新一次,提前广播,将攻击服务器假装成网关访问被攻击主机,
需要满足两个条件:
(1)ARP缓存表动态获取
(2)和攻击的服务器在同一网关下(c端不一定在同一网关下)

课程06:html基础

html:超文本标记语言,不需要编译,直接由浏览器执行

php的GET和REQUEST可以接受GET方式传来的数据
取决于静态页面定义的方式
标签属性:text,password,reset,image,file,submit等
闭合的时候取决于脚本
将一句话木马写入数据库,再备份,拿菜刀连接

课程07:信息收集

基本信息收集

域名信息:对应ip、子域名、whois等,爱站网,站长工具
敏感目录:收集方向:后台、robots…、常用工具:御剑扫描,爬虫
端口扫描:namp,portscan,ntscan,telnet
旁站C段:工具扫,常用于内网
整站分析:服务器、组件、脚本类型、数据库、cms,waf等
谷歌hacker:intext:,intitle:,filetype:,inurl:,site:;
url采集:采集同类网站

网站后台查找

弱口令默认后台,查看网站链接,图片属性,工具扫描
robots.txt,googlehacker,查看网站所使用的编辑器是否有默认后台,短文件利用,sqlmap

CDN绕过方法

CDN:内容分发网络,可用超级ping来测试是否有CDN
方法:二级域名不一定有CDN,让服务器主动发包(邮件),敏感文件泄露,查询历史解析ip(微步在线/IP138等可查)
得到真实ip后可用修改host文件的方法绕过cdn

课程08-10:漏洞分析

AppScan扫描器
burpsuite

如果没有漏洞可以尝试查找旁站的漏洞
根据信息收集到的信息可以做字典,成功率更高
暴库利用方法:(1)找连接数据库的文件(2)目录遍历
暴库防下载绕过:’#’改成’%23’,等
下载漏洞利用

网站后台密码爆破,弱口令,常见cms,万能密钥等
Pkav HTTP Fuzzer:后台爆破,可以识别验证码
exp的收集与利用,各版本cms的0day

课程11:access数据库注入

网站分类:静态网页,动态网页
伪静态也是动态
常见数据库:access(中小),mysql,orcle(大),db2

漏洞成因:数据与代码未严格分离,用户提交的参数未充分过滤被带到sql命令中,改变了原有的查询语句,且成功被数据库执行
access数据库后缀是mdb,可以用破障打开

注入的危害:
1.信息泄露
2.网页篡改
3.数据库被恶意操作
4.入侵服务器,安装后门,开端口,种马
5.破坏硬盘,瘫痪系统
很大程度上取决于数据库的操作权限

access数据库适用中小型网站,数据过多会导致速度慢,崩溃等,而且安全性比不上其他数据库
数据库可能有密码,从源码可以找到

注入原理:
1.判断过滤了哪些字符,是否存在漏洞
例:and 1=1;.0;.1;
2.适用bp查看,可能会将返回的错误信息隐藏

数据库之间有些语句通用,有些语句特有,例
and exists(select * from msysobjects)>0 acess
and exists(select * from sysobjects)>0 sqlserver

accsess数据库常见的管理员表名:
admin;admin_user;admin_msg;admin_usr;admin_login;username;manage;manag;msg_user;msg_login;useradmin;users;member;

判断列:
and exists(select admin from admin)>0

管理员下面常见管理员列名;
admin;admin_user;uername;user;usr;usr_login;login_name;password;pwd;pass;user_pass;等

判断有多少列,用orderby语句
开始使用联合查询union
id=31 union select 1,2,3,4,5,6,7 from admin_user会爆出非数字列

判断用户名与密码长度
and (select len(admin) from admin)=5 判断admin表下admin列的数据长度是否等于5
and (select top 1 asc(mid(admin,1,1) from admin_user))>97 top1是第一列

sqlmap:
-u “www.xxx.com?id=1"
-u “www.xxx.com?id=1" –tables
-u “www.xxx.com?id=1" –columns -T admin
-u “www.xxx.com?id=1" –T admin -C admin,password –dump
pangolin的使用

常用注入工具:阿D,明小子,穿山甲,havji,sqlmap等

access数据库高级玩法:
偏移注入:
1.用*代替列数字从后面向前面推
2.公式:太长了,省略吧….
3.利用审查元素可以查看表单名称,表名可能也会是

跨库查询:
select * from [D:\cms\root\123.mdb].admin_user

access写入文件,执行漏洞–》很难
挖0day:代码审计~

课程12:sqlserver注入

数据库调用分析

mssql大多数是学校,考试之类的
sa账号的权限是系统级
创建数据库,创建表,创建数据
删除数据库的时候需要先分离后删除文件

脱裤的时候数据库正在使用不能直接脱,可以采用脱备份文件或者先备份后脱库

mssql数据库权限:
sa权限:数据库操作,文件操作,系统操作等;
db权限:文件管理,数据库操作等
public权限:数据库操作guest——user

注入原理

调用数据库的代码
inc,config等常用来存放连接数据库的文件

注入语句:
1.判断是否存在注入点,过滤了哪些;
2.判断是否是mssql
3.判断数据库系统
……
判断权限~

判断数据库:
@@version等数据不匹配的方法可以爆出一些服务器信息
and 1=(select top 1 name from master..sysdatabases where dbid>4)->获取第一个数据库
and 1=(select name from master..sysdatabases for xml path)->可以爆出所有数据库
and 1=(select top 1 name from sysobjects where xtype=’u’)获取第一张表
and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name = ‘users’))->获取第一列列名uname

用大小写转换可以绕过一些防注入代码,%0a;+;等可以替换空格

另类玩法

注入点权限的判断
利用mssql扩展存储注入攻击
1.检查xp_cmdshell扩展存储是否存在
如果没有可以饶过想办法添加功能
然后新建用户
开启3389,上传木马等操作
删除日志,替换日志
开启远程数据库

知道网站的绝对路径之后可以写入一句话木马

工具使用:穿山甲,萝卜头,sqlmap
getwebshell通过差异备份拿shell

课程13:mysql注入

mysql+php最常见
数据库的查询,使用等操作

mysql常见函数:
system_user;user();current_user;session_user()连接数据库的用户名;
database();version();load_dile()转成16进制或10进制mysql读取本地函数;
@@datadir读取数据库路径;@@basedir安装路径;@@version_compile_os操作系统;

一般在晚上15点发起攻击.~

myssql 5.0多了information_schema.tables等
防注入:过滤关注入的关键字
绕过方法:大小写转换;%00,%01;编码转换;

有得地方需要用到16进制
显错注入
井号的利用
后台绕过
读写函数的使用
上传报错容易获取网站目录
魔术引号与宽字节注入,5有些版本php会转义
sqlmap的宽字节注入脚本unmagicquotes.py
sqlmap获取shell,load_file

课程14:oracle&postgreasql数据库注入

常见:asp/aspx/jsp + oracle
判断是否存在注入:and 1=1; and 1=2
判断是否是oracle:and exists(select * from dual); and exists(select * from user_tables)
判断列数:order by
需要将数字替换成null查询库
获取基本信息:数据库版本,操作系统版本,当前用户

postgreasql国内不多,国外用的多,在外贸,购物等方面

课程15:其他注入漏洞汇总

提交方式注入

常见的提交方式:get,post,cookie,dead,put,option
使用cp注入
常见的可注入点:登录功能,注册功能,修改资料,
可以查看网站以前的漏洞,分析哪些地方还可能存在漏洞
sqlmap指定注入点 –data “username=admin”
sqlmap加星号可以指定星号的位置注入
cookie可以用穿山甲和sqlmap注入 –cookie “id=27” –level 2 ;级别为2
cookie中转

参数型注入

数字型id=1
字符型id=你好
搜索型

其他注入

伪静态注入
延迟注入
base64注入
二阶注入:需要两次攻击才能完成;(1)攻击存储;(2)注入攻击;
phpv9 authkey注入:萝卜头!
http头注入:modify插件可以辅助,一般存在refrerer,x-forwarded-for,cilent-ip,agent这些地方
xml实体注入
总结:凡是有数据交互的地方,都有可能存在注入

课程16:sqlmap使用详解

access,mysql5.0从表->列->内容 方式爆破
其他大多数 数据库->表->列->内容 依次爆破
同一用户(比如root)可以根据ip等方式设立不同的密码,权限
探测等级–level,共有5个等级,默认为1,http——cookie在level为2的时候测试,thhp-user-agent/referer在3的时候测试
总之在不确定哪个paylaod或者参数存在注入的时候,为了保证全面性,建议使用高的level值
显示调试信息:-v,分为七个级别
风险等级 –risk
从文本获取多个目标扫描 -m
处理谷歌搜索结果 -g
–data 把数据以post方式提交
–referer
–headers
–proxy用bp抓包
时间控制:–delay;–timeout;–retries;防止sqlmap访问太快
–safe-url;–safe-freq;防止错误请求太多被封ip,发送一错误一正确来绕过
–prefix;–suffix;在paylaod前后加一些字符
–technique:探测指定sqlmap使用的技术,比如布尔型,报错型等
–union-cols:指定探测的列数
–second-order:二阶注入
–dump-all;–exclude-sysdbs
–search
–udf-inject;–shared-libs;udf是用户自定义的函数
-s;-t;可以保存sqlmap发送的包到本地
–batch:按默认的选项跑
–flush-session:清理缓存文件;
–smart:快速判断
–mobile:伪造移动端发送数据
–identify-waf;–check-waf;
暴力破解表(列)名:–common-tables/columns
post登录框注入
搜索框注入-r
伪静态注入
延迟注入–time-sec
文件读写
命令执行

课程17:脚本木马的制作与原理

制作原理

分类:一句话木马,小马,大马,打包马,脱裤马等等
一句话木马是否能执行取决于脚本类型
有些时候需要变形绕waf
图片木马制作;1.在版权位置可以插入一句话木马;2.cmd下合并一句话木马文件和图片;3.在16进制下插入
上传成功需要修改后图片木马的格式才能执行
小马一般只有上传功能,不需要用菜刀连接,直接访问便可以

使用技巧

内容编码,配合解析漏洞,配合文件包含;利用文件名溢出

黑吃黑

webshell箱子
后门可能是通过http和tcp等传输

课程18:文件上传漏洞

文件解析漏洞

一些特殊文件被iis,apache等解析成脚本文件格式的漏洞
iis5.x和6.0有目录解析漏洞和文件名解析漏洞(’;’截断,asa,cer,cdx等特殊后缀也会被解析)
apache从右往左判断,直至能识别为止,例如1.php.rara.owf会被解析成php
iis7.0/iis7.5/nginx<8.03 畸形解析漏洞 *.jpg或%jpg
一种类型: a.aspx.a;.a.aspx.jpg..jpg
niginx<8.03空字节代码执行
htaccess文件解析

上传本地验证绕过

本地检测,服务端检测
服务器命名规则:一致或者不一致
常见的上传检测方式:
1.javascript;客户端mime类型;3.路径检测;4.拓展名;5.文件内容;
本地js绕过,客户端白名单

上传服务器端验证绕过

服务器端检测绕过(MIME类型检测):改type,改路径等等
文件拓展名检测:白名单,黑名单
绕过方法:大小写绕过,名单列表绕过,特殊文件名绕过,%00截断,.htaccess,解析漏洞
双文件上传:一次性上传两个文件,适用于南方,良精等站点
绕过检测文件头
文件加载检测

课程19:常见编辑器漏洞详解

编辑器利用:1.查找编辑器目录(爬虫,扫描等) 2.漏洞利用(公开的漏洞)
动态网站大多数都有编辑器,往往会隐藏
常见编辑器:eweb,fck,ckeditor,ckfinder
高版本有00截断漏洞

eweb编辑器
1.找后台,登录
2.下载数据库:未修改默认的路径文件名时能实现
3.bp爆破
4.注入
有些时间需要选兼容模式
常见漏洞:目录遍历,后台通杀,文件上传等等

课程20-21:xss跨站漏洞详解

一般按owasp渗透标准做渗透测试
xss危害:盗取cookie,挂马,刷流量等等
doxcument是一个对象,它代表当前的页面;
javascript相关知识
xss分类:反射型,存储型,DOM型
火狐浏览器常用xss插件:hackbar,firebug,temper-data,live-http-header,editor-cookie
xss可以通过手工或者工具挖掘
工具挖掘:awvs,netspaeke,appscan,bp,xsser,xsscrapy,brutexss
xss限制以及绕过

语句的闭合是关键,可能会影响前台,也可能会影响后台
编写xss脚本可以发送和接收cookie
xss平台的搭建:多人/个人
csrf漏洞

课程23:其他漏洞

php漏洞

文件包含漏洞
常见文件包含函数:include(),require(),include_once()和require_once()等
利用条件:1.用文件包含函数通过动态变量的范式引用需要包含的文件;2.用户能够控制该动态变量
漏洞危害:执行任意代码;包含恶意文件控制网站,入侵服务器;
漏洞分类:本地/远程文件包含,要保证php.ini和allow_url_fopen和allow_url_include为on
漏洞挖掘:白盒审计,黑盒挖掘,awvs,w3af
本地包含漏洞的注意事项:相对路径;%00截断;magic_quotes_gps=off才可以
包含日志拿shell:将一句话写入页面,报错后写进系统logs,菜刀连接就行,类似的有图片木马,读文件操作等等
filter协议读取php文件
使用php封装协议
远程包含必须打开allow_url_inculde为on,
php://input等伪协议漏洞:读取php源码
代码执行漏洞
php中可以执行代码的函数:exec(); eval();assert(); system(); 等
变量覆盖漏洞:未初始化且被用户控制

JSP漏洞

ST2漏洞,反序列漏洞,其它漏洞
struct2可以批量搜索,用工具检测
tomcat漏洞
weblogic攻击:7001,7002端口;

越权漏洞:水平越权,纵向越权;
逻辑漏洞
ssrf漏洞:服务器请求伪造

课程24:getshell方法总结

构造一句话木马的时候需要注意语句闭合,否则网站有可能崩溃
常见cms拿shell:良精,科讯,动易,aspcms,dz,米拓,帝国,phpv9等
先备份再修改
不同的脚本权限不一样
如果支持aspx则上传sapx大马,权限高
收集信息:内外网ip,系统补丁,版本号,看进程,看防护

课程25-26:权限提升

winodws:
第三方软件提权:ftp软件,fz,远程管理等
溢出提权:
启动项提权
破解hash提权:加盐加密/解密
数据库提权

linux提权:
内核溢出
mtsql udf提权
利用suid提权
利用环境变量提权