Your SlideShare is downloading. ×
  • Like
程序员常见的Web安全漏洞
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

程序员常见的Web安全漏洞

  • 3,320 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • ss
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
3,320
On SlideShare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
99
Comments
1
Likes
10

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 程序员常见的WEB安全漏洞
    点苍@淘宝-新业务
    2010-08-30
  • 2. 0.大纲
  • 3. 1.引子
    不安全的淘宝,一直被紧盯,经常被攻击
    • 影响力 – 宕机、篡改页面
    • 4. 交易– 盗取银行账号、钓鱼攻击
    • 5. 用户 – 登录密码以及cookie/refer/ip隐私
  • 2.SQL注入 – 简介
    定义:攻击者提交恶意SQL并得到执行
    本质:由于输入检验不充分,导致非法数据被当做SQL来执行
    特点:
    很常见,使用数据库的应用多如牛毛
    多见于小PHP站,采用字符串拼SQL的应用
    直接攻击服务器
    SQL注入攻击也俗称黑客的填空游戏
  • 6. 2.SQL注入 – 危害
    字符串填空
    绕过登录鉴权 select * from user where name=‘’ or ‘1’=‘1’ and pw=‘’ or ‘1’=‘1’
    执行任意SQL,利用注释,select * from item whre item=‘’;your sql--’或整型字段,select * from item where item_id=0;your sql;
    篡改系统账号 alter login sa with password=‘123456’
    用户隐私外泄 select * from user
    系统细节外泄 select * from sys.tables
    控制操作系统 xp_cmdshell “net stop iisadmin”
    损害硬盘宕机 xp_cmdshell “FORMAT C:”
    埋入XSS漏洞insert into comment(cnt) values(‘<script>…</script>’)
  • 7. 2.SQL注入 – 防范
    避免字符串拼SQL,完全使用参数化查询
    将单引号字符取代为连续2个单引号字符
    利用框架的防SQL注入功能
  • 8. 2.SQL注入 – iBatis 1
    尽量使用#,避免使用$
    根据彩种ID和彩期名得到一个彩期,inttype=123; String title=“123”。
    结果:
    select * from itemwhere type=123 and title=‘123’
    $不过滤直接文本替换:
    select * from item where type=$type$ and title=‘$title$’
    #根据变量类型来替换:
    select * from item where type=#type# and title=#title#
  • 9. 2.SQL注入 – iBatis 2
    尽量使用#,避免使用$
    若不能避免$,则带上元数据标识
    SQL中需要用户提交的ASC、DESC等SQL关键字
    select * from user order by gmt_create  $ordertype:SQLKEYWORD$
    SQL中需要用户提交的字段名、表名等元数据
    select * from user order by $orderByColumn:METADATA$
  • 10. 2.SQL注入 – iBatis 3
    尽量使用#,避免使用$
    若不能避免$,则带上元数据标识
    用迭代替换IN关键字中的$
    int orderStatus = {0,1,2,3}                  
    List orders = sqlMap.queryForList(“OrderDAO.findLlOrder", orderStatus);    
    <select id=“findOrder” parameterClass=“java.lang.Array” resultClass=“java.lang.Object”> select * from order where order_status in       
        <iterate open=“(“ close=“)” conjunction=“,”>      
            #orderStatus[]#      
        </iterate>      
    </select>   
  • 11. 3.XSS – 简介
    Cross-Site Scripting,跨站脚本攻击
    定义:攻击者在页面里插入恶意脚本,当用户浏览该页时,嵌入其中的恶意代码被执行,从而达到攻击者的特殊目的
    实质:用户提交的HTML代码未经过滤和转义直接回显
    特点:
    攻击授信和未授信用户,不直接攻击服务器
    很常见,例如贴图、 AJAX回调、富文本(如评论留言)
    恶意脚本可能位于跨站服务器,但必须用户浏览器执行,最暴力的防范就是禁用JS脚本
  • 12. 3.XSS – 实例
    彩票业务AJAX回调导致的XSS漏洞http://caipiao.taobao.com/lottery/order/getDcSpInfoAjax.htm?callback=%3Cscript%3Ealert%28%27xss%27%29%3C/script%3E
  • 13. 3.XSS – 危害
    挂蠕虫、木马、病毒
    盗取用户的cookie/referer/ip等信息
    制作钓鱼网站
    用户被提交恶意数据、被执行恶意操作
    帮助CSRF,绕过CSRF的token验证
  • 14. 3.XSS – 代码分析
    <span>$!productName</span>
    <input type="hidden" Name="OrinSearchText" value="$!searchBarView.LastKeyword" id="OrinSearchText_rfs" $disabledFlag />
    <script>varfromgcn = '$!rundata.Parameters.getString('fromgcn')';</script>
    <span><iframesrc=http://hacker.com></iframe></span>
    <input type="hidden" Name="OrinSearchText" value="" ><iframesrc=http://hacker.com></iframe>< "" id="OrinSearchText_rfs" $disabledFlag />
    <script>varfromgcn = '';hackerFunction(document.cookie);''; </script>
  • 15. 3.XSS – 防范
    输入过滤,RichTextXssFilter.filter(input)
    输出转义,HTML ESCAPE
  • 16. 4.CSRF – 简介
    Cross Site Request Forgery,即跨站请求伪造,有时也缩写为XSRF
    定义: 在恶意站点上,促使用户请求有CSRF漏洞的应用的 URL或欺骗性的表单,从而修改用户数据
    实质:利用session机制,盗用授信用户对应用做一些恶意的GET/POST提交
    特点:
    不同于XSS,恶意脚本一定位于跨站服务器
    攻击授信用户,不直接攻击服务器
    近年增多,授信用户的贴图、表单提交、页面交互、AJAX调用都可能导致该漏洞
  • 17. 4.CSRF – 实例
    黑客在服务器端编写恶意脚本,并构造授信操作的URL,例如评论
    恶意用户回复帖子时候贴图,图片地址指向黑客事先编写的恶意脚本
    当用户浏览这些帖子时,就会请求该图片,不知觉访问了恶意脚本
    恶意脚本利用302重定向,根据帖子不同跳转到对应的评论URL
    用户在不知情情况下发表了评论,帮恶意用户顶贴
    所以,论坛一般会让用户在评论时输入验证码,来防止类似攻击
  • 18. 4.CSRF – 危害
    获得管理员权限
    盗取用户银行卡、信用卡信息
    授信用户被提交恶意数据、被执行恶意操作
  • 19. 4.CSRF – 防范
    服务器区分GET/POST,增加攻击难度
    REFERER校验,补充手段
    改长授信为短授信
    时间戳
    关键流程使用验证码
    Token验证
    严防XSS,否则短授信可能被伪造
  • 20. 5.其它漏洞
    命令行注入
    文件上传漏洞
    缓冲区溢出
    DDoS
    访问控制漏洞
    Logic Flaw,逻辑漏洞
    无限制URL跳转漏洞
    表单重复提交
    Struts/Webwork远程命令执行漏洞
  • 21. 6.安全开发流程
    提高安全开发意识
    遵守安全编码规范
    引入WEB安全测试
    逆向思维,从黑客角度发现潜在的漏洞
    网络安全 ≠ WEB安全 ≠ XSS ≠ alert
  • 22. 7.黑客攻击思路
    找漏洞
    分析产品或开源代码
    浏览器、操作系统的0day漏洞
    编写恶意脚本
    蛊惑用户访问恶意链接,执行恶意脚本完成攻击
    得到用户隐私
    拿管理员权限
    钓鱼网站
    挂木马
  • 23. 9.安全开发Checklist
  • 24. 10.参考文献
    SQL INJECTION SQL注入
    iBATIS使用$和#的一些理解
    XSS Wikipedia
    不能忽视的XSS漏洞
    CSRF Wikipedia
    Google GMail E-mail Hijack Technique
    Struts2/XWork < 2.2.0远程执行任意代码漏洞分析及修补
    Struts2和Webwork远程命令执行漏洞分析