Web 安全概要
- 第三方内容:广告插件·mochup
- web前端框架:jQuery/Bootstrap/HTML5
- Web应用:BBS/CMS/BLOG
- Web开发框架:Django/Rails/ThinkPHP
- Web服务器语言:PHP/JSP/.NET
- Web容器:Apache/IIS/Nginx/Tomcat
- 存储:数据库存储/内存存储/文件存储
- 操作系统:Linux/Windows
什么是注入漏洞
注入漏洞攻击的本质,web应用程序没有对过滤用户输入*,直接把用户输入的恶意数据当代码执行。
两个条件
用户能够控制输入
原本程序要执行的代码,拼接了用户输入的数据
复制代码
注入类型
SQL注入: 攻击者把sql代码命令插入到web表单的输入域或页面请求的查询字符串,欺骗数据库服务器执行恶意的sql命令
命令注入:后端为过滤掉恶意数据,代码当系统命令执行。
代码注入:一般出现在不安全使用某些函数
文件包含
反序列化漏洞
LAAP注入:用于访问网络中目录服务,常用在Active Directory
XML注入:
XXE注入:引用外部实体时,通过构造恶意代码内容,导致读取任意文件执行系统命令,探测内网端口,攻击内网网站等危害。
xpath注入:与sql注入类似,xpath解析本身对url,表单中提交的代码未作严格限制,导致恶意代码可以直接解析
XQuery注入
JSON注入:轻量级的数据交换格式,主要利用特殊字符注入JSON中,造成解析失败。
jsonp注入:回调函数未作严格的检测和过滤
复制代码
SQL注入过程
SQL注入危害
绕过登录验证:使用万能密码登录网站后台
获取敏感数据:获取网站管理员账号 密码等
文件操作系统:列目录,获取,写入文件等
注册表操作: 读写删
执行系统命令:远程执行系统命令
复制代码
SQL 注入分类
数字型注入:输入的参数为整数 如ID age page
字符型注入:输入的参数为字符型?字符型注入一般要使用单引号来闭合
搜索型注入:指对数据进行搜索时没过滤搜索参数
复制代码
SQL注入原因
1.不正确的处理转义字符(宽字节注入)
2.不正确的处理类型(报错泄露信息)
3.不正确的处理联合查询
4.不正确的处理错误信息(报错泄露信息)
5.不正确的处理多次提交(二次注入)
6.后台存在问题:无过滤或者编码用户数据 数据库可以拼接用户传递的恶意代码
7.错误处理不当
8不安全的数据库配置:默认账号 权限
复制代码
SQL注入过程
1.判断是否存在注入点
2.判断字段长度
3.判断字段回显位置
4.判断数据库信息
5.查找数据库名
6.查找数据库表
7.查找数据库中所有字段
8.猜解账号密码
9.登录管理员后台
复制代码
SQL注入可以做什么
1.读取修改数据库中的内容
2.脱库
3读取创建文件
4函数备份写入webshell,读取数据库文件
5绕过密码验证登录后台
6通过存储过程执行系统命令和操作注册表
复制代码
常见url注入点(hack)
NewsInfo.asp?id=
otherinfo.asp?id=
info.asp?id=
news_show.asp?id=
showhf.asp?id=
detailshow.asp?ID=
CompHonorBig.asp?id=
EnCompHonorBig.asp?id=
Google dorks sql injection:
NewsInfo.asp?id=
Show.asp?Id=
intitle:山西学校 inurl:asp?=
inurl: (asp?=10) inurl: (php?=10)
inurl:Article_Print.asp?
inurl:ManageLogin.asp
inurl:Offer.php?idf=
inurl:Opinions.php?id=
inurlage.php?id=
inurlop.php?id=
inurlost.php?id=
inurlrod_info.php?id=
inurlroduct-item.php?id=
inurlroduct.php?id=
inurlroduct_ranges_view.php?ID=
inurlroductdetail.php?id=
inurlroductinfo.php?id=
inurlroduit.php?id=
inurl:Profile_view.php?id=
inurl:Publications.php?id=
inurl:Stray-Questions-View.php?num=
inurl:aboutbook.php?id=
inurl:ages.php?id=
inurl:announce.php?id=
inurl:art.php?idm=
inurl:article.php?ID=
inurl:articleshow.asp?articleid=10
inurl:artikelinfo.php?id=
inurl:asp
inurl:asp?id=
inurl:avd_start.php?avd=
inurl:band_info.php?id=
inurl:buy.php?category=
inurl:category.php?id=
inurl:channel_id=
inurl:chappies.php?id=
inurl:clanek.php4?id=
inurl:clubpage.php?id=
inurl:collectionitem.php?id=
inurl:communique_detail.php?id=
inurl:curriculum.php?id=
inurl:declaration_more.php?decl_id=
inurl:detail.php?ID=
inurl:download.php?id=
inurl:downloads_info.php?id=
inurl:event.php?id=
inurl:faq2.php?id=
inurl:fellows.php?id=
inurl:fiche_spectacle.php?id=
inurl:forum_bds.php?num=
inurl:galeri_info.php?l=
inurl:gallery.php?id=
inurl:game.php?id=
inurl:games.php?id=
inurl:historialeer.php?num=
inurl:hosting_info.php?id=
inurl:humor.php?id=
inurl:index.php?=
inurl:index.php?id=
inurl:index2.php?option=
inurl:iniziativa.php?in=
inurl:item_id=
inurl:kategorie.php4?id=
inurl:labels.php?id=
inurl:loadpsb.php?id=
inurl:look.php?ID=
inurl:main.php?id=
inurl:material.php?id=
inurl:memberInfo.php?id=
inurl:news-full.php?id=
inurl:news.php?id=
inurl:newsDetail.php?id=
inurl:news_Article.asp?Class_ID=
inurl:news_display.php?getid=
inurl:news_view.php?id=
inurl:newscat.php?id=
inurl:newsid=
inurl:newsitem.php?num=
inurl:newsone.php?id=
inurl:newsticker_info.php?idn=
inurl:ray.php?id=
inurl:read.php?id=
inurl:readnews.php?id=
inurl:reagir.php?num=
inurl:releases.php?id=
inurl:review.php?id=
inurl:rub.php?idr=
inurl:rubp.php?idr=
inurl:rubrika.php?idr=
inurl:section.php?id=
inurl:select_biblio.php?id=
inurl:sem.php3?id=
inurl:shop.php?do=part&id=
inurl:shop_category.php?id=
inurl:shopping.php?id=
inurl:show.php?id=
inurl:show_an.php?id=
inurl:showimg.php?id=
inurl:shredder-categories.php?id=
inurl:spr.php?id=
inurl:staff_id=
inurl:story.php?id=
inurl:sw_comment.php?id=
inurl:tekst.php?idt=
inurl:theme.php?id=
inurl:title.php?id=
inurl:top10.php?cat=
inurl:tradeCategory.php?id=
inurl:trainers.php?id=
inurl:transcript.php?id=
inurl:view.php?id=
inurl:view_faq.php?id=
inurl:view_product.php?id=
inurl:viewapp.php?id=
inurl:viewphoto.php?id=
inurl:viewshowdetail.php?id=
inurl:website.php?id=
inurlage.php?file=
inurlageid=
inurlages.php?id=
inurlarticipant.php?id=
inurlerson.php?id=
inurllay_old.php?id=
inurlreview.php?id=
inurlrod_detail.php?id=
inurlroduct-item.php?id=
inurlroductinfo.php?id=
inurl:news_Article.asp?Class_ID=
showproduct.asp?id=
showproduct.asp?id=99
隐秘注入点
1. 伪静态
2. Cookie
3. key值注入
4. Limit OrderBy注入
5. Json格式注入
6. 二次注入
7. 编码加密输入点
8.referer注入
9.UA注入
10.XFF头注入
11.GBK绕过(%df%27)
复制代码
防御sql注入
1.UniOn SLeCT(大小写) /*uniOn*/%09/*sElecT*/(注释符)Unio%n Selec%t
2.addslashes()
addslashes(\$query="SELECT * FROM users WHERE id=\$id AND user='\$username'");
sql语句就是\\"SELECT * FROM users WHERE id='\$id' AND user='\$username'\\"
3.hemlspecialchars() (默认ent_compat) + ent_quotes->
\$quert="select * from users where id='\$id" and user='\$username'";
把 < 和 > 转换为实体常用于防止浏览器将其用作 HTML 元素。
4.参数化查询->PDO模块
5.对于数字型可以用intval()函数转换
6.对于字符型用1-4方法以及mysql_escape_string()函数转义特殊字符,关闭magic_quoes_gpc配置
复制代码
sql手工注入命令
1.order by N 超出字段数会报错
2.union select 1,2,3......联合查询 用来判断显位以及猜解列数(结合系统函数来爆数据库信息)
(1) unio select schema_name from information_schema.schemata limit 1,2查看所有数据库
(2) information_schema.tables查看表名
(3) load_file(file_name):读取文件并将文件内容按照字符串格式返回
前提条件:
1.文件位置必须在服务器上,拥有文件路径以及file特权
2.文件必须可读取,文件容量必须小于max_allowed_paket字节
3.文件必须存在
3.exists(select...) 函数来猜解表名
4.OR 1=1 OR 1=2 AND 1=1 AND 1=2
复制代码
SQL注入漏洞方式
1.识别数据库
2盲跟踪 (不同数据库sql语句的差异如@@version 和version() web应用技术)
3非忙跟踪(报错 直接查询)
SQL盲注分类
布尔盲注:布尔值为真时页面返回正常,布尔值为假页面不返回数据
时间盲注:延时为0页面返回正常,大于设定时间页面返回(sleep/benchmark()函数)
报错盲注:利用页面报错信息(floor EXtractvalue Updatexml EXP )
复制代码