原来是想着每个点都自己写的,后来觉得重复造轮子花费这么多时间似乎没什么必要,网上文章已经这么多,而且大家都写的这么好了,自己也没什么新增有用有创意的点。逐,汇总此文。
做Web渗透测试也算是有接近两年的实战经验了,认为常规渗透就分三个步骤:
1、信息收集;2、漏洞测试;3、漏洞利用;其中,漏洞测试和漏洞利用就是把自己所有会的姿势全部试一遍,需要平时积累的基本功,测试和利用的时候一把梭就完了。
一个比较简陋的脑图:
信息收集:
先说信息收集,如果说可以拿下站点是一个概率问题的话,那么信息收集的越全面,则攻击面越广,概率就越大。
信息收集有时候需要某个敏感信息灵机一动,但大多数时候需要完整的流程,收集完整的信息。
1、普通搜索引擎
普通的搜索引擎配合google hack的语法,可以较为精确的搜集到我们想要的信息,
比如搜一个站的后台:"insite:xxx.com inurl:admin"
详细的语法戳右边链接:https://blog.csdn.net/u012991692/article/details/82937100
2、空间搜索引擎
空间搜索引擎与普通搜索引擎不同,普通搜索引擎爬取网站页面信息,空间搜索引擎会爬取端口的banner等信息
常用的空间搜索引擎有shodan、fofa、ZoomEye和BinaryEdge等。
常用语法戳右边链接:https://www.cnblogs.com/miaodaren/p/7904484.html
大型项目实用技巧移步:https://www.jianshu.com/p/ee22367303d5
3、子域名收集
直接搜索:site:xxx.com
站长之家查询子域名:http://tool.chinaz.com/subdomain/
在线资产搜集,子域名&C段:http://www.yunsee.cn/info.html
通过爆破的方式搜集子域名:layer子域名挖掘机
更全一些的子域名收集参考链接:https://blog.csdn.net/qq_41880069/article/details/83037081
4、端口服务探测
比较常用端口服务方式有nmap
nmap常用参数戳右边链接:https://blog.csdn.net/zz_Caleb/article/details/95335060
nmap所有参数戳右边链接:https://blog.csdn.net/qq_26090065/article/details/80285088
还有偷懒的方式,浏览器装一个shodan的插件,访问每个网站都能看到常用端口是否开放的信息:
直接点击view host details可以看到端口对应的信息,也可以直接查看shodan检测出的漏洞等信息:
chrome下载地址:https://chrome.google.com/webstore/detail/shodan/jjalcfnidlmpjhdfepjhjbhnhkbgleap
火狐下载地址:https://addons.mozilla.org/en-US/firefox/addon/shodan_io/
其他:
其他信息收集还有网站指纹识别,比较推荐使用云悉,如果在内网用不了云悉的话可以使用whatweb,kali内置whatweb。
同IP多个域名等,也可以在云悉查看。
以及web目录爆破等,可以用dirbuster或御剑等工具。
漏洞测试:
漏洞测试主要还是web漏洞,因为非web的大部分都是通用漏洞,一般都被人抓肉鸡抓了,然后打上补丁了。
web漏洞主要还是sql注入,xss,文件上传,代码&命令执行以及弱口令等 。
sql注入:
关于sql注入的原理就不多说了,sql注入测试主要是为了检测能否改变原有的sql语法结构,可以的话才考虑进行下一步。
若可以改变原有的语法结构,就可以尝试判断注入是否存在限制,如waf什么的。可以fuzzing注入所需的关键字,然后替换被限制的关键字进行绕过。
这里附一个mysql常用的fuzzing表(其他数据库的晚点整理后补上):
select、union、concat、or、and、limit、&&、||、group by、order by
into outfile、into、into dumpfile、having、where、insert、update、delete、updatexml
if、rand、from、information_schema、mid、ord、ExtractValue、/*、大小写
除了对关键字fuzzing进行过滤外,还有一些其他方法。比如参数污染,由于检测的参数跟传入的参数不一致,导致绕过。
以及一些waf需要考虑性能的,可能就会对静态文件进行放行,就可能存在这样的绕过方式:
xxx.com/xxx.php?id=1 and 1=1?xxx.js,这样就可能会被误以为是js文件,从白名单绕过。
或者在请求包中加一堆垃圾数据,使得waf难以检测,直接放行等。参考:
https://mp.weixin.qq.com/s?__biz=MzI5MDU1NDk2MA==&mid=2247488830&idx=1&sn=762f90f6ce3b98c76e74f194c2c0fc14&chksm=ec1f4001db68c917007d6b8f66737e91b3238afba7df379269b587e3cdc691e2c9257e3c4b16&mpshare=1&scene=1&srcid=&sharer_sharetime=1583659486027&sharer_shareid=9bb36e6ef190787654eb1204658c7215#rd
Xss:
sql注入执行sql语句,xss执行js。和注入一样,也是需要改变原有的结构,达到执行js的效果。
fuzzing可以看这里:https://github.com/payloadbox/xss-payload-list
文件上传:
网站常常有文件上传的功能,若对上传的文件类型不做限制或限制存在缺陷,则可以上传一个可执行文件,如php和jsp,从而在网站上解析执行。
最常见的绕过是开发人员直接将文件后缀的放在前端,使用burp抓包修改文件后缀就可以绕过。
以及判断存在缺陷的,以php为例,常见上传后缀有:“.php”、".Php"、".php."、".php "(左边的这个php后面是有空格的,windows下的会直接把文件名最后的空格和.去掉)。
还有根据文件类型进行判断的,上传时抓包修改content-type类型,上传时修改这个属性,是不会改变文件作用的,所以可以以此进行绕过。常见类型有:text/plain、 text/html、image/jpeg、application/octet-stream
详细的content-type类型戳这里:
文件上传fuzzing字典戳这里:https://github.com/mai-lang-chai/FUZZ-dic/tree/master/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/upload-fuzz-dic-builder-master/dic
应该和文件上传一块讲的还有一个解析漏洞:https://tool.oschina.net/commons/
解析漏洞详情:https://blog.csdn.net/weixin_30952535/article/details/99423388
这个图比较旧,少了个CVE-2017-15715:https://blog.csdn.net/nzjdsds/article/details/82049718
目前比较有利用价值的是nginx的fig_pathinfo的解析漏洞,phpstudy下用nginx启动默认还存在该漏洞。
代码&命令执行:
黑盒测试中存在或者发现rce的概率并不高,这类漏洞一般通过白盒测试发现
常见通用漏洞可以戳这里:https://github.com/Mr-xn/Penetration_Testing_POC
弱口令:
弱口令比较常见的账号是admin,密码为:admin、123456、12345678、admin888
一个比较全的弱口令集合:https://download.csdn.net/download/tsyang36/10752470
其他:
其他漏洞还有csrf:https://baike.baidu.com/item/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0/13777878?fromtitle=CSRF&fromid=2735433&fr=aladdin
ssrf:https://xz.aliyun.com/t/2115
xxe:https://www.jianshu.com/p/ec2888780308
以及逻辑漏洞、短信轰炸等。。
漏洞利用:
在我看来,漏洞测试跟漏洞利用还是有些区别的,因为常常会有存在漏洞,但却无法利用的场景。这样漏洞就显得很鸡肋。比如、sql注入使用单引号响应500,而且把sql语句的错误都爆出来了。但是利用的时候发现做了限制,select等关键字被过滤了,这样只能做到查出数据库名称,却不能查询数据库的其他内容。
sql注入:
sql注入入门神帖,手工注入:https://www.freebuf.com/articles/web/120747.html
手工盲注:https://www.freebuf.com/articles/web/120985.html
注入神器sqlmap简易教程:http://blog.csdn.net/zhaozhanyong/article/details/41011193
sqlmap各参数详解:http://blog.csdn.net/u012763794/article/details/52638931
sqlmap虽然是目前的注入神器,不过曾经有一次sqlmap测出存在access数据库注入,却难以利用的情况。因为access用的少,自己当时也懒得去琢磨access的sql语句,后来用老牌的注入工具穿山甲跑出来就跑出来了。
老牌注入工具:穿山甲,阿D,明小子。可以稍微记一下,指不定哪天确实需要
普通注入和盲注区别在于注入后的回显,但人类是很机智的,即便不能回显,通过数据库可发送请求的功能,一样可以把注入的信息发送出来。dnslog技巧看这个贴子:https://bbs.ichunqiu.com/thread-22002-1-1.html
Xss:
大部分人知道xss测试的时候弹框框,由于非存储型的xss需要交互,而且利用危害低,所以利用这个漏洞的人比较少。
xss漏洞在web中非常常见,所以防范措施也非常多。比如有些浏览器会不执行在url中出现的js代码。刚弄清楚原理的同学还需要了解一下和xss相关的httponly响应头,以及csp策略。
这里推荐一款xss利用平台:http://xsspt.com
除去打cookie以外,还内置了其他功能。
百度搜到了这个平台的源代码,应该是一样的,感兴趣的朋友可以自己搭一下:https://download.csdn.net/download/wang3890161/10406644
另外,关于xss的利用,还有另一个工具--beef。kali下内置,beef系列帖子感兴趣可以看一下:
浏览器攻击框架BeEF Part 1:https://www.freebuf.com/articles/web/175755.html
webshell管理工具:
目前主流的webshell管理工具就三款,中国菜刀、冰蝎、蚁剑。
其中中国菜刀是老牌的webshell管理工具,随着攻防技术的不断发展,使用量正在逐渐减少。
百度一下中国菜刀有很多假冒的官网,不建议下载使用。
冰蝎应该是目前使用最多的webshell工具了,自带二进制加密,可以直接反弹metasploit的shell。不过由于冰蝎应用太广泛,所以现在很多安全厂商的安全设备都能对其进行检测。
冰蝎官方下载地址:https://github.com/rebeyond/Behinder
蚁剑目前应用也非常广泛,自行开发编码器对通信进行加密和新增插件,可扩展性强。
蚁剑官方下载地址:https://github.com/AntSwordProject/antSword
蚁剑下载完了不能直接打开就用,注意下安装文档的加载器。
大马用的不多,spy系列应该比较常见一些:
这里很多webshell木马,自行探索:https://github.com/tennc/webshell