大家好,这里是黑帽编程与攻防技术系列的第四篇博客,如果有侵权,请联系删除,文章不支持转载。
黑帽编程和攻防技术,主要是提升网安小白的攻防技术。包括但不限于邮箱入口攻击和防御,Windows系统漏洞攻防,引用程序攻防,Web网络攻防,漏洞挖掘。
文章主要讲解攻击技术,是因为最好的防守即时攻击,但是不得用于非法目的。造成的一切损失,本人一概不负责。
本章我们学习通过网络安全漏洞的原理和应用场景来初步判断网站的安全。
话不多说,我们开始吧。
最好是自己搭建,否则渗透别人的网站是违法的。当然如果你不攻击也没关系,这里我都是用自己搭建的网站和服务器,有的是码代码的,也有的是凡科建站的。
这么来说吧,这个网站只要使用了数据库,一般都有被SQL注入的风险。这要看网站是怎么防护的。
SQL注入漏洞原理就是通过输入框输入的内容和SQL语句来拼接而成。
...
$input = $_GET['input'];
$get = "SELECT username From users WHERE username = '$input'";
...
这个就是典型的PHP注入漏洞代码。
SQL注入漏洞一直是网络安全漏洞中的头等大敌,每个企业都在尽力避免。SQL注入漏洞最高的危险就是数据库内容被获取,个人隐私泄露。试想一下,如果一个上万人注册的网站被SQL注入,那么,这个网站不得赔死。
一般只要有输入框和SQL语句是拼接的,都是SQL注入可以尝试的注入点。那么一般的网站,都是非常大而且杂的,所以我们要尝试在一个复杂的网站上试图寻找注入点。
去百度上寻找一个网站去练手吧!但是千万不要去攻击。
其实,一个网站必须使用数据库,只要使用了数据库,就都有被攻击的风险。具体的防护方法有很多,其中最为常见的就是过滤。
过滤就是将用户输入的危险字符通过某种转义方式改为不危险字符。其中危险字符就包括:
select, delete, insert, update, or, where......
等等,但是之过滤这些字符还不够,攻击者可以通过大小写混写来绕过防护,所以,我们需要通过正则表达式来防护。
设置黑白名单也是有效的防护方法。通过检测用户的异常行为,并拒绝该IP地址向网站服务器发送请求。
例如一个网站,用户192.168.255.255向网站服务器发送请求,然后网站正常响应。但是用户192.168.255.255在输入框中连续输入危险字符超过一定次数,那么下次192.168.255.255再向网站发送请求的时候,黑名单已经记录了下来,然后请求被拒绝。
函数大体如下:
def defence():
global i
#过滤函数
i = 0#计数器
......
i += 1;
if i > 5:
#封禁操作
目前作者知道的主要是SQLmap以及啊D工具。这两个工具可以实现SQL注入。
曾经一度被OWASP列为最危险漏洞。XSS,跨站脚本攻击,本质上也是一种注入攻击。最容易受到XSS漏洞影响的大多数是一些实时通讯功能,例如留言板,在线聊天室。
为什么XSS漏洞如此受重视?因为它的危害程度不亚于SQL注入攻击。如果一个网站存在XSS漏洞,那么攻击者可以执行任意的Js代码。
$input = $_GET['input'];
echo "$input";
最常见的测试指令,就是。我们现在来看一下攻击案例。通过这个攻击案例来看一下XSS。
自己花了一点时间搭建了一个模拟某科技公司的官网。其中黑客容易攻击的地方主要有两处。分别是:
1.在线留言板:
这个点非常可能被攻击,重点考虑。
2.全站搜索
除了刚刚的留言板,这个是唯一的交互式输入框。虽说不打算考虑,但是我开发时没有任何过滤,所以也有注入风险。
留言板功能,我为了模拟真正的攻击,请了一个朋友帮我做了一个过滤,然后让我攻击。简单的尝试了一下。简单的尖括号,script,iframe,click等都过滤了,但是,好像唯独没有过滤img字符,这位老兄HTML没学好啊!尝试攻击,果然成功。
我问了一下他,还看了一下过滤代码,发现他是用的正则表达式,如果不用,那么以下的语句都是可以用的:
<scri<script>pt>alert(1)</script>
<scrIpt>alert(1)</script>
<script>alert(1)</SCript>
......
还有就是递归。当然,这里黑白名单也是可以用的。
其实,XSS漏洞的危害,取决于黑客的Js代码,如果一个不会编程的黑客,就算发现了XSS漏洞,那么最多弹框。
这就很难绕过了。
不过XSS Aditor是有办法绕过的,本人现在还在学习。
我目前并没有发现什么有用的黑客工具可以用来XSS,所以手工注入的能力很重要。
相信大家应该都知道枚举(又称穷举),那就是通过一个个试,最终得到结果,机器最适合干这个事了,所以,暴力破解漏洞由此诞生。
通过Python可以实现暴力破解,主要使用的是request模块,这个模块可以处理网站,当然也可以用来爬虫。
一般来说,暴力破解漏洞存在于登入界面或者密码界面,最简单的例子就是管理员后台,有登入密码,以及常见的如“您的文件已加密,请输入密码”或者“请输入密码查看”等,人们总是认为这种方式能够防止数据被偷窃,但是,有暴力破解。
几乎所有网站都是用上图的登入方式。
什么是弱密码呢?123456,888888,qwerty等都是弱密码,这些弱密码大多数都在黑客的密码字典中,所以,弱密码是最容易破解的。一般黑客的弱密码字典大多数在10-20MB,估算一下,大概有几百万个密码。
弱密码非常危险,所以,现在密码一定不要设置成弱密码。
行为验证码需要用户通过验证码,例如滑动图标,辨别图片等内容。有些大型的社交平台,如微博,有时候甚至需要两次行为验证。这对黑客暴力破解加大了难度。不过验证码也不一定安全,这就要看开发者怎么去开发了,有没有验证码失效制度。
我在互联网上找到了一个网站,所有的登入注册都需要验证。
注册(双重认证:行为认证和短信验证码):
账密登入:
短信登入(又是双重认证);
所谓的token,其实就是一个验证码,只不过验证码用户看不到,而是通过两端的token验证码进行比对,确认无误才能通过。
token放爆破机制其实也有绕过方式,同样是开发者的失效机制有没有开发好。
暴力破解就很多了。你们大可自己开发或寻找。
文件上传是现在很多网站都具备的功能,例如说头像上传,资料上传等。那么,如果一个网站具有上传文件的功能,攻击者是不是就可以上传木马呢?
事实证明,如果网站对文件上传的后缀名,内容没有做任何审核,那么木马是可以上传成功的。
最简单的木马,就是只通过一句PHP代码来实现,简称PHP一句话木马。
eval(@$_POST['a']); ?>
最后通过中国菜刀拿到整个网站的框架。
开发者通过对文件上传内容进行文件后缀名检测。比如作者之前有做过一个文件上传漏洞检测,就可以通过对特定的后缀名进行勘察。
例如一个功能,是上传头像,那么用户肯定不会上传一个php文件上去,所以,我们就可以规定这类文件可以上传:
.jpg .png .gif .bmp
但是,这太天真了。对于黑客来说,改个后缀名岂不是简简单单?
于是,新的防护产品诞生了!
安全狗可以通过相关技术,挖掘文件内容,准确识别PHP一句话木马,网络木马等。但是,PHP有办法绕过一句话。
这个漏洞的条件比较苛刻,CSRF其实是通过一个恶意链接,有待用户点击,然后修改用户内容。
CSRF通常出现在忘记密码。攻击者构造好链接之后,就可以修改相关信息。这里不多做介绍。
其实还有如SSRF,文件包含,条件竞争等漏洞,那么这里我们只是介绍常见的,如果你有兴趣可以自行了解。