[网站安全] [实战分享]WEB漏洞挖掘的一些经验分享
WEB漏洞有很多种,比如SQL注入,比如XSS,比如文件包含,比如越权访问查看,比如目录遍历等等等等,漏洞带来的危害有很多,信息泄露,文件上传到GETSHELL,一直到内网渗透,这里我想分享的最主要的是SQL注入,因为尽管过去了很多年,SQL注入依然是现在最大的一个问题,我们打开wooyun,看看已经注册的乌云厂商,其中能看到厂商漏洞分布的一个饼状图,其中占领面积最大的就是SQL注入,那么SQL注入带来的危害有很多了,比如最后的GETSHELL,比如百万级用户信息泄露的基础都是SQL注入,我接触WEB漏洞挖掘的时间也不长,大概从今年5月份开始研究,所以只是分享这半年时间的一些经验,谈不上教学。

那些年我用到的一些好用的工具
sqlmap,第一个要说的就是神器sqlmap,之所以好用,第一点就是它是开源的,能自己添加payload修改payload,当然,得有一定的python基础,这里我顺道要强烈推荐一下《python黑帽子》这本书,非常适合刚刚接触python的朋友们,而且sqlmap非常智能,测试种类特别多,具体的使用方法我就不说了,网上一搜一大堆。
AWVS,其实现在扫描目录的工具有很多,nikto也很不错只不过是linux下的,kali中使用nikto也不错,AWVS是一个扫描目录的工具,其实我现在用到它也不是很多,太消耗内存了,不过对于我们更直观的查看目标网站结构有很大的帮助,它也能识别出很多XSS和SQL注入,当然不能全部识别,真正还是得靠自己。
FireFox,一般我做web漏洞的时候要用到firefox浏览器,不得不说,火狐浏览器是专门为白帽子准备的,它的插件实在太强大了!这里我用的比较多的两个插件一个是hackbar,一个是live http headers,hackbar的好处在于可以通过URL构造GET包和POST包,而且能做一些base64的加解密,通过这种方法可以很好的手工测试注入点是否存在,再根据具体情况放到sqlmap里或者自己的payload里跑数据了,live http headers有点像fiddle,它会对于浏览器发出的数据包进行截获,这样很容易帮助我们查看访问一个页面时发出的请求包,也是有助于我们寻找注入点的。
burpsuite,神器中的神器,我们可以通过设置代理,用burpsuite截获数据包,通过修改数据包的内容实现类似于中间人攻击的方法,很多密码重置漏洞,撞库,甚至getshell都是用它完成的,这里我多撤一点,比如密码重置漏洞,是利用burpsuite把用户名A修改成用户名B,从而达到本来是想重置用户名A的密码,而改成了重置用户名B的密码,这样就能登录用户名B了,比如撞库,现在很多的撞库事件或者某某系统或后台弱口令都可用burpsuite做到,只要你握有一定量的用户名密码字典。
那些年我愁于寻找的注入点
无论对谁来说,注入点是最难寻找的,很多人都说到google hack或者别的什么,很多入门级的教程都说直接baidu inurl:asp?id=,其实这只是注入的一种形式,常规的注入就是GET注入和POST注入,当然,还有很多猥琐的Cookie注入,referer注入,总之就是HTTP HEADER注入,这些都是SQL注入的基础,仍然是网上一搜一大堆,这里不做赘述,我来讲一下我是如何寻找注入点的,首先每个人目标的选定都不太同,比如有的人可能是因为这个银行员工的服务态度不好,我就想搞它们,比如有的人想单纯的搞破坏,比如我是根据补天的活动或者注册厂商来弄,这样能得到更多的奖励等等,首先我们选定了一个目标网站后要对这个网站整体结构有一定的认识,比如访问一些链接观察URL,现在越来越多的网站使用的是静态页面,形如 www.xxoo.com/item/131.html的格式,而有些还是动态URL请求,比如www.xxoo.com/item.asp?id=2,那么我们就可以从GET请求开始做测试了。
不放过任何一个细节
其实现在网站的防护越来越好,而且就算是动态请求的页面,也有可能因为一些php防护,比如replace或者intval之类的方法导致无法注入,但这不是关键,百密总有一疏,如果你能去sebug看那里的通用型漏洞的分析的话,你就能看到一个asp或者php页面里总有参数没有得到过滤,或者如果你去wooyun看那些安全狗的bypass的话,总有一些方法能绕过,这里要说的就是不放过任何一个细节,一个页面请求里,会有不止一个数据包,当前URL的GET包或许不存在SQL注入,但其中的一些GET请求,就很有可能存在SQL注入,这需要我们使用Live http header来获取一个页面请求的所有数据包,再一个一个试。
不仅如此,一个静态页面也有可能存在sql注入,一般我们管这个叫伪静态页面,也就是形如www.xxoo.com/item/133,这样的URL看上去是一个静态页面,但实际上它仍然是一个动态请求的过程,会利用item=133这个方法去动态请求页面中的内容。
还有就是POST数据,这里要专门提到经常出现漏洞的位置,首当其中的就是登陆框,其次还有搜索框,还有各种订阅,查询的信息,跟查询相关的登陆框都可以做SQL注入的尝试。
关于数据返回,绝大多数人看到输入单引号报错的时候都很兴奋,但有些人看到单引号后页面没有报错信息就放过了,其实不要放弃,盲注就是为没有回显的注入存在的,所以说任何一个细节都不要放过,比如在http header中的各种参数,去测试,总会有惊喜。
那些年我专注的Bypass
当你找到一个注入点,就要面临bypass了,有些网站利用建站程序搭建,或者部署了360或者安全狗,一般测试的人看到被拦截就放弃了,其实如果网站管理者没有及时更新防护程序的话,是可以使用各种方法绕过的,绕过方法最好自己测,这也是不推荐直接用工具的原因,我们要了解为什么会被拦截,是单引号引起的?逗号引起的?还是union,select等等引起的?然后根据具体的情况,这里最好巧用到以前的案例,根据案例中的漏洞注入方法,来构造自己的bypass。
最后要说web漏洞挖掘要有信息,越大的网站漏洞价值越大,难度也越大,所需的时间也越大,还有就是多看别人的漏洞,wooyun是个绝佳的平台,很多公开漏洞的细节都值得每个人学习,经常会有各种猥琐的方法,绝对安全的网站是不存在的,哪怕是BAT3,都一定有漏洞存在。
祝大家挖洞愉快,欢迎交流!
原文链接:http://bbs.ichunqiu.com/thread-1713-1-1.html
[网站安全] [实战分享]WEB漏洞挖掘的一些经验分享的更多相关文章
- ref:【干货分享】PHP漏洞挖掘——进阶篇
ref:http://blog.nsfocus.net/php-vulnerability-mining/ [干货分享]PHP漏洞挖掘——进阶篇 王陶然 从常见的PHP风险点告诉你如何进行PH ...
- WEB漏洞挖掘技术总结
漏洞挖掘技术一直是网络攻击者最感兴趣的问题,漏洞挖掘的范围也在随着技术的提升而有所变化.在前期针对缓冲区溢出.格式化字符串.堆溢出.lib库溢出等技术都是针对ELF文件(Linux可执行文件)或者PE ...
- Web漏洞挖掘之网络信息探测
我们在搜集目标系统信息的时候主要需要搜集的是:目标服务器系统信息(IP,服务器所用系统等):目标网站子域名:目标网站(服务器)的开放端口:目标域名信息.目标网站内容管理系统(CMS)等. 一.子域名搜 ...
- php漏洞挖掘书籍
PHP是一种被广泛使用的脚本语言,尤其适合web开发.具有跨平台,容易学习,功能强大等特点,据统计全世界超过34%的网站有php的应用,包括Yahoo.sina.163.sohu等大型门户网站.而且很 ...
- 黑客攻防技术宝典Web实战篇(二)工具篇DVWA Web漏洞学习
DVWA是一个学习Web漏洞的很好的工具. DVWA全程是Damn Vulnerable Web Application,还有一个跟它一样好的工具尽在http://www.360doc.com/con ...
- Java爬虫_资源网站爬取实战
对 http://bestcbooks.com/ 这个网站的书籍进行爬取 (爬取资源分享在结尾) 下面是通过一个URL获得其对应网页源码的方法 传入一个 url 返回其源码 (获得源码后,对源码进 ...
- 网站性能优化实战——从12.67s到1.06s的故事
文章摘自https://juejin.im/post/5b0b7d74518825158e173a0c 作为互联网项目,最重要的便是用户体验.在举国“互联网+”的热潮中,用户至上也已经被大多数企业所接 ...
- WEB安全漏洞挖掘向入坑指北
这个指北不会给出太多的网站和方向建议,因为博主相信读者能够从一个点从而了解全局,初期的时候就丢一大堆安全网址导航只会浇灭人的热情,而且我也不适合传道授业解惑hhh 安全论坛: 先知社区 freebuf ...
- [saiku] 源码整合[maven整合]
saiku源码的整合分为[普通web项目整合]和[maven整合]两种 本节主要是讲解如何整合为maven项目 转载自:http://blog.csdn.net/gsying1474/article/ ...
随机推荐
- docker+mesos+marathon
前言 (Core) [root@docker-slave ~]# uname -r 3.10.0-229.4.2.el7.x86_64 [root@docker-slave ~]# uname -m ...
- idea导出包含main函数的jar
1.首先打开File->project stucture->Artifacts 2.按照下图方式: 3.选择面main函数的所在的类,选择MAINFEST.MF问的生成路径 这里一定选择 ...
- Spring异步事件
1.发布事件 @Data public class CustomEvent extends ApplicationEvent implements Serializable { private Boo ...
- EM算法【转】
混合高斯模型和EM算法 这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与K-means一样,给定的训练样本是, ...
- BZOJ2595 [Wc2008]游览计划 【状压dp + 最短路】
题目链接 BZOJ2595 题解 著名的斯坦纳树问题 设\(f[i][j][s]\)表示点\((i,j)\)与景点联通状况为\(s\)的最小志愿者数 设\(val[i][j]\)为\((i,j)\)需 ...
- 【51Nod1386】双马尾机器人Description 解题报告
[51Nod1386]双马尾机器人Description 给定\(n\)和\(k\),我们要在\(1,2,3,...,n\)中选择若干的数,每一种选择的方案被称为选数方案. 我们定义一种选数方 ...
- 洛谷 P1514 引水入城 解题报告
P1514 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 NN 行 \times M×M 列的矩形,如上图所示,其中每个格 ...
- Python多线程、进程、协程
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...
- 复习JavaScript随手记
数据类型 基本类型 string number boolean undefined number类型,包含整数浮点数 NaN和自己都不相等,涉及NaN的计算结果都是NaN isNaN()函数用于判断一 ...
- Codeforces 932.F Escape Through Leaf
F. Escape Through Leaf time limit per test 3 seconds memory limit per test 256 megabytes input stand ...